Gym marketing attribution

What is marketing attribution for a gym?

Marketing attribution for a gym is the record of which ad, post or call produced each paying member, at each location. It follows one person from click or call through enquiry, booking, show, first payment and every renewal, and credits that revenue to the ad that started it. Lead counts stop at stage two. Attribution goes to the money.

Updated

Book a demo

The six-stage chain, per location

Every member your ads produce walks the same six stages, and attribution is the record of each one for one person. A lead report stops at the second stage. A member report runs to the sixth, which is the record AI ad tracking keeps for you.

  1. 01
    Click or callSomeone taps the ad or phones the front desk, and the visit is tied to the campaign that produced it.
  2. 02
    EnquiryA name, an email and a phone number. Now there is a person behind the click.
  3. 03
    BookedA consult or intro class lands on the calendar.
  4. 04
    ShowedThey walked in. Booked and showed are different numbers, and only one of them pays.
  5. 05
    PaidThe first payment clears in your billing system. This is the stage every campaign is judged on.
  6. 06
    RenewalsEach later payment from the same member, carried back to the click or call that started it.

Location is not guessed from a campaign name or a landing page. It comes from the payment account that took the money, so a member belongs to the site that billed them even when several sites share one ad account and one website. If a stage cannot be verified, it is not counted: a blank in the report means the evidence was missing, never that a number was modeled to fill the gap.

Why your ad accounts over-count, and why your CRM can’t check them

Meta reports the members Meta believes it produced. Google reports the members Google believes it produced. Add the two together and you have signed more members than your billing system has ever seen. Neither platform is lying. Each one counts platform-reported conversions, which usually means a form fill, and a form fill is not a member. Some never book, some book and never show, and some show and never pay.

The platforms cannot see past the click. Once someone leaves the ad, the rest of the journey happens in your CRM, on your calendar and at your front desk, and the platform only ever learns what somebody sends back to it.

Your CRM cannot referee the argument either. As of September 2026, HighLevel’s reporting docs describe dashboard revenue as the value of won opportunities (help.gohighlevel.com · 2026-09-12), and the spend in its ad reports as a Client Spend figure an agency sets as ad cost plus management fees (help.gohighlevel.com · 2026-09-12). As of September 2026, Mindbody’s reporting page lists revenue, attendance and membership status, with no lead-source, ad-spend or ROAS (return on ad spend) dimension (mindbodyonline.com · 2026-09-12). Pipeline value is not billed money, and a report with no spend column cannot produce a cost per member.

First-click, last-click and multi-touch, in gym terms

An attribution model is the rule for deciding which ad gets the credit when a member saw more than one before joining. First-click gives the whole member to the ad that introduced them, the reel they scrolled past in March. Last-click gives the member to the ad they clicked right before they enquired, usually the search for your gym’s name. Multi-touch splits one member between every ad they touched, by a formula.

Adsu credits the last eligible touch within 30 days of the payment. Last touch under-credits the ad that introduced the member, so the member’s timeline shows the earlier touches too: the reel that started it sits next to the search that closed it, and you can see both without cutting one member into fractions. As of September 2026, HighLevel’s help docs describe a contact record as carrying a First Attribution and a Latest Attribution, the same two answers, recorded on the contact.

Can you trust UTMs?

Yes, for what they are. A UTM is a tag on the end of an ad’s link that tells the landing page which campaign the visitor came from. Set at the account level in Google and Meta and kept through every redirect, UTMs name the campaign reliably, and Adsu reads them alongside the platform’s own click IDs and campaign IDs, which survive a rename when a written name does not.

No, for who paid. A UTM travels with a browser session, not a person. It dies on a phone call, because nobody reads a link down the line. It dies when a campaign is renamed and the old tag stops matching. It dies when a link shortener or a redirect strips the query string, and a visit that arrives without one is reported as unattributed rather than guessed. The label survives the rest of the journey because Adsu joins the visit to the paying member by exact email or exact phone: what the person typed into your form, and what your billing system has on file.

What iOS changed, and what it didn’t

Apple’s privacy changes took away the ad platforms’ device-level view. They can no longer follow one iPhone from the ad to your site to the form and back with any confidence, so their own conversion counts got fuzzier, and the number in your ads manager drifted further from the number at your front desk.

What it did not change is anything that never depended on the platform’s cookie. The Adsu pixel can be served from a subdomain of your own site. Click IDs such as gclid arrive in the URL, not in a cookie. And the member is matched by an exact email or an exact phone number, given by the person and held by your billing system. The click was recorded on your site, the payment was recorded in your billing system, and the join between them is a person, not a device.

How renewals are attributed

A member’s first counted payment is the acquisition. That is the moment the campaign is judged, and the one payment that counts as a conversion. Each renewal is carried as recurring value for the member that click brought in, not counted as a new conversion. Refunds and chargebacks come off the net, so the ad is credited with the money that stayed, not the money that came in and went back out.

This is why lifetime value by source ends up being the number a gym owner cares about. Two campaigns can produce members at the same cost, and one of them produces members who stay for years while the other produces members who quit after the intro offer. Judged on the first payment alone they look identical. Judged on the revenue carried back to each click, they are not, and next month’s budget should follow the campaign whose members renew.

Tying Meta and Google spend to Stripe or Mindbody revenue

Three sources make a cost per member. The ad accounts supply spend and campaign identity: Google Ads and Meta, each campaign known by its ID rather than its name. The billing system supplies the money: Stripe, Mindbody or WellnessLiving transactions, refunds included, and the location that took the payment. The CRM supplies the person in between: HighLevel holds the contact and the appointment that connect a click to a charge.

Adsu joins the three by exact email or exact phone number. Cost per member for a campaign is that campaign’s spend divided by the members it was credited with, counted only from payments that cleared. If a campaign has spend and no counted members, the cell is blank rather than modeled. Nothing is estimated across the gap, and a purchase value reported by an ad platform never stands in for a payment your billing system did not record.

What per-location reporting changes for a franchise

Most multi-location operators run every site off one ad account, which is efficient for buying and useless for judging. The account-level cost per lead is an average, and an average is where a losing site hides. Per-location attribution gives each site its own line: its own spend, its own members and its own cost per member, because the payment account that took the money decides which location a member belongs to.

For a franchise, that means the north site’s campaign and the south site’s campaign are judged on the members each one actually produced, even when they share the ad account and the landing page. The losing site cannot hide behind the winning one, and the winning one gets the budget it earned. There is no per-location fee: one plan covers every location and everyone on your team, priced by the member revenue Adsu tracks.

Questions, answered.

  • Last touch inside a fixed window, with the earlier touches visible on the member’s timeline. It credits the ad that moved the person to enquire, and the timeline still shows the reel or post that introduced them, so you see both without splitting one member into fractions by a formula.

  • For campaign identity, yes, when they are set at the account level and survive every redirect. For who paid, no. A UTM follows a browser session, not a person, and it is lost on a phone call, a renamed campaign or a stripped link. Adsu reads UTMs alongside click IDs and an exact email or phone match.

  • iOS took away the ad platforms’ device-level view, so their own counts got fuzzier. A pixel served from your own domain, a click ID carried in the URL and a match on the exact email or phone the member gave you do not depend on the platform’s cookie. A visit a blocker hides is reported as unattributed, never guessed.

  • The first counted payment is the acquisition and the only conversion. Each renewal is carried as recurring value for the member that click brought in, not counted as a new conversion. Refunds and chargebacks come off the net. Over a year you see which campaign’s members stayed, and that is the number that should set next month’s budget.

  • Not on its own. Your CRM records where a contact came from and your billing system records what they paid; the report you want lives in the join between them, and neither holds the other’s half. Adsu connects to HighLevel for the contact and the appointment, and to Stripe, Mindbody or WellnessLiving for the payment, then joins the two by exact email or phone.

  • One plan for every location and everyone on your team, priced by the member revenue Adsu tracks each month, from $149 a month. No per-location fee, no per-user fee, and a slow month costs less. The pricing page shows every band, and the scorecard you run the gyms on shows the number your bill is based on.

The proof

Net members
+21
Lifetime value added
$67,000+

Bobby & Maria Gasdia, Big Day Fitness, 2 locations

Read the full story