For gyms and academies with more than one location
Which ads bring members who stay.
MaverStudio traces every lead back to the channel, campaign and keyword that produced it, follows it through trial and membership, and then keeps watching attendance so you see who is drifting before they cancel. Every location in one account.
One member record
Attribution
Ad click
Channel, campaign, ad group, keyword, match type
Landing page
First and last touch, both kept
Lead
Form, call or booking, deduplicated against the gym app
Trial
Booked, showed or did not
Retention
Membership
Plan, price, start date, monthly revenue
Check-ins
Weekly attendance against this member's own baseline
Risk
Watch, at risk or high risk, on your thresholds
Reads from
- PushPress
- Mindbody
- Google Ads
- Meta Ads
- GoHighLevel
- Website tracking
The problem
Two systems that never meet
Everything needed to answer the only question that matters already exists. It just lives in two places that were never designed to be joined.
Your ads platform stops at the click
Google Ads and Meta report a cost per lead. Neither one knows whether that lead showed up for the trial, signed a membership, or is still training six months later.
Your gym software starts at the member
PushPress and Mindbody know check-ins, plans and revenue. Neither one knows which keyword, which ad or which landing page paid for that person.
The join usually lives in a spreadsheet
Built once a month, by hand, from exports, and only as accurate as whoever had time to do it. Each location is its own login and its own file.
Attribution
Down to the keyword, not just the channel
Knowing that paid search works is not a decision you can act on. Knowing which keyword produced members, and which produced trials that never showed, is.
- Click identifiers are captured at the landing page. Google gclid, gbraid and wbraid, and Meta fbclid, alongside the full UTM set, so the join survives a form submitted three days later.
- First and last touch are both kept. Every touch is stored as its own row, so a change in how you want to credit a lead is a new report, not a migration.
- Cost joins at the same grain. Spend is pulled daily at the campaign, ad group and keyword level, which is what makes cost per lead and cost per member real figures rather than an average across a channel.
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
See the drift, not the cancellation
A membership that ends this month stopped being used weeks ago. The attendance record already says so, and nothing in a gym app is watching it for you.
- Every member is judged against themselves. Recent attendance is compared to that member’s own baseline, so a three times a week regular who drops to once registers, and a once a week member is not flagged for being a once a week member.
- The thresholds are yours. Absence windows, ratio cutoffs and the tenure floor are settings, not constants. A forty member studio and a six hundred member gym should not share a definition of at risk.
- Risk lands on a work list. The people who need a call today appear on one screen, with who they are, how long they have been away and where they came from.
Multi-location
Five locations, one login
In the gym apps, every location is a separate account with separate credentials and separate exports. Comparing them is a manual job that gets done when someone has an afternoon.
- Roll up or drill down. Read the network as one set of numbers, then open a single location without changing tools or logging in again.
- Locations stay independent where it counts. Each one carries its own timezone, its own integration credentials and its own thresholds.
- Access follows the person. Owners see the network, managers and coaches see the locations they work at.
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.
Honest comparison
Organic is not free
If the only costs in a report are the ones an ads API returns, then the SEO retainer, the referral rewards and the tournament banner all cost nothing, and organic wins every comparison by default.
Costs that never appear in an API are entered by hand, against a channel and optionally one location, for the period the money actually bought. A monthly retainer and a single weekend sponsorship are the same kind of record.
Every period is prorated by day overlap, so a date range that starts mid month gets its share of the retainer rather than all of it or none of it.
Plainly
What it does not do
Worth saying before you spend a call finding out.
It does not replace your gym software
No payments, no class schedule, no door access. PushPress and Mindbody stay where they are, and MaverStudio reads from them.
It does not fill gaps with guesses
A lead that arrives with no click identifier is reported as organic, referral or direct. It is never assigned to a campaign to make a chart look complete.
It does not hide how a number was made
Every figure traces back to the rows behind it: the touchpoints, the check-ins, the cost entries and the sync that brought them in.
Tell us how your network runs
Pricing and setup are a conversation, not a checkout. We will want to know how many locations you have, which gym software you use and where your leads come from.