How do you hold a gym marketing agency accountable?
Judge the agency on cost per member and revenue per campaign, at every location, never on cost per lead. Insist on one monthly report that follows each click or call to the enquiry, the booking, the show and the first payment, with ad spend at raw platform cost. If they cannot produce that report, you have your answer.
Updated
Cost per lead is the agency’s number, not yours
Every ad platform grades itself on the last thing it can see. Google’s tag and Meta’s pixel watch the click and the form fill, so those are the numbers the ad account reports and the numbers most agency decks open with. Cost per lead is what you spent divided by the enquiries it produced, and it is the tidiest figure in gym marketing, because the platform computes it for you and the agency can hit it.
The trouble is where the money goes after the form. An enquiry has to be called back, booked, walked through the door and closed before a payment clears, and every one of those steps happens in your CRM, at your front desk and in your billing system, where the ad account never looks. Two campaigns with the same cost per lead can produce very different member counts, and the lead column cannot tell them apart. When I say cheap leads are the wrong target, I do not mean anyone is cheating you. The platform was asked for form fills and it found form fills. That is the platform doing its job with the only outcome it was given, and an agency that reports on it is grading itself on job one.
So the first thing to change is the question. Not “what did a lead cost?” but “what did a member cost, and what have those members paid since?” Those are two numbers, and the rest of this page is how to get them from an agency and what to do when you cannot.
The two numbers to demand
Cost per member is what a campaign spent divided by the new members whose first payment was credited to it: people who enquired through that campaign, at that location, and whose first payment cleared. The formula, and a worked example labeled as one, is on cost per member. Ask for it per campaign and per location, never blended, because one number across three gyms is where the losing gym hides.
Revenue per campaign is the second number: the first payments plus every renewal since from the members a campaign produced, net of refunds, credited to that campaign. It is the number that tells you whether a campaign’s members stay. A campaign with a fine cost per member and members who quit after a month is a loss that a first-payment report cannot see, and a campaign with a dearer member who stays a year is the best line on the sheet.
Per location is not a nice-to-have. The same ad fills one gym and flops at the next, because the offer, the desk and the neighborhood are different even when the creative is identical, and a franchise or multi-site owner reading one blended number is reading a story with the ending cut off. The location on each line should be decided by the billing account that took the payment, not by a campaign name, so a shared ad account across three gyms still reports cleanly against each one.
The monthly report to insist on
One report, one line per campaign per location, seven columns. Raw spend, exactly as the Google and Meta ad accounts report it. Enquiries. Booked. Showed. Joined. Cost per member. Revenue to date from those members. That is the whole thing, and an agency that already works this way will send it over in a minute.
Two rules make it a report you can trust rather than a lead count with a logo on it. Verified stages only: a booking is a calendar entry in the CRM, a show is one that was kept, a member is a payment that cleared in your billing system, and anything that could not be verified is not counted. And gaps stated: if a stage could not be followed for some of the people on a line, the report says so and leaves the number smaller, rather than filling the hole with a model or a guess. Blank is information. A guess is a number you will make a budget decision on.
Read the columns left to right and the leak names itself. A line with plenty of enquiries and few bookings is a follow-up problem. Plenty booked and few showed is a show rate problem, show rate being the share of booked appointments where the person actually walked in, and the stage most agency reports skip because the platform never asked for it. Plenty showed and few joined is a close problem, and that one is usually yours, not the agency’s. A report that stops at enquiries cannot tell you which of those you have, and each has a different fix.
Seven questions before you sign
Ask these on the first call, before the proposal, and write the answers down. None of them is a trick. An agency that measures itself on members will have answered all seven before you finish asking.
- 01Where does your tracking end?If the answer is the form fill or the thank-you page, the agency will only ever be able to report leads. Ask whether the booking, the show and the first payment are followed, and in which system each one is read.
- 02What goes back to Google and Meta?The platforms optimize toward whatever they are told is a conversion. If only the form fill goes back, they are being trained to find people who fill forms. Ask whether appointment booked, appointment showed and membership paid are sent back as the wins, which is what offline conversion tracking means.
- 03Does “spend” on your report include your fee?Ask for ad spend at raw platform cost, the figure in the ad account, with the management fee on its own line. A spend figure with the fee folded in makes every cost per member look like a media problem, and hides what the agency itself costs.
- 04Will I get one line per location?If you have more than one gym, ask to see a sample report with each location on its own line, and ask what decides which location a member is credited to. The right answer is the billing account that took the payment.
- 05Who owns the ad account, the pixel and the data?The Google Ads and Meta accounts should be in your name, with the agency as a manager. The pixel, the small script that records the visit, and the rest of the tracking should run on your domain. If the agency leaves, the history, the audiences and everything the platforms have learned stay with you.
- 06How are phone calls and walk-ins counted?A gym gets enquiries by phone and at the desk, not only by form. Ask how a call is tied to the ad that prompted it and how a walk-in is recorded, so those members are credited somewhere rather than lost, and the campaigns that produce callers are not marked as failures.
- 07What do I keep when we part ways?The accounts, the pixel, the landing pages, the audiences and the report history. Get it in writing before the first invoice, because it is a hard conversation to have after.
Red flags
Any one of these means the agency is being measured on something other than members. Some of them are built into the tools agencies run on, which is worth knowing before you blame the person.
- Leads-only reporting.A monthly report whose last column is cost per lead. The agency may be doing good work; you cannot tell from that page, and neither can they.
- “Client spend” that bundles the fee.As of September 2026, HighLevel’s native ad reporting defines Client Spend as the cost of all the ads plus management fees, with a markup the agency sets (HighLevel help center, How to add Client Spend to Google/Facebook Ad Reporting, read 2026-09-12). A report built on that figure cannot tell you what the ads cost. Ask for the ad-account figure.
- Pipeline value called revenue.A CRM’s revenue figure is often the value someone typed on a deal, not money that cleared. As of September 2026, HighLevel’s reporting FAQs state that the revenue on the location dashboard is the sum of the monetary value of won opportunities rather than the actual payment received (HighLevel help center, Reporting FAQs, read 2026-09-12). Revenue on your report should come from the billing system.
- A send-back that never fires on booked, showed or paid.As of September 2026, HighLevel’s Add to Google Ads workflow action fires only on a form submission, an order purchase, a number-pool call, a survey submission or the chat widget, never on a pipeline stage (HighLevel help: Workflow Action – Add to Google Ads). If the agency’s send-back runs on that, Google is still learning from form fills whatever the report says. What Adsu reads from HighLevel, and what it sends back, is on its integration page.
- No per-location split.One number for three gyms. The agency cannot show you which location’s ads are producing members, so it cannot move budget between them, and neither can you.
- An account you cannot log into.The ad account in the agency’s name, the report delivered as screenshots, the tracking on the agency’s domain. Each one means the numbers exist only where the agency can see them. Insist on a login of your own to the ad accounts and to whatever computes the report, in your name, that survives the relationship.
What a fair contract measures
The contract I would sign, on either side of the table, measures one thing: cost per member per location against a ceiling the owner sets, verified in a system the owner can log into. Not leads delivered, not calls booked, not reach. The ceiling is yours to set, from your own dues and your own churn, because nobody outside your billing system knows what a member is worth to you, and I will not print a number here that pretends to.
Four terms around that. The fee sits on its own line and is never folded into spend. The ad accounts and the pixel are in the owner’s name, with the agency as a manager, so the history and the audiences stay when the agency goes. The report is produced by something both sides can log into, so there is one set of numbers rather than a monthly argument about whose are right. And a review at 90 days, which is long enough for the ads to find their footing and for the first members to have paid, and short enough that a bad fit costs you a quarter rather than a year.
Be fair about where the line sits. The agency owns cost per booked appointment and cost per show: the ad, the offer and the follow-up decide whether a stranger books and turns up. The gym owns the desk and the sale. A campaign that books a full calendar nobody keeps is an agency problem; a full tour that nobody closes is not, and a fair contract says so before anyone is blaming anyone.
Where Adsu fits, and why I’m biased
I run a gym ads agency and I sell Adsu, so read this page as the view of someone with two horses in the race. Adsu is the tool that produces the report above: it follows each click or call through the CRM to the enquiry, the booking, the show and the first payment in the billing system, credits the member and every renewal since to the campaign that produced them, per location, and sends booked, showed and paid back to Google and Meta as the wins. Only verified stages count, and when a stage cannot be verified the number stays smaller and the report says so.
It is the report I would want any agency held to, mine included. An agency can be given access to a client’s Adsu workspace, so the owner and the agency read the same line instead of arguing about whose number is right, and the owner controls that access and can revoke it. If you already have an agency, hand them the seven questions above and see what comes back. If you are choosing one, the five jobs of gym marketing are the plan the report measures, and the questions are how you find out whether the agency can see past job one.
Questions, answered.
Ask for two numbers, per campaign and per location: cost per member, which is ad spend divided by the new members whose first payment was credited to that campaign, and revenue per campaign, the first payments plus every renewal since from those members. Then ask for them on one monthly report with a line per campaign per location: raw spend, enquiries, booked, showed, joined, cost per member and revenue to date, counting only stages that were verified. An agency that can produce it is accountable by construction. One that can only show cost per lead is grading itself on the first step.
Leads-only reporting, a spend figure with the management fee folded in, revenue that is really pipeline value, a send-back to Google and Meta that fires on form fills but never on booked, showed or paid, one blended number across your locations, and an ad account or a report you cannot log into yourself. Any one of them means the agency is measured on something other than members, and the fix is the same: the accounts in your name, the fee on its own line, and one report you can open without asking.
There is no good cost per lead, because it is the wrong number to judge anything by. A cheap lead who never books costs more than a dear lead who joins and stays a year, and the lead column cannot tell them apart. Judge a campaign and an agency on cost per member and revenue per campaign, per location, against a ceiling you set from your own dues and churn. Cost per lead is where the scorecard starts, not where it ends.
No. The Google Ads and Meta accounts should be in your name, with the agency granted manager access, and the pixel and tracking should run on your domain. The account holds your conversion history, your audiences and everything the platforms have learned about who joins your gym. When the agency owns it, all of that leaves with them, and the next agency starts from nothing.
Judge the plumbing in the first month and the numbers at 90 days. In month one you should already be able to see whether enquiries are being followed to bookings, shows and payments, and whether the report exists at all. By 90 days the ads have had time to find their footing and the first members have paid, so cost per member per location is a real number. Set the ceiling before you start, review against it at 90 days, and treat a report that still stops at leads as the answer.
Related
Cost 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.
AgenciesOne login, every client gym, one report the owner can read: cost per member and revenue per campaign, per location. Adsu for agencies running gym ads.
Gym marketingHow 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.
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.