Features
What the software actually does
No modules that exist only on this page. Everything below is in the product today, described the way it behaves.
Attribution
Every lead traced to the level you spend at
Spend decisions are made on keywords and ads. A report that stops at the channel cannot change one.
Click identifiers, captured first party
A tracking snippet on your site records gclid, gbraid, wbraid and fbclid alongside the full UTM set, and holds them until the person actually submits something. The join survives a visit on Monday and a form on Thursday.
Every touch stored, not just the winning one
Touchpoints are append only, with first and last touch derived from them. Changing how you want to credit a lead later is a different read of the same rows.
Channels classified, including your own traffic
Your own hostnames are registered so a visit that bounced through your site does not get filed as a referral from yourself.
Leads reconciled against the gym app
A person who filled in a form and then walked in and got created in PushPress is one person here, matched on contact details with a review queue for the pairs that are close but not certain.
How deep a lead is traced
Channel
Paid search, paid social, organic, referral, direct
Campaign
One row per campaign, per location
Ad group
Inside the campaign
Keyword or ad
With match type, the level spend is actually decided at
Landing page
Where the click arrived
Starting thresholds, yours to change
- Watch7 days absent
or attendance down to 75% of this member’s own baseline
- At risk14 days absent
or attendance down to 50% of this member’s own baseline
- High risk21 days absent
or attendance down to 25% of this member’s own baseline
Members with under 28 days of tenure are exempt from the ratio, because a new member has no baseline to fall from.
Retention
Risk measured against each member's own habit
Attendance is the earliest honest signal a gym has. It is also the one nobody reads, because reading it means going member by member.
Two signals, not one
Days since the last check-in catches the member who vanished. Recent attendance against that member's own baseline catches the one who quietly went from four sessions a week to one and has not technically been absent at all.
Thresholds are settings
Absence windows, ratio cutoffs, the tenure floor below which a member has no baseline worth comparing, and the baseline floor below which the history is too thin to judge. Every one of them is yours to set.
New members are exempt from the ratio
Somebody who joined three weeks ago has no habit to fall from. Flagging them as high risk teaches your staff to ignore the list.
It ends as a work list
Risk is not just a chart. The people to contact appear on a daily list with their tenure, their absence, their plan and where they came from.
Multi-location
Built for a network from the first table
Location is not a filter bolted on afterwards. It is on the rows: members, leads, costs, integrations, goals and thresholds.
One account, every location
Read the network as a whole, compare locations side by side, or open one and stay in the same tool.
Per location settings
Timezone, brand mark, colour, programs, plans, coaches and staff access are set per location, because a network is not five copies of one gym.
Per location credentials
Each location connects its own gym software account. One location moving from Mindbody to PushPress does not disturb the other four.
Goals and pace
Targets are set per location and per metric, for a period, and compared against where the calendar says you should be rather than only against the final total.
One account
Network roll-up
Every location, one set of numbers, one date range
- Location 1
- Location 2
- Location 3
- Location 4
- Location 5
Each location keeps its own timezone, currency formatting, thresholds and integration credentials.
Costs
The money that never shows up in an API
Ad platforms report their own spend. Everything else about acquisition costs something too, and leaving it out does not make it free, it makes the comparison wrong.
Entered as a period
A retainer is monthly, a tournament banner is one weekend. Both are recorded for the dates the money bought, and prorated by day overlap on read.
Attached to a channel
Against a channel and optionally one location, never invented down to a campaign or keyword that the money was not actually spent on.
Feeds the same figures
Cost per lead and cost per member for organic, referral and word of mouth stop being blank and start being comparable to paid.
Insights
Rules that say what changed, and by how much
Not a black box and not a chatbot. A set of checks that run against your data on your thresholds, each one naming the rows it fired on.
Every threshold below is a setting, expressed in your own currency and sized for your own volume, so a studio and a large gym do not share one definition of a problem.
- Leads sitting past your own first contact deadline
- Trial show rate falling against the previous period
- No-show rate above the level you set
- Attendance declining across a location, not just one member
- A jump in members crossing into at risk
- Cost per lead or cost per member drifting on a campaign with real spend
- A keyword producing leads well above its own recent pace
Provenance
You can check where a number came from
A figure you cannot audit is a figure nobody trusts twice.
Every sync is a record
Each pull writes what ran, for which location and stream, how far it got and what it brought back.
Webhooks are deduplicated
A live event and the scheduled pull that also carries it resolve to one row, not two.
Uncertain matches are queued
People who might be the same person go to a review screen instead of being merged silently.
Credentials are sealed
Provider keys and tokens are encrypted at rest, and the values are never shown back to anyone, including us.
Integrations
What connects, and what each connection brings
Connections are made in the product with a guided wizard. Nothing here needs a developer on your side.
Gym software
PushPress
Connected per location, with its own credentials, with changes pushed to us as they happen
- Members & contacts
- Memberships & plans
- Class schedule
- Check-ins
- Appointments & trials
Mindbody
Connected per location, with its own credentials, with changes pushed to us as they happen
- Clients & contacts
- Memberships & plans
- Class schedule
- Check-ins
- Appointments & intros
Ad platforms
Google Ads
Connected once, then mapped to locations, updated within the hour by a script you paste in
- Campaigns, ad groups, keywords & ads
- Daily spend & performance
Meta Ads
Connected once, then mapped to locations, with changes pushed to us as they happen
- Campaigns, ad sets & ads
- Daily spend & performance
- Lead Ads form submissions
Web and CRM
GoHighLevel
Connected once, then mapped to locations, with changes pushed to us as they happen
- Form & survey submissions
- Calls
- Call recordings
- Calendar bookings
- Contacts
- Opportunity pipelines & stages
Website tracking
Connected once, then mapped to locations, sent by the tracking snippet as it happens
- Form submissions
See it against your own numbers
The fastest way to judge this is to point it at one location and read the first month.