For agencies

How does an agency prove its gym ads produced members?

By showing the owner one line per campaign per location: what each ad cost per paying member, and what those members paid since. Adsu follows each click or call through the CRM to the front desk, credits the membership to the ad, and gives agency and owner one report. Cost per lead starts the argument. Cost per member ends it.

Updated

Book a demo

One login, every client gym

An agency running ads for six gyms lives in six sets of dashboards, and not one of them agrees with a front desk. Adsu gives the agency one identity. It can belong to more than one agency and hold access to many client workspaces, where a workspace is the Adsu organization for one brand or gym group, with its own connected accounts, locations, team and reports. Agency owners and admins see the clients their grants allow. Account managers and analysts are narrowed further, to the client and the locations they are assigned, and custom permissions can hide product surfaces or connection details from people who do not need them. Every report is scoped to one client and one location, so a strong month at one gym never makes another look healthy. The agency workspaces guide has the detail.

The client stays in charge. A gym owner reviews and revokes agency access in Settings → Agency access, and revocation is live: the next request from a revoked agency is denied or narrowed, and a workspace that was visible yesterday is not a durable entitlement. That is the arrangement an owner should expect from any vendor an agency brings in.

The report a gym owner can read

An owner does not want another dashboard. They want to know what a member cost and what that member has paid since. Attribution is the word for tying each paying member to the click or call that produced them, and Adsu reports it as one line per campaign per location. When the same ad fills one gym and flops at the next, both lines say so, in numbers the owner already uses.

  • Cost per appointment, per show, per memberA campaign’s spend divided by the appointments it booked, the people who turned up, and the members whose first payment cleared at that location, three numbers that fall in that order and expose where a cheap lead became an expensive member.
  • Revenue per campaignThe first payment plus every renewal from the members a campaign produced, net of refunds and chargebacks, credited to that campaign. A campaign whose members stay keeps climbing; one whose members quit goes flat.
  • Per location, decided by the moneyThe payment account that took the join decides the location, never a campaign name, so a shared ad account across a client’s three gyms still reports cleanly against each one.

Only verified stages count. A booking is a calendar entry in the CRM, a show is one that was kept, a member is a payment that cleared in the gym’s billing system. When Adsu cannot verify a stage it leaves the number smaller and says so, rather than filling the gap with a model. An agency should want that: a defensible number survives the owner’s accountant.

The same wins go back to the ad platforms. Appointment booked, appointment showed and membership paid are sent to Google and Meta as the conversions to optimize for, so the targeting learns who joins instead of who fills in a form, and next month’s campaigns start from members, not leads. The owner’s side of the same report, the questions to ask before signing and the red flags, is on how to hold a gym marketing agency accountable.

How this differs from WhatConverts and CallRail for agencies

WhatConverts and CallRail are both built for agencies, and both stop where the argument with a gym owner starts: at the lead. Three differences matter. The rival facts are from their own pricing and integration pages, as of September 2026, and every cell links the page it came from.

WhatConvertsCallRailAdsu
What goes back to Google and MetaA lead: received, given a sales value, or marked quotable (source).The call, text or form fill (source).Appointment booked, appointment showed and membership paid, as the wins to optimize for.
Where the chain endsAt the enquiry: its integrations directory lists no Mindbody, WellnessLiving, Stripe or Square (source).At the enquiry: a conversion’s value is set manually or through a CRM integration (source).At the membership and every renewal after it, read from Stripe, Mindbody or WellnessLiving at each location.
How it is pricedPer account, one account per business, or an agency tier with unlimited accounts, plus usage beyond the included credit (source).A plan plus additional usage (source).One plan by the member revenue Adsu tracks for that gym; nothing per location or per seat (pricing).

What the agency sets up

Adsu does it with you, one client at a time, and nothing changes for the gym’s staff. The steps are the same for every gym on the roster; the tag ad URLs guide covers the first two.

  1. 01

    Tag the Google Ads account

    Keep auto-tagging on and apply Adsu’s template as an account-level Final URL suffix, so the click ID and the campaign, ad group, keyword and location identifiers travel with every visit. Existing landing URLs stay as they are.

  2. 02

    Tag the Meta ads

    Add Adsu’s URL parameter template at the ad-set or ad level. It keeps the readable campaign fields next to the durable platform IDs, and campaign IDs are what Adsu joins on, because names change.

  3. 03

    Install the pixel once

    Place the client’s workspace snippet in the global page template or in Google Tag Manager, so every landing page, form page and thank-you page reports without a per-funnel install. Each workspace has its own site key; never reuse another client’s.

  4. 04

    Connect the systems, per location

    GoHighLevel for the enquiry and the appointment, the payment source that takes the money (Stripe, Mindbody or WellnessLiving), and the Google and Meta ad accounts that own that location’s campaigns. A group with several gyms connects each location separately, so every payment account maps to exactly one place.

  5. 05

    Verify, then read forward

    The pixel shows Live after a real browser beacon, and HighLevel and the payment source show Receiving once their first events arrive. Adsu reports from that day on, so the first full month of bookings, shows and payments is the first month to read cost per member on.

Questions, answered.

  • Four, per campaign and per location: cost per appointment, cost per show, cost per member, and the revenue those members have paid since, net of refunds. Cost per lead is where the conversation starts, not where it ends. Adsu computes all four only from stages it verified, and says so when a stage could not be.

  • It replaces the argument. The agency keeps its platform reporting for day-to-day optimization; Adsu adds the one report both sides read, built from the gym’s CRM and billing system rather than from the ad platform’s view of itself. The owner sees members and revenue per campaign, and the agency is judged on the same line it optimizes toward.

  • One plan, priced by the member revenue Adsu tracks for that gym, from $149/mo. No per-location fees, no seats. The bands are on the pricing page, and the same scorecard the gym runs on shows the tracked-revenue number the bill is based on, any day of the month.

  • The client controls agency access in Settings → Agency access and can revoke it; revocation is live. The next request from the agency is denied or narrowed, and a workspace that was visible before is not a durable entitlement.

  • Both. Adsu sends the stages that matter, appointment booked, appointment showed, membership paid, back into your ad platforms as the wins to optimize for. The platform’s own AI then goes looking for more people like the ones who booked and paid, instead of anyone who’ll fill out a form.

The proof

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

Bobby & Maria Gasdia, Big Day Fitness, 2 locations

Read the full story