How do you track which Google Ads bring in gym members?
Keep Google auto-tagging on so every click carries a gclid. Capture it on your landing page and tie it to the person’s email or phone. When they book and show in your CRM and the payment clears in Mindbody or Stripe, match each stage to that click and send booked, showed and paid back to Google Ads as offline conversions.
Updated
Why the conversions column is not a member count
The Conversions column in Google Ads counts whatever action you told Google to count. For most gyms that is a form submission or a tap on a phone number, because those are the things Google’s tag can see on your website. It does not count members, because a membership does not happen on your website. It happens at the front desk, in your CRM and in your billing system, days or weeks after the click, in places the tag never reaches.
So the campaign with the best conversion number can be the one filling your CRM with people who never book, and the campaign with the worst number can be the one producing the members who stay. Google is not lying. It cannot see past the click, so it grades itself on the last thing it can see. Tying a member back to the click that produced them is called attribution, and for a gym it comes down to four steps: keep the click identifier alive, attach a person to it, respect the gap between the enquiry and the join, and send the stages that matter back to Google. Do those and the five jobs of gym marketing get judged on the only number that pays the rent, cost per member.
Step 1: keep auto-tagging on and let the gclid ride
A gclid is the Google click identifier: a long string Google appends to your landing-page URL when someone clicks an ad, unique to that click, provided auto-tagging is switched on in your Google Ads account. It is the durable link between a click and everything that happens afterwards, because Google can take a gclid back weeks later and match it to the campaign, ad group and keyword that produced it. Turn auto-tagging off, or let a redirect, a link shortener or a website builder strip the parameter, and the click is gone for good.
Keep auto-tagging on. Then add Adsu’s template as an account-level Final URL suffix, the field in Google Ads that appends parameters to every landing URL without editing each ad, so the gclid stays available and the campaign, ad group, creative, keyword, device, network, placement, target and location identifiers travel with the visit. Use the IDs, not the names, as the identity of a campaign: names get renamed and a report keyed on them breaks. The exact template and the checks are in Tag ad URLs.
Step 2: attach a person to the click
A gclid identifies a click, not a person, and Google Ads will only ever learn about a member if someone attaches a name to that click. The Adsu pixel stores the gclid, the campaign parameters and the landing page on the visit. The enquiry adds the rest: when the visitor fills a form, books a slot or calls, the email or phone number they give becomes the join key between the browser visit and the contact in your CRM.
The common gap is the embedded form. When a HighLevel form posts inside an iframe and redirects to a thank-you page, the parent page cannot see the submission, so append ?email={{contact.email}}&phone={{contact.phone}} to the redirect URL and the contact rides along to the page the pixel can read. From there Adsu resolves the person deterministically: an exact email match, or an exact phone match when the email does not line up. Anything weaker is not counted, and the report says so, because a member credited to the wrong click is worse than a member left uncredited. Keep the email and phone fields in your CRM complete and tidy and the match takes care of itself.
Step 3: respect the form-to-join lag
Nobody joins a gym from a search result. They enquire, get a call back, book a visit, walk in, take the tour or the trial, and then join, at the desk or through a link, with the payment clearing in Mindbody or Stripe. That join lands days or weeks after the click, in a different system from the one the click landed in, often on a different device and sometimes under a slightly different email. Google’s on-page tag was never going to see it. It fires on the page where the click landed and nowhere else.
Treat the lag as a design constraint rather than a number to quote. The stored gclid has to outlive the browser session. The person record has to carry it from the enquiry to the appointment to the payment. And each stage has to be sent back when it happens, not when the click happened. Show rate, the share of booked appointments where the person actually walked in, lives inside this lag, and it is the stage most setups skip: a campaign can book plenty of visits that are never kept, and that pattern stays invisible until somebody counts the door. Booked and showed are different numbers, and only one of them can pay you.
Step 4: send the stages back, not the form fill
An offline conversion is a conversion you report to Google Ads after the fact, from your own systems, instead of one Google’s tag observed on your website. Google accepts it two ways: keyed to the stored gclid, or, through Enhanced Conversions for Leads, keyed to the hashed email or phone number the person gave you, which Google matches to the click on its side. Either way the conversion can carry a value, so Google can learn what a member is worth and not just that one exists. Booked and showed come from the CRM appointment. Paid comes from the billing system that took the payment.
Why not the form fill? Because Google optimizes toward whatever you call a conversion. Tell it a form fill is the win and its targeting goes looking for people who fill forms, and a cheap lead who never books looks like a success. Send booked, showed and paid instead and it goes looking for people like the ones who paid, and the lead-to-member gap starts closing from Google’s side. Adsu sends those three stages back to Google Ads from the systems that know them: the CRM for booked and showed, the billing system for paid.
Your CRM’s built-in action is not a substitute. As of September 2026, HighLevel’s Add to Google Ads action fires only on a form submission, an order purchase, a number-pool call, a survey submission or the chat widget; it cannot fire on an appointment showing or a pipeline stage, and it never sees a payment that clears in Mindbody or Stripe outside a HighLevel order form (HighLevel help: Workflow Action – Add to Google Ads). So a workflow on “appointment showed” cannot fire at all, and a workflow on a sale fires only for members billed through HighLevel itself. The stages have to come from the systems that hold them.
A per-location example
Two locations, one Google Ads account, one search campaign per location. Both spent the same in the month. Google’s Conversions column, set to count form fills, says Location A is the winner: more enquiries for the same money, so a lower cost per lead, the spend divided by the enquiries it produced. Follow each person through to the payment and the picture flips.
| Stage | Location A | Location B |
|---|---|---|
| Ad spend | $3,000 | $3,000 |
| Enquiries | 60 | 40 |
| Cost per lead | $50 | $75 |
| Booked | 30 | 24 |
| Showed | 15 | 18 |
| Paid members | 6 | 12 |
| Cost per member | $500 | $250 |
Cost per member is the spend divided by the members who paid. Location B produced 12 members for $3,000, so $250 each; Location A produced 6 members for the same $3,000, so $500 each, twice the price, with the better-looking lead count. The location on each line is not read from the campaign name or the landing page. It is the location whose billing account took the payment, so a franchise or multi-site owner reads one line per campaign per location and sees which gym’s ads are producing members, instead of one average that hides the location that is losing. Move budget on this table, not on the conversions column.
What about Local Services Ads?
Local Services Ads are the Google units that sit above the search results for local businesses and produce a phone call or a message rather than a click through to your website. Where they are available for your category, they behave differently from a search ad in one way that matters here: there is no click, so there is no gclid, and the four steps above do not apply as written. Nothing lands on your landing page, so nothing gets captured there.
Judge them the way you judge any phone enquiry. The call is the enquiry, the front desk books the visit, the CRM marks it showed, the billing system takes the payment, and the cost per member is spend divided by the members it produced, per location, exactly as in the table above. Call tracking is the work of tying that phone enquiry to the source that prompted it, and Adsu follows inbound calls to the member so a Local Services Ad, a search ad and a referral sit on the same scorecard. The channel that wins is the one with the lowest cost per member at your gym this month, and it does not have to be the one with the cheapest leads.
Questions, answered.
Capture the gclid on your landing page with auto-tagging on and store it against the email or phone the person gives you when they enquire. When the membership payment clears in Mindbody, match it to that same person and report it to Google Ads as an offline conversion keyed to the stored gclid, or to the hashed email or phone. Adsu does this for you: Mindbody is the revenue authority, the payment is matched to the enquiry by exact email or phone, the paid stage goes back to Google Ads, and the report credits it to the location whose Mindbody site took the payment.
Not from a HighLevel workflow on its own: as of September 2026, HighLevel’s Add to Google Ads action cannot fire on an appointment showing, and it only sees a payment taken through a HighLevel order form (HighLevel help, Workflow Action – Add to Google Ads). Connect HighLevel and your billing system to Adsu instead. The showed appointment comes from HighLevel, the payment comes from Mindbody or Stripe, both are matched to the person who enquired, and Adsu sends showed and paid back to Google Ads against the click that started it.
Then Google cannot tie that person to a click, and the enquiry is not credited to a campaign. The usual causes are auto-tagging switched off, a redirect or link shortener stripping the parameter, a landing page without the pixel, or an embedded form whose thank-you page does not carry the contact’s email and phone. Fix the plumbing rather than guess: Adsu reports the unmatched share as unmatched instead of spreading it across campaigns, so a fix shows up as a rising coverage number.
The membership, with booked and showed as the earlier signals. Google optimizes toward whatever you call the conversion, so a form-fill goal buys form fills and a paid goal buys people like the ones who paid. Keep the form fill as something you watch, not the thing you bid for, and send booked, showed and paid back as offline conversions so the targeting learns the whole path to a member.
No. As of September 2026, HighLevel’s Add to Google Ads workflow action works only for a form submission, an order purchase, a number-pool call, a survey submission or the chat widget, never for an appointment status or a pipeline stage (HighLevel help, Workflow Action – Add to Google Ads). A showed stage has to come from something that reads the appointment and reports it separately, which is what Adsu does with the HighLevel calendar.
Neither is better in general; they produce different enquiries. A search ad produces a click with a gclid you can follow through booked, showed and paid. A Local Services Ad produces a call or a message with no gclid, so it is judged like any phone enquiry. Put both on the same scorecard, cost per member per location, and let the number decide where the next dollar goes.
Related
How a gym should plan marketing in 2026: five jobs from enquiry to renewal, the metric that proves each one, and the tracking that computes it.
Cost per memberCost per member is ad spend divided by new paying members, per channel and per location. The formula, a worked example, and what to ask your agency for.
Facebook ads for gymsHow to track your gym's Facebook ads from click to paying member (Pixel, Conversions API, fbclid, CRM, billing) and why leads don't turn into members.
Google AdsGoogle Ads + Adsu: Campaign identity, account context, and spend. How it connects, where its reports stop, what Adsu adds per location.
GclidA gclid, Google click ID, is the unique code Google Ads adds to your landing URL when someone clicks an ad. Why the pixel must see it and how Adsu uses it.
Offline conversion trackingOffline conversion tracking is sending an ad platform a conversion that happened off your website: a consult, a show, a payment. The front-desk join.
The proof
- Net members
- +21
- Lifetime value added
- $67,000+
Bobby & Maria Gasdia, Big Day Fitness, 2 locations
Stop paying for leads. Start paying for members.
Early access is opening in small groups. Applying takes two minutes, and we’ll tell you straight whether your stack is ready to connect.