For gyms and studios
Gym advertising: trial sign-ups and memberships per club, not clicks
Adrails gives gyms, boutique studios, personal trainers and franchises one workspace where each club's ad account is read as trials booked and memberships started rather than clicks. Your server sends the trial and the membership back to Meta as conversions, Stripe puts what each member pays next to the spend that brought them, and templates, thresholds and report links repeat per club.
Reviewed Oct 4, 2026
By club type
The conversion that matters, the figure to watch and the workflow
A click costs the same whether the person books a trial or not, and a trial costs the same whether the person joins or not. Each kind of club has one conversion worth paying for and one share that turns it into a member.
| Club type | Conversion that matters | Figure to watch | Facebook CPL, LocaliQ 2026 | Adrails workflow |
|---|---|---|---|---|
| Big box gym | A free trial or day pass booked, then the membership it becomes | Cost per trial that turned up, and the share of trials that join | $15.49, sports and recreation row | One Leads template per club; trial_started and subscription sent from your server; a CPA alert per club |
| Boutique studio | A first class booked, then a class pack or an unlimited plan | Cost per first class and monthly revenue per member from Stripe | $27.11, health and fitness row | First-class bookings sent as Lead; Stripe customers in the Tracking tab; a split test on the intro offer |
| Personal trainer | A consultation booked, then a block of sessions | Cost per consultation and the share that becomes a client | $27.11, health and fitness row | One ad set in one radius; a higher intent form or a booking page; the Weekly review automation by email |
| Franchise with several clubs | A trial per club, then memberships per club | Cost per trial per club against each club's own line | $15.49, sports and recreation row | Accounts grouped by region; one template applied per club; a read-only report link per franchisee |
Cost per lead: LocaliQ, Facebook Advertising Benchmarks 2026, lead generation campaigns, Sports & Recreation ($15.49) and Health & Fitness ($27.11) rows; the average across industries is $27.39. Which row a club resembles depends on its own account, so both are shown, and a lead is a trial request, not a member. Conversions and workflows: the Adrails docs.
01
Gym advertising pays for a visit, so count the visit and what it became
Gym advertising is bought in clicks and impressions and sold in memberships. Between the two sit the only events worth paying for: a trial or a first class booked, the person turning up, and the membership that starts afterwards with a monthly fee attached. Meta reports the lead its form collected, the membership software knows who joined, and Stripe knows what they pay. The figure a club owner needs, cost per new member, lives across all three.
Adrails reads each club's ad account as results and cost per result over the period you choose, in Campaigns and Analysis, on Meta Ads and, once your workspace can connect it, Google Ads. In LocaliQ's 2026 Facebook benchmarks the leads objective costs $15.49 per lead in the sports and recreation row and $27.11 in health and fitness, against $27.39 across industries, and LocaliQ's 2026 search benchmarks put sports and recreation at $44.26 per lead on Google Search. None of those figures says how many trials became members, and that is the figure this page is built around.
The kind of club sets the conversion. A big box gym sells a free trial or a day pass; a boutique studio sells a first class and then a pack or an unlimited plan; a personal trainer sells a consultation; a franchise sells all of them, per club. Gym ads and fitness ads on paid social, gym marketing for one club or fitness marketing for forty, run on the same arithmetic: spend, trials, members, and what a member pays each month.
- Trials, first classes and consultations read as results per club
- Memberships and their monthly value read from Stripe
- Meta Ads and, once your workspace can connect it, Google Ads
02
Send the trial and the membership back as conversions
Put the Adrails script on the club's site and it credits each visit to the campaign and ad that brought it, keeping the click ids for 90 days. When the trial is booked, your server, or the handler that receives the membership software's webhook, sends a trial_started event signed with the server key; when the membership starts, it sends a subscription event with the monthly fee as its value and currency. Adrails records both against the visit and sends them to the Meta dataset you chose as StartTrial and Subscribe, with the event_id so Meta counts each once with the pixel's event, and to Google Ads as the one event you chose for it, Trial started or Subscription, when the event carries a gclid. This is gym lead generation read to the end, not stopped at the form fill.
Only signed events reach the platforms; what the page script sends stays in Adrails, so a bot on the trial page cannot teach Meta to buy more of nothing. A value limit per event and a daily limit per platform hold back a leaked key or a broken integration, events past them are recorded in Adrails and held back, and Settings > Tracking shows what was sent, what waits and what was refused over the last 30 days.
Meta restricts what some sites may share. Its help page on data sharing restrictions based on source categories describes three levels: core setup, which restricts custom parameters and the parts of a URL after the domain; a restriction on certain standard events, described as specific mid and lower funnel events; and a full restriction on all events in some or all regions. Meta assigns the category itself, the page does not name fitness or gyms, and whether a club's dataset is treated as health and wellness is visible in Events Manager, in the dataset's Settings under Data restrictions, where a category you think is wrong can be sent back for review. What Adrails sends is the list in its docs, a standard event name, the value and currency, the ids and the hashed contact fields, and nothing about the goal or the condition that brought the person in, so keep programs built around a condition out of event names and URLs and check the dataset's category before counting on Lead or Subscribe reaching Meta.
- trial_started reaches Meta as StartTrial, subscription as Subscribe, lead as Lead
- Google Ads receives signed events with a gclid in hourly batches once they are 6 hours old
- Events past the value or daily limit are recorded in Adrails and held back
03
Memberships billed through Stripe sit next to the spend that brought them
When memberships are billed through Stripe, connect it with a read-only restricted key and Adrails reads customers, charges and refunds, subscriptions and prices: payments every 15 minutes, subscriptions every 30 minutes, customers every hour. The agent then reads active subscriptions, trials, MRR and ARR, collected payments and refunds next to the ad spend of the same period, and a campaign's Tracking tab lists the customers each ad brought, with matched customers, monthly revenue, average customer value and active subscriptions.
The Tracking tab needs visits that carry the campaign and ad ids. Campaigns created by Adrails add these URL parameters to their ads automatically; for the rest, the tracking script on the site does it. Meta and Google Ads remain the source of their own conversions and ROAS; what Stripe adds is the member and the fee, so an ad that brought many trials and few members is read as those members and what they pay, not as a list of leads.
Membership software that does not bill through Stripe still fits: its webhook or export is what your server turns into the signed trial_started and subscription events, and the fee travels as the subscription event's value and currency, which Meta receives with the Subscribe event. The Stripe key is read-only, and Adrails never charges, refunds or changes anything in Stripe.
04
One template per offer, one test per club
Save the campaign, ad set and ad settings of the club whose January offer or opening campaign works as a template, then apply it to the next club. Templates belong to the workspace, per channel and level; fields tied to one account, the pixel, the Page, media and audiences, are left out, and a name, dates and status are never copied. Each club keeps its own radius, its own Page and its own pixel and gets the structure that worked. Every campaign is created paused after the platform has checked it, so an opening campaign can be prepared ahead of the opening and switched on when the doors open.
Compare puts two to four clubs' campaigns side by side and names the one that leads on cost per result, saying whether the gap is reliable at 95% confidence with at least 10 conversions each, and lists the settings that differ. When the leader is reliable, Move budget to the leader prepares a move of 20% of each other campaign's budget to it, within the workspace's limit per change, as a proposal you apply in Priorities. A split test settles the offer with the club's own figures: from a Meta ad with one image or video, vary the creative or the ad text; from a Meta ad set, vary the audience, the placements or the bidding. Two to four variants run for 4 to 30 days, decided on CPA or conversion rate, and a winner is named at 95% confidence once every variant has at least 10 conversions.
A club advertises to a small radius, so the same people see the same ad often and fatigue shows early. Creatives lists every image, video and text once with its spend, results, CPA, CTR and frequency across the ads and clubs that use it, and a signal: Winning, Fatigued, Learning under 1,000 impressions, Wasted or Steady. Label ads in their names, [angle: price] or [offer: january], and the list groups itself by offer across clubs, so the January creative that is still winning in club three is visible from club one.
- Templates per channel and level, owned by the workspace
- Account-tied fields left out: pixel, Page, media, audiences
- One variable per split test, the variants created paused
05
A cost per trial line per club and a report per franchisee
For a Leads campaign, cost per result is cost per trial. A CPA alert per club, checked every hour over today, the last 7 days or the last 30 days, posts to Slack, Discord or email when a campaign crosses the line that club can pay, and fires at most once a day per campaign. Stop-loss and Spend without results pause what spends without a trial, up to 50 items per run, either at once after Adrails checks on the platform that nothing changed, or as a proposal that waits in Priorities on Home for 24 hours. Only active items are paused, and every pause is logged with the figures that led to it.
Each franchisee gets a read-only report over the accounts you tick: spend, results, cost per result and ROAS per currency, the best and weakest campaigns and creatives, and the changes applied from Adrails over a period of up to 92 days. The link opens for 30 days, 90 days or until revoked, needs no Adrails account, and the Weekly client report automation emails a fresh one each week. Revoke it from the list under Automations when a club leaves the network, and whoever kept the link reads that the report is not available.
Go further
Read more
- Gym ads on MetaTrial offers, lead forms against a booking page, radius, creative turnover and the cost per new member.
- Stripe integrationThe read-only key, what Adrails reads from Stripe and how often.
- Send conversions to Meta and Google AdsDatasets, conversion actions, event names and the two limits that hold events back.
- For local service businessesLeads per location across law firms, dentists, home services, restaurants and gyms.
Sources checked
- LocaliQ: Facebook Advertising Benchmarks 2026
- LocaliQ: Search Advertising Benchmarks 2026
- Meta Business Help Center: Understand data sharing restrictions based on source categories
- Meta Business Help Center: About core setup
- Meta Business Help Center: How to turn core setup on and off in Meta Events Manager
FAQ
Common questions
Can Adrails send a gym trial sign-up to Meta as a conversion?
Yes, when your server sends it signed with the server key: a trial_started event reaches your Meta dataset as StartTrial, a subscription event as Subscribe and a lead as Lead, each with its event_id so Meta counts it once with the pixel's event. Events sent by the script on your pages stay in Adrails.
Does Adrails read memberships from Stripe?
Yes. A read-only restricted key gives Adrails customers, charges and refunds, subscriptions and prices, with payments read every 15 minutes and subscriptions every 30 minutes; the agent reads them next to spend and a campaign's Tracking tab shows the customers each ad brought. Adrails never charges, refunds or changes anything in Stripe.
Is a gym website restricted by Meta's health and wellness data rules?
Meta assigns data source categories itself and its help page does not name fitness or gyms, so check your dataset in Events Manager under Settings and Data restrictions, and ask Meta for a review if the category is wrong. Under core setup, custom parameters and anything in the URL after the domain are not shared, while standard events with value and currency still are.
Can each club have its own cost per trial limit?
Yes. Each threshold automation is filled with the accounts you choose and its own value, checked every hour over today, the last 7 days or the last 30 days; a workspace runs up to five threshold automations at once, and a scheduled automation with a Filter step covers the other clubs each morning.
Can a franchisee see only their club's figures?
Yes. A client report covers only the accounts you tick, over at most 92 days, and anyone with the link reads it without an Adrails account. Revoke it at any time from Automations, and whoever opens it afterwards reads that the report is not available.