The Dead List Is the Gold Mine: Database Reactivation for Gym and Fitness Clients in GoHighLevel
Challenge funnels are what every gym agency sells. The dormant member database is where the fastest money actually is — here's how to work it.
In short
Almost every gym and fitness marketing agency leads with the same offer — a six-week challenge funnel, paid traffic, and a booking calendar — and almost all of them ignore the asset that produces revenue fastest. A five-year-old gym is sitting on a database of two to four thousand people who already walked through the door, already paid, and already know where the parking is. A properly segmented, properly throttled database reactivation campaign on that list routinely books more trials in two weeks than the first month of ad spend does, at effectively zero media cost. The build is not complicated — list hygiene, tiered segments, a short conversational SMS sequence, a hard send throttle, human reply routing, and a trial calendar with real show-up reminders — but every piece has to be right or the campaign burns the number and the list at the same time. This post walks the entire reactivation build in GoHighLevel, the 30-day nurture that turns those trials into memberships, the January surge playbook, and how to package all of it as a reusable snapshot instead of rebuilding it for every gym you sign.
Key takeaways
- A five-year-old gym typically holds two to four thousand lapsed members and unconverted trial leads, and that list can be reactivated at zero media cost while paid traffic takes weeks to reach the same booking volume.
- Reactivation SMS works when it reads like a text from a human being rather than a broadcast — short, conversational, no links in the first message, and asking a question that is easy to answer with one word.
- Sending throttle is the difference between a campaign and a disaster; 60 to 120 messages per hour per number with a hard daily cap keeps carrier filtering and reply volume manageable.
- Booked trials mean nothing without show-up flows; a confirmation, a 24-hour reminder, a 2-hour reminder, and a no-show recovery sequence typically lift attendance from roughly half to three quarters.
- Torchlight Fitness Marketing reactivated one gym's 2,400 lapsed members into 68 booked trials in 11 days, then converted them with a 30-day onboarding nurture rather than leaving the front desk to improvise.
Walk into any gym-marketing community that traces its lineage back to Gym Launch and you will find the same offer repeated in a hundred slightly different wrappers. A six-week challenge. A body transformation contest. A twenty-one-day kickstart. Facebook and Instagram traffic pointed at a landing page, a form, a booking calendar, and a sales script for the intake call. It works. It has worked for years. It is also, at this point, the single most commoditised offer in the fitness marketing business, and it is the reason so many gym agencies find themselves competing on price against someone with a cheaper media buyer.
Meanwhile, sitting in the client's own systems — in a spreadsheet export from Mindbody, in an old Zen Planner account, in a CSV somebody emailed themselves in 2023, in the gym's Mailchimp list that hasn't been sent to since the pandemic — is a list of two thousand, three thousand, sometimes five thousand human beings who have already walked through that gym's front door. They already know where it is. They already know what the parking is like. Many of them already paid money to be there. A meaningful percentage of them have thought about going back in the last ninety days and simply never did anything about it.
Nobody is talking to those people. Not the gym, which is busy running the floor. Not the agency, which is busy optimising cost per lead. That list is the closest thing to free money in the fitness business, and working it properly is the fastest way to prove your value to a new gym client, fund their ad spend out of results rather than hope, and build a defensible position against every competitor still selling the same challenge funnel.
This post is about building that system in GoHighLevel. Not the theory of it — the actual segments, the actual SMS copy, the actual throttle settings, the reply routing, the show-up flows, and the 30-day nurture that turns a booked trial into a paying member. It is also about doing it once and reusing it, because rebuilding this from scratch for every gym you sign is the reason most fitness agencies stall at eight or nine clients.
Why is the dormant member list worth more than the next ad campaign?
Start with the arithmetic, because it makes the case better than any argument about strategy.
A gym running paid acquisition at a reasonable cost per booked appointment — call it forty to eighty dollars in a competitive metro like Los Angeles or Miami, less in a smaller market — needs real money and real time to produce fifty booked trials. There is the media spend itself, the two to three weeks of learning phase while the campaign finds its footing, the creative that has to be produced and refreshed, and the ongoing management. None of that is wasted; paid acquisition is how a gym grows past its own database. But it is slow to start and it costs money on day one.
Now run the same target through a dormant list. Two thousand four hundred contacts, sent as SMS at effectively fractions of a cent per message. A first-ever reactivation on a list that has genuinely never been worked produces a booking rate in the two to four percent range, which puts you at roughly fifty to ninety-five booked trials. Total media cost is somewhere in the region of twenty dollars. Total time from switch-on to first booking is minutes.
The gap is not marginal. It is a different order of magnitude, and it exists for one reason — these people are not cold. Cold traffic has to be convinced that this gym exists, that it is credible, that it is near them, that they should care. A lapsed member has already been sold on all of that. The only question left is whether now is the right time, and the honest answer for a decent slice of any lapsed list is yes, if someone would just ask.
There is a second, less obvious reason the dormant list matters more than it looks. It is a compounding asset. Every month a gym operates, it adds people to it — cancelled members, trials that never converted, challenge participants who finished and drifted, leads who filled in a form and ghosted the follow-up call. A gym doing even modest volume adds thirty to sixty names to its dormant pool every month without trying. If you build a system that automatically recycles those people back into a reactivation pool after a set dormancy period, you are not running a one-time campaign. You are installing a permanent second revenue channel that runs on inventory the gym generates as a by-product of normal operations.
That is the reframe worth internalising. Reactivation is not a stunt you run in month one to impress a new client. It is infrastructure.
What is actually in a gym's database, and why is it such a mess?
Before you can send anything, you have to understand what you are dealing with, and gym data is uniquely bad. Fitness businesses have historically used a rotating cast of member management platforms — Mindbody, Zen Planner, Wodify, PushPress, Glofox, ABC, and a long tail of regional systems — none of which were designed as marketing databases. Layer on a decade of front-desk staff typing names into whatever was in front of them, several ownership changes, a Mailchimp account somebody set up and abandoned, and a Facebook lead form that dumped into a spreadsheet nobody ever opened, and you get the typical picture.
When you first pull a gym's data you will usually find some combination of the following. Current active members, who must be excluded from every reactivation send with absolute reliability, because texting an active member a win-back offer is the single most embarrassing failure mode in this entire build. Former members who cancelled, with cancellation dates spread across five years. Trial or intro-offer participants who never bought. Challenge participants from previous campaigns. Raw leads who filled in a form and never showed up to anything. Duplicates, often the same person entered three times with three different phone number formats. Landlines, which will silently fail on SMS. Employees, family members of the owner, and at least one entry that is the gym's own front desk number.
Your job in the first week of any gym engagement is to turn that into something sendable. That means, in order — consolidate every source into one export, normalise phone numbers into E.164 format so GHL can actually dial them, deduplicate on phone number as the primary key rather than email, tag every contact with its source and its status, identify and exclude every active member, remove anything that looks like a business or landline, and honour every prior opt-out you can find evidence of.
That last point deserves emphasis. If the gym has ever sent SMS before, somebody has replied STOP, and those replies may live in a system you are not importing from. Ask directly. Get whatever suppression list exists. If none exists, that is itself a finding worth telling the client about.
The import into GHL should carry, at minimum, a custom field for the original member status, a field for the last-active or cancellation date, and a source tag. You will use all three to segment, and you will regret it if you import a flat list and try to reconstruct the segments later.
How did Torchlight Fitness Marketing turn 2,400 lapsed members into 68 booked trials?
Torchlight Fitness Marketing is a five-person agency serving nine gyms and studios — a mix of CrossFit-style boxes, two boutique strength studios, and a pair of larger independent big-box gyms. Their build is worth walking through in detail because it is not exotic. Everything they did is available in a standard GHL sub-account.
Their client for this particular campaign was an independent gym eleven years old, roughly four hundred and ten active members, with a member management system holding just under three thousand records once historical entries were included. After cleaning — deduplication, active member exclusion, landline removal, opt-out suppression — the sendable dormant list came to 2,400 contacts with valid mobile numbers.
They split those 2,400 into three tiers by recency, and this segmentation is the part most agencies skip.
Tier one was anyone whose last activity fell within the previous twelve months — cancelled members, expired intro offers, recent no-shows. That came to just under six hundred people. This is the warmest group by a wide margin; they remember the gym's current coaches, the current equipment, and possibly the current pricing.
Tier two covered thirteen to thirty-six months, about nine hundred contacts. These people remember the gym but not necessarily its current state. The messaging here has to acknowledge time has passed.
Tier three was everything older than three years, roughly nine hundred and fifty contacts. Lowest expected response, and the group where you are most likely to hit changed numbers and stale consent. Torchlight sent to this tier last, deliberately, after the first two tiers had validated the copy.
They ran tier one first, over two days at a throttle of one hundred messages per hour during local business hours only. Tier one produced 31 booked trials. Tier two ran across the next four days and produced 24. Tier three, run in the second week, produced 13. Total across eleven days from first send to the last booking on the tier three wave — 68 booked trials, from a list that had cost the gym nothing to acquire and had been sitting untouched.
The numbers underneath that headline are the more useful part. Roughly fourteen percent of the total list replied to something. That is around 336 conversations, which the gym's front desk handled over eleven days — meaningful work, but manageable at roughly thirty conversations a day. Of those repliers, the large majority were not bookings. They were "moved away", "I'm at another gym now", "how much is it these days", "I had knee surgery", "do you still have the 6am class", and a hundred variations of "maybe, tell me more". The 68 bookings came out of that conversational middle, not out of people replying YES to a broadcast.
Show-up rate on the 68 booked trials was 71 percent after the reminder flows were in place — 48 people who physically walked in. Of those, 29 converted to a membership within the following thirty days, most of them during or immediately after the 30-day nurture sequence rather than on the day of the trial itself.
Twenty-nine memberships at that gym's average rate, against a media cost under thirty dollars and roughly eleven days of elapsed time. That is the case for reactivation, and it is why Torchlight now leads every new gym pitch with it rather than with the challenge funnel.
What does reactivation SMS copy actually look like?
Here is where most campaigns die. The copy that works for reactivation looks nothing like the copy that works for cold traffic, and agencies that write it like an ad get a two percent reply rate and a filtered phone number.
The governing principle is simple. The message has to read like it was typed by a person at the gym, on their phone, to one specific human being. Not like a broadcast. Everything else follows from that.
Practically, that means the first message should be short — under a hundred and sixty characters if you can manage it. It should contain no link. It should contain no emoji, no all-caps offer, and no exclamation marks stacked up. It should be signed by a named human at the gym, because "Sarah at Ironside" gets replies and "Ironside Fitness" gets ignored. And critically, it should ask a question that a person can answer with one word without committing to anything.
A first message in the shape that works looks roughly like this:
Hey contact.first_name, it's Sarah from Ironside — random question, are you still training anywhere these days?
That is the entire message. There is no offer in it. There is no link. There is no ask. It works precisely because it does not feel like marketing, and because "no" is as easy to send as "yes" — which matters enormously, since a "no, I stopped years ago" reply opens a conversation that a good front-desk person can turn into a booking, whereas a message that only rewards a "yes" gets silence from everyone else.
The follow-up, sent to non-responders after two or three days, can be slightly more direct without becoming an ad:
Hey contact.first_name, Sarah again from Ironside. We've got a few free trial spots open this week and I thought of some of our old members. Want me to hold one for you?
Only in the third message, sent to non-responders roughly five days after the first, do you introduce anything resembling a concrete offer, and even then it should stay conversational and it should be the last message that person receives in this wave.
For tier two and tier three contacts, add an acknowledgement of the gap. Something along the lines of "it's been a while — we've changed a lot since you were last in" performs measurably better than pretending no time has passed, because the recipient's first internal objection is usually "that place is probably completely different now".
A few things to avoid, all of which are learned the expensive way. Do not put a link in message one — link-bearing first messages from an unfamiliar number are the classic filtering signature. Do not use the word "free" in the first message for the same reason. Do not send the same exact string to 2,400 people; use spintax or at minimum vary the message across segments so the carrier sees variation. Do not send outside 9am to 8pm local time, and be careful with timezone fields on imported contacts, because a badly set timezone will text somebody at 4am and that is how you lose a client. Include opt-out language on the first message of the sequence in whatever form your compliance posture requires.
And write the copy in the gym owner's voice, not yours. Have them read it out loud before you send. If they wince at a phrase, cut it — they know their members and you do not.
How fast should you send, and what throttle keeps the number alive?
Throttle is the single most consequential technical setting in the entire build, and the temptation to turn it up is constant.
The number to work with is 60 to 120 messages per hour per registered number, with a hard daily cap in the region of 400 to 600. Set this in the campaign or workflow settings rather than trusting yourself to manage it manually. In GHL you control this through the sending window and batching configuration on the workflow, and you should also set the workflow to respect contact timezone and to only send within defined business hours.
Three reasons the throttle matters.
First, carrier filtering. A brand new or lightly used number that suddenly emits two thousand similar messages in ninety minutes is indistinguishable from spam to carrier-level filtering systems, and the consequence is not a warning — it is silent non-delivery, where the platform reports messages as sent and nobody ever receives them. That failure mode is particularly cruel because everything looks fine in the dashboard.
Second, reply capacity. At a fourteen percent reply rate, two thousand four hundred messages generate around three hundred and thirty conversations. Send those in one afternoon and the gym's front desk gets three hundred inbound texts in three hours while also running the floor. They will not answer them. The conversations will go cold, and a cold reactivation reply is worse than no reply because that person now believes the gym ignored them.
Third, error recovery. If your copy is wrong, your merge field is broken, or your timezone handling is off, you want to discover that after three hundred sends, not after the whole list. Send the first two hundred, stop, read the replies, then continue. Torchlight builds a deliberate pause into every campaign after the first batch for exactly this reason, and it has saved them at least twice.
A 2,400 contact list at one hundred an hour across a nine-hour sending window takes about three days. That is not a delay to be minimised. That pace is the campaign working correctly.
On A2P 10DLC — register the brand and campaign properly before any of this, with an accurate use case and sample messages that match what you will actually send. Reactivation campaigns using unregistered numbers get throttled or blocked outright in the US, and the registration lead time means it has to be started in week one of onboarding, not the day before launch.
Where do the replies go, and who is supposed to answer them?
The answer is a named human at the gym, and the agency's job is to make that person's life easy rather than to replace them.
There is a strong temptation to automate reply handling, and it is the wrong instinct here specifically. Reactivation replies are unusually personal. People write back about injuries, pregnancies, divorces, job losses, a coach they didn't like, an argument about a billing dispute three years ago. An AI or a rigid keyword automation handling those messages does active damage to the gym's local reputation, in a business where local reputation is most of the moat.
What you build instead is the scaffolding around the human.
All inbound replies land in the GHL conversations inbox, assigned to a specific user — the front desk manager or whoever the gym designates as the responder. Not "the account", a named person, because unassigned inboxes get ignored.
An internal notification fires on every inbound reply during business hours, to that person's phone. Outside business hours, replies queue silently and the notification batches to the next morning.
An unanswered-reply timer runs on every inbound message. If a reply has sat for fifteen minutes during opening hours without a response, an escalation notification goes to the gym owner and to your agency's account manager. This single mechanism does more for campaign performance than any copy improvement, because response speed is the entire game — a reply answered in two minutes books at a dramatically higher rate than one answered in two hours.
Keyword handling covers only the unambiguous cases. STOP and its variants must be handled automatically and perfectly, removing the contact from every sequence and tagging them as opted out. A clear "wrong number" reply can auto-tag and suppress. Everything else goes to the human.
Give the responder a short reply playbook — not scripts to paste, but guidance on the six or seven common reply types and what a good response looks like for each. "I'm at another gym now" is not a dead end; it is an opening to ask what they like about it. "How much is it now" should never be answered with a bare price; it should be answered with a question about their goal and an invitation to come see the place. "I had surgery" gets sympathy and a note in the CRM to follow up in ninety days, and that follow-up should be an actual task created automatically, not a good intention.
Finally, every conversation that reaches a booking should end with the appointment created on the gym's trial calendar inside GHL, not written on a Post-it. If the front desk books people outside the system, none of the show-up automation downstream can fire, and you have rebuilt the leak you were hired to fix.
How do you get a booked trial to actually show up?
Booking a trial is halfway. Fitness no-show rates on free or low-cost trials are notoriously ugly — an unmanaged trial calendar commonly runs at forty to fifty-five percent attendance, meaning half the wins from your reactivation campaign evaporate between the booking and the door.
The reminder architecture that reliably pushes attendance into the seventy percent range has four parts.
The confirmation goes out immediately on booking, within seconds. It restates the day, the date, the time, and the address in plain text, and it asks for a one-word confirmation reply. Immediacy matters — a confirmation that arrives twenty minutes later feels automated, one that arrives instantly feels like the gym is on it.
The 24-hour reminder is the workhorse. It should include one practical detail that reduces anxiety about showing up, because the real reason people no-show a first gym session is rarely a scheduling conflict. It is nerves. Telling someone where to park, that they should bring a water bottle, that they will be met at the front desk by a named coach, and that the session is not a group class they will be thrown into cold — all of that measurably lifts attendance. Something like: Hi contact.first_name, you're booked in tomorrow at appointment.start_time with Coach Danny. Park in the lot behind the building, bring water, and just ask for Danny at the desk — he'll take you through everything. See you then.
The 2-hour reminder is short and gives a genuine out. Counterintuitively, offering an easy reschedule increases net attendance, because the alternative to a reschedule is not attendance — it is silence. A message reading "See you at 5:30 — reply R if you need to move it and I'll sort it" converts a fraction of would-be ghosts into rebooked appointments you keep.
The no-show recovery fires within an hour of a missed appointment, and its tone is the whole thing. No guilt. No "we missed you and the coach was waiting". Just an assumption that life happened and an easy door back in. Roughly a fifth of no-shows will rebook off a well-written recovery message, and those rebooked sessions convert at close to normal rates.
Behind all four, the calendar configuration has to be right. Set a minimum scheduling notice so nobody books a slot fifteen minutes out that no coach is staffing. Set buffer time between trial slots. Cap daily trial appointments to what the gym can genuinely deliver well, because ten trials in a day at a gym staffed for four produces a terrible experience for all ten. And make sure the appointment outcome — showed, no-showed, cancelled — is actually being marked in GHL, because every downstream automation and every line of your reporting depends on that status being accurate.
What has to be in the 30-day new-member nurture?
Here is the part that separates a reactivation campaign from a reactivation business. Torchlight's 68 bookings produced 48 attended sessions and 29 memberships, and the memberships came from the nurture, not the trial.
The default gym behaviour after a trial session is a sales conversation on the day and then silence. If the person says "let me think about it", they are gone, because nothing follows. The 30-day nurture exists to occupy that thinking period.
It runs on two tracks depending on the trial outcome, and it should start the same day.
For someone who attended but did not join, the sequence is a slow, low-pressure drip across thirty days. Day zero is a personal thank-you from the coach who ran the session, referencing something specific if the coach noted it. Day two is a piece of genuine value — a mobility video, a nutrition guide, something useful whether or not they ever join. Day four is social proof in the most persuasive form available, which for gyms is a member story from someone demographically similar to the recipient. Day seven asks a direct but soft question about what is holding them back, and routes the reply to a human. Day twelve addresses the most common objection surfaced in that gym's sales conversations, usually price or intimidation. Day eighteen offers a second no-pressure session or a class pass. Day twenty-five presents the offer directly with a reason to act. Day thirty moves them into the long-term nurture pool rather than dropping them entirely.
For someone who joined, the thirty days are about retention, and this is the track most gyms have never built at all. New member churn is front-loaded — the people who quit mostly quit in the first sixty to ninety days, and the pattern that predicts it is attendance dropping off in weeks two and three. The onboarding nurture should welcome them, get them booked into their next three sessions rather than leaving it to chance, introduce them to the coaches and the community, check in at day seven with a real question, celebrate a milestone at day fourteen, and prompt a review request around day twenty-one when enthusiasm peaks. If the gym's member management system can push attendance data into GHL — and many can, through native integrations or a webhook — the highest-value automation in the entire account is an alert when a new member has not attended in seven days. That is churn becoming visible while it is still fixable, which is the one thing gym owners consistently say they wish they had.
Which leads to the win-back loop. Cancelled members should not disappear into the void; they should be tagged, held for a dormancy period of ninety to a hundred and twenty days, then automatically enter the reactivation pool. That is how the system becomes self-feeding, and it is why the second year of a gym engagement takes less work than the first.
Where does the challenge funnel actually fit?
None of this argues against the six-week challenge. It argues about sequence.
Run reactivation first, in week one or two of the engagement, before a single dollar of ad spend. Three things happen. The client sees results almost immediately, which buys you enormous latitude for the slower work that follows. The gym's staff get practice at handling inbound leads and booking trials before the volume from paid traffic arrives — training on live but forgiving inventory. And the revenue from reactivated memberships can fund the ad budget, which reframes the entire conversation from "spend money on a promise" to "reinvest money you just made".
Then build the acquisition side. The lead-magnet or challenge funnel, the paid traffic, the same trial calendar, the same reminder flows, the same nurture. Note that most of the machinery is already built — the calendar, the show-up sequence, the 30-day nurture, the review requests, the reporting all serve both channels. The incremental work of adding paid acquisition on top of a completed reactivation build is far smaller than building it standalone.
The two channels also cover each other's weaknesses. Reactivation is high-yield but finite; you cannot run it monthly on the same list. Paid acquisition is infinite but expensive. Running both means the gym has a floor under its lead flow that does not depend on the ad account staying healthy, which matters more than it sounds like it does when a fitness ad account gets restricted for a before-and-after image.
How do you build this once instead of rebuilding it for every gym?
The reason most fitness agencies stall between eight and twelve clients is not sales. It is that client nine takes exactly as long to build as client one, because nothing was made reusable.
The fix in GoHighLevel is the snapshot, and it should contain everything that is genuinely common across gym clients. The reactivation workflows with all three tier variants. The trial booking calendar with correct notice, buffer, and cap settings. The full show-up reminder sequence including no-show recovery. The 30-day nurture in both branches. The win-back loop with its dormancy timer. The review request flow. The pipeline with gym-specific stages — reactivation reply, trial booked, trial attended, membership sold, cancelled. The custom fields for member status, last-active date, dormancy tier, and source. The tag taxonomy. The reporting dashboard. And the standard forms and lead-magnet funnel pages in a neutral skin.
What deliberately stays out of the snapshot is anything genuinely client-specific — the actual copy voice, the pricing, the coach names, the class schedule, the local details. Those become a documented onboarding intake, filled in once per client, and applied on top.
The discipline that makes snapshots work is versioning. Improvements found on client seven have to flow back into the master snapshot, or you end up with nine divergent builds and no idea which one is current. Keep the master in a dedicated build sub-account that no client touches, make changes there, test them there, then push. Keep a changelog. It sounds bureaucratic for a five-person agency; it is the difference between fifteen clients being manageable and fifteen clients being a nightmare.
Done properly, a new gym client goes from signed to live in three to five days rather than three to five weeks, and the marginal cost of the tenth client drops far below the first. That is what makes the $750 to $1,500 setup fee profitable rather than a loss leader.
What does the January surge playbook look like?
January is not a busy month. It is a different business operating under the same roof for six weeks, and it should be planned in November.
Demand in the first three weeks of January runs at multiples of a normal month. Trial bookings spike, the sales team gets overwhelmed, show-up rates paradoxically get worse because a chunk of January bookers are acting on a resolution rather than a decision, and the gym signs a cohort of members who will disproportionately churn in February and March if nobody manages them.
The prepared playbook has five parts.
Reactivation waves are scheduled in advance, not improvised. The first wave goes out between Christmas and New Year, when people are at their most reflective and least busy — this is genuinely the highest-response window of the entire year for a fitness reactivation message. Subsequent waves run in the first and second weeks of January. Build and load all of them in November while there is time to think.
Calendar capacity is expanded before the surge, not during it. Extra trial slots, extra coach coverage, and a raised daily cap — but raised only to what can be delivered well, because a bad January trial experience wastes the best lead flow of the year.
The reminder cadence tightens. January no-show rates are worse than any other month, so add a same-morning reminder on top of the standard sequence for bookings made during the surge, and make the reschedule offer more prominent.
The surge cohort gets its own onboarding track. These members joined on motivation rather than considered decision, which means the week-two and week-three attendance drop is steeper and the sixty-day churn risk is higher. A tighter check-in cadence and a hard-coded alert on any seven-day absence is what keeps a February cancellation wave from happening.
And there is a week-six plan, because the resolution cohort's motivation reliably collapses somewhere around the middle of February. A re-engagement push aimed specifically at January joiners who have gone quiet, before they call to cancel, recovers a meaningful share of them. Gyms almost never do this. It is one of the easiest wins available.
The summer-cut surge in April and May follows the same shape at lower amplitude, and September has a smaller back-to-routine bump. Build the January system properly and the other two are configuration changes rather than new work.
What should a solo gym SMMA operator build first?
If you are running this on your own — one person, a handful of gym clients, a $750 to $1,500 setup and $300 to $600 a month per account — the advice above needs compressing, because you do not have Torchlight's five people.
Lead with reactivation, and consider making it your entire opening offer. It is the best possible first engagement for a solo operator for reasons that have nothing to do with cleverness. There is no ad account to manage, which means no daily budget babysitting, no creative refresh treadmill, no 11pm message about a disapproved ad, and no risk of being blamed for a platform restriction outside your control. The result arrives in days rather than weeks, which shortens the anxious period at the start of a new client relationship. And it is a genuinely differentiated pitch in a market where every competitor is saying "six-week challenge".
Sell it as a fixed-scope first project. A database audit and clean, a segmented reactivation campaign, a trial calendar with show-up flows, and a 30-day nurture, delivered in two weeks for a setup fee at the upper end of your range. Then the retainer covers running the campaigns, monitoring reply handling, maintaining the automations, and monthly reporting.
Build your snapshot on client one, even though it feels premature. Especially on client one. The temptation when you have a single client is to build directly in their sub-account because it is faster. It is faster once. Build it in a master sub-account, push it to the client, and you have an asset. Build it in the client's account and you have a job.
Be honest about what you will not do. A solo operator should not be answering reactivation replies for six gyms. That is the client's job, and your job is to set up the routing, train their front desk person, write the reply playbook, and monitor the response-time escalations. Selling reply handling as part of a $400 a month retainer is how solo operators end up chained to a phone.
Cap your client count deliberately. Six to eight gym accounts on a well-built snapshot is comfortable for one person. Twelve is not, and the failure mode is not dramatic — it is a slow decline in responsiveness that costs you two clients before you notice.
And pick a niche within the niche if you can. CrossFit boxes, boutique strength studios, and big-box independents have meaningfully different member behaviour, pricing, and language. Serving one type deeply makes your snapshot sharper, your copy better, and your referrals more frequent, because gym owners talk to other gym owners who run the same kind of gym.
What reporting actually proves the value?
The reason gym clients churn from agencies is rarely bad results. It is invisible results. A gym owner who cannot see what happened assumes nothing happened.
The monthly report for a gym account needs six numbers, and they should be the same six every month so the trend is legible.
Messages sent and delivered, with the delivery rate visible — this is your early warning on number health, and a delivery rate sliding from 97 to 88 percent is a problem to catch before it becomes silent failure.
Replies received, and the median time to first response. That second number is the one that changes behaviour at the gym, because it is the gym's own performance rather than yours, and showing it monthly is the most effective way to keep reply handling fast.
Trials booked, broken out by source so reactivation and paid acquisition are visible separately.
Trials attended, with the show-up percentage. This is where the reminder flows justify themselves.
Memberships sold, attributed to source, and where possible the revenue figure.
And churn — cancellations in the period, plus the number of members currently flagged as at-risk by the attendance alert. Including the at-risk number is what turns the report from a scoreboard into a tool, because it gives the gym something to act on this week.
Build it once in the GHL dashboard so it populates automatically, and put a two-paragraph plain-English commentary on top of it every month. The commentary is what gets read. The numbers are what make the commentary credible.
Where do you start this week?
If you have an existing gym client, the fastest path to a result is to ask them for a full export from their member management system — everything, not just current members — and spend a day understanding what is in it. Most agencies have never asked. The size of the dormant list is usually a surprise to the gym owner as much as to you.
If you are pitching a new gym, ask the question in the sales conversation. How many people have been members here since you opened? Almost nobody knows the answer, and watching an owner estimate two thousand out loud is a more effective pitch for reactivation than any deck.
Then build in this order — A2P registration first because it has lead time, database clean and segmentation second, trial calendar and show-up flows third, reactivation sequence fourth, 30-day nurture fifth. That order matters, because launching a reactivation campaign into a calendar with no reminder flows converts a win into a pile of no-shows, and there is no faster way to lose a gym client than to book them fifty trials that nobody attends.
Everyone in this market is selling the same challenge funnel. The gyms you want to work with are already sitting on the asset that outperforms it, and they are not using it because nobody has ever built them the system to do so. That is the opening.
If you would rather have the entire gym snapshot — reactivation sequences, trial calendar, show-up flows, 30-day nurture, win-back loop, review requests, and per-client reporting — built once and pushed into every client account you sign, that is exactly what GHL Spark does. Setup runs $750 to $1,500 depending on complexity, with ongoing management from $300 a month, and the first thing we build is always the dead list.
Frequently asked questions
Is it legal to text people who used to be members but haven't heard from the gym in three years?
How many messages per hour should a reactivation campaign send?
Who answers the replies — the agency or the gym?
Doesn't a reactivation campaign only work once?
What is a realistic booking rate on a dormant gym list?
How is this different from the six-week challenge funnel every gym agency sells?
Can a solo operator build this without a team?
What happens in January when every gym gets slammed at once?
About the author

Farhad
Founder, GHL Spark
Farhad is the founder of GHL Spark, where he builds and white-labels GoHighLevel SaaS platforms for agencies and SaaS operators. He writes about the parts of GoHighLevel that actually break in production — A2P registration, onboarding, support load and automation.