Here is the short version: when a gym looks full but the money is flat, it is almost never a demand problem. It is a leak problem. Revenue escapes through six quiet holes at once: you track attendance instead of revenue per member, gross churn hides behind net member count, discounts and comps drag your average price down, failed cards go uncollected, your cheapest unlimited plan eats your prime-time spots, and nobody ever moves up to pay you more. Every one of these can be busy and unprofitable at the same time. The fix is not more traffic. It is plugging the leaks you already have.
It is 6:15pm on a Tuesday and the floor is loud. Every rower is taken, the class waitlist has three names on it, and the front desk has not stopped moving since four. You walk past all of it, sit down, and open your bank account, and the number does not match the room. Last month was busy too. So was the one before. The schedule keeps looking healthy and the account keeps looking tired, and the two facts refuse to line up.
Most owners react by chasing more. More leads, more ads, more classes on the calendar. Sometimes that is the answer. Usually it is not, because a gym this full does not have a top-of-funnel problem. It has a leak. Money is coming in the front and slipping out through gaps you cannot see from the floor, and pouring more in the top just runs more water past the same holes. This post is the six holes, how to spot each one in your own numbers, and what to do about it.
Table of contents
- Busy and broke: why the two numbers do not match
- Leak 1: You track attendance, not revenue per member
- Leak 2: The leaky bucket hides behind your member count
- Leak 3: Discount and comp creep
- Leak 4: Failed payments you never chase
- Leak 5: Your cheapest plan eats your prime-time capacity
- Leak 6: No ascension path, so nobody ever pays you more
- The same six leaks at three sizes
- Steal this: the messages that plug the leaks
- The compliance wrinkle on raising prices and auto-renewals
- Objections operators raise
- FAQ
Busy and broke: why the two numbers do not match
Start with the honest version of the problem. A full schedule measures one thing: demand for your time slots. That is real and it is good. But demand for a spot is not the same as revenue collected, and the distance between those two is where independent gyms quietly lose money.
Think about what “full” actually rewards. A class fills whether the person in it pays $180 a month or $59 on an old promo rate, whether their card cleared this month or bounced, whether they are a paying member or a friend on a comp. The room looks identical either way. Your revenue does not. So the floor can be at capacity while the money that should come with that capacity leaks out in six specific places, and because none of them show up on the schedule, you can run this way for years without seeing it.
This is also why “get more members” is usually the wrong first move. Acquisition is the most expensive way to grow, and if your gym leaks, every new member you buy leaks too. You have holes in the bucket, not a filling problem, and the rest of this post is a tour of them in the order they usually cost the most.
Leak 1: You track attendance, not revenue per member
The first leak is a measurement problem, and it sits underneath the other five. Most owners can tell you their member count and their class attendance to the person. Almost none can tell you their revenue per member, which is total collected revenue divided by active members. That single number is the one that actually tracks whether “busy” is turning into money.
Here is why it matters. Two studios both carry 300 members. One averages $150 a month per member and collects $45,000. The other averages $105 and collects $31,500. Same member count, same full-looking classes, and a $13,500 monthly gap, which is $162,000 a year. The member count is identical and completely useless for telling them apart. Revenue per member is the whole story.
How it breaks. When you steer by attendance, you optimize the thing that feels like success (a packed room) instead of the thing that pays rent (collected dollars per member). You add classes to relieve a waitlist, which spreads the same revenue over more instructor hours and quietly lowers your revenue per available spot. Busy goes up. Margin goes down.
What to do. Once a month, pull two numbers: total collected revenue (not billed, collected) and active paying members. Divide. Track that number over time. If it is flat or falling while your member count holds or rises, one of the next five leaks is open. This one number turns “we feel busy” into “here is what busy is worth,” and it is the dashboard the other leaks show up on.
Leak 2: The leaky bucket hides behind your member count
The second leak is the most famous and the most ignored. Your member count is a net number. It is everyone who joined minus everyone who left, and that subtraction hides a lot.
Say you hold steady at 300 members for six months. Feels stable. But if you signed 20 and lost 20 every month, you did not have a stable business. You had a leaky bucket that you refilled with a hose. You spent real acquisition money on 120 new members over those six months just to end where you started, and the “flat” member count made it invisible. The classes stayed full the whole time, because a full class does not care whether it is the same faces or a rotating cast.
And a rotating cast is expensive. Acquiring a new member (ads, trials, staff time, first-month discounts) costs far more than keeping one you already have, so every avoidable exit is a bill you pay twice: once to lose them, once to replace them. When that replacement spend hides inside a flat net count, it looks like a marketing cost of doing business instead of the retention problem it actually is.
How it breaks. When you only watch net member count, churn is invisible until it outruns your ability to refill. You keep signing people, the top line looks flat, and you never notice that acquisition spend is going entirely to replacement instead of growth. Then one slow month the hose slows down, the leak does not, and the count falls off a cliff that was there all along.
What to do. Split the number in two. Every month, write down gross new members and gross lost members separately, not just the net. If you signed 18 and lost 16, your real story is “we are running hard to net two,” not “we grew by two.” Most of that loss is preventable, and catching it early is the whole game. We wrote the early-warning version of this in stop silent churn before it hits your billing report, and the reason members drift in the first place in why members quit after three months.
Leak 3: Discount and comp creep
The third leak is the one owners create themselves, one kind gesture at a time. A founding-member rate you never sunset. A friend of a coach who trains free. A “just for you” hold on a cancellation. A promo price from three Januaries ago that a hundred members are still paying. None of it feels like lost money in the moment. Together it is one of the biggest drags on revenue per member in the building.
Here is the math that makes it real. If your list price is $150 but your collected average is $118, a third of your revenue per member has leaked into discounts, legacy rates, and comps, and your classes look exactly as full as if everyone paid rack rate. That gap is pure margin you already earned the demand for and gave away.
How it breaks. Discounts compound silently. Every retention “save” at a lower rate, every legacy price you grandfathered, every comp becomes permanent because nobody ever audits them. The list price on your website climbs with the market and your actual collected average sits still, so you look premium and get paid budget.
What to do. Run a comp-and-discount audit twice a year. Export every active membership with its actual billed rate, sort low to high, and look at the bottom of the list. For each below-rack member, decide: sunset the promo with notice, migrate them to a current plan, or keep it on purpose because that person genuinely earns it (a founding member, a true referral engine). The goal is not to be ruthless. It is to make every discount a decision instead of an accident. Raising your collected average even $10 a member is one of the fastest revenue moves you have, and it lands harder than a discount cut because you already have the members.
Leak 4: Failed payments you never chase
The fourth leak is money you already earned that never reaches your account, and it is the one most gyms do not even measure. A member’s card expires. A bank flags a recurring charge. A balance runs short on the 1st. The charge fails, your software marks it “past due” in a report nobody opens, and that member keeps training on a membership you are no longer collecting. They did not quit. You just stopped getting paid, and neither of you noticed.
This is called involuntary churn, and it is different from someone deciding to cancel. The member still wants to be there. The only thing broken is a payment method, and that is the easiest thing in the world to fix if anyone actually reaches out. The card processor takes its cut on every successful charge (Stripe’s standard US rate is 2.9% plus 30 cents per successful transaction), but a failed charge earns you nothing at all, which is the worst outcome: a member using the gym for free.
How it breaks. Failed payments are silent by design. The member does not get an angry letter, so they do not know. You do not get a cancellation, so you do not know either. The revenue just quietly does not arrive, month after month, and because the person is still showing up the schedule tells you everything is fine. A gym can leak several percent of monthly revenue this way and never feel it.
What to do. Build a dunning sequence, which is just a polite, automatic series of messages that recover a failed card. The moment a payment fails, the member gets a friendly text and email with a one-tap link to update their card, then a reminder a couple of days later, then a short pause-before-we-suspend note. No front-desk chase, no awkward conversation, no member using the place free for a month. This is the highest-ROI automation a busy gym can turn on, because the revenue is already yours: you are recovering money you earned, not selling anything new. We laid out the full sequence in the failed-payment recovery playbook for gyms.
Leak 5: Your cheapest plan eats your prime-time capacity
The fifth leak is about your most valuable resource: the 5pm to 7pm block, or the Saturday 9am, or whatever your peak hour is. Capacity in those slots is finite and it is the most expensive real estate you own. The leak is when your lowest-revenue members are the ones filling it.
Picture a studio where the popular 6pm class seats 20. If twelve of those seats are unlimited members on an old $89 plan and the current rate is $159, your best hour is generating your worst revenue per spot, and it is also the hour where a full-price prospect gets told “sorry, that one’s booked.” You are turning away high-value demand to serve low-value members in the exact slot where the difference costs the most.
How it breaks. Flat-rate unlimited plans decouple what a member pays from what they cost you to serve. A member who comes twice a week and one who comes six times pay the same, but the six-times member consumes three times the capacity in your scarcest slots. Your most engaged, lowest-per-visit members crowd out paying demand, and you never see it because “the class is full” reads as success.
What to do. You do not need to punish loyal members. You need your pricing to reflect scarcity. Options that work: a peak versus off-peak structure so prime slots carry a small premium or require a higher tier, reserved capacity in peak classes for full-rate tiers, or class-pack pricing for the highest-frequency members whose per-visit economics do not work on flat unlimited. The point is to stop letting your cheapest plan silently control your most expensive resource. Even shifting two peak seats per class from legacy to current pricing changes your revenue per available spot without adding a single class to the calendar.
Leak 6: No ascension path, so nobody ever pays you more
The last leak is the growth you never build. Most gyms have exactly one thing to sell: the membership. A member joins, pays the same amount every month for two years, and the only two directions available are “stay” or “cancel.” There is no way for your most engaged, happiest members to give you more money, even though they want to and would benefit from it.
That is a leak because your best members are your cheapest, highest-intent buyers, and you are leaving their budget on the table. The person who never misses a 6am is not looking for the exit. They are looking for the next thing, and if you do not sell it to them (nutrition coaching, a personal-training block, an event) they go buy it from someone else.
How it breaks. With no ascension path, revenue per member is capped at the membership price on day one and can only fall from there through the discounts in Leak 3. Your relationship deepens over two years while the amount they pay stays flat, so all that goodwill generates no additional revenue, and the members most likely to buy more are the ones you never ask.
What to do. Build one rung above the membership and one beside it. Above: a premium tier (small-group coaching, priority booking, programming, a hybrid in-person and app offer). Beside: paid add-ons your members already want (personal-training packs, nutrition coaching, a paid challenge series, form-check or accountability check-ins). You do not need ten products. You need one clear next step that a happy member can say yes to, offered at the moment they are most engaged, which is usually 60 to 90 days in once results start showing. Higher member lifetime value comes from members who spend more and stay longer, and ascension is how you build both.
The same six leaks at three sizes
The leaks are universal. Which ones bleed the most, and what you do about them, changes a lot with the size of the operation. Every figure below is illustrative. Run your own.
The solo trainer or small PT team (20 to 100 clients)
Your revenue per client is high and your client count is low, so a single leak is expensive and a single fix is powerful. The two that hurt most are failed payments (one uncollected $200 client is a real dent) and no ascension (you are the product, so packages, semi-private slots, and online add-ons are your only way to grow revenue without adding hours you do not have). The leaky bucket matters less at your size because you know every client by name, but comp creep is sneaky: the “friend rate” you gave three years ago is a meaningful slice of a 40-client book. Audit it.
The boutique studio (80 to 250 members, 2 to 8 instructors)
This is where all six leaks run at once and where prime-time capacity (Leak 5) and discount creep (Leak 3) do the most damage, because your model lives and dies on class fill and average rate. A studio that looks packed at 180 members can be $20 to $40 below rack on a third of them and giving away its best seats to legacy unlimited members. Fixing the pricing structure and auditing comps can lift revenue per member 10 to 20 percent with the same full classes. Track revenue per member monthly and it will show you which leak is open.
The mid-size or multi-location gym (250 to 500-plus members)
At your volume the percentages bite hardest. A few percent of failed payments across 400 members paying $110 is thousands of dollars a month leaking silently, and the leaky bucket is your defining risk because at this size churn is measured in dozens of members, not a handful. You cannot know every member, so you need systems: automated dunning, gross-versus-net churn tracking, and lifecycle touches that catch at-risk members before they ghost. This is the size where the difference between “full” and “profitable” is entirely a systems problem, and where doing the break-even math usually reveals you need far more members than the floor makes it feel like.
Illustrative revenue per member for a boutique studio: the list price, the actual collected average once discounts, comps, and failed payments are counted, and a realistic target after auditing comps, recovering failed cards, and fixing prime-time pricing. The gap between the first two bars is money the full schedule hides.
Steal this: the messages that plug the leaks
The leaks close faster when the follow-up is written and automatic instead of something the front desk means to get to. Copy these, change the names, and load them into whatever runs your messaging. They are the exact texts that recover the revenue a busy schedule hides.
The failed-payment recovery text (send the moment a card fails):
Hey [First name], quick heads up: the card on file for your [Studio] membership didn’t go through this month. No stress, it’s usually just an expired card. You can update it in 20 seconds here: [link]. Thanks! [Coach]
The failed-payment reminder (two days later, if still unpaid):
Hi [First name], just following up so your membership doesn’t get interrupted. The last payment didn’t process. Tap here to update your card: [link]. Reply here if anything’s weird with it and I’ll sort it out.
The comp-and-legacy-rate migration note (when sunsetting an old rate, with notice):
Hi [First name], you’ve been with us since the early days and we appreciate it. We’re updating our membership plans on [date]. Your rate will move from [old] to [current], which unlocks [what they gain]. Nothing changes before then, and I’m happy to walk you through the options. Questions? Just reply.
The ascension offer (send around day 60 to 90, when results are showing):
[First name], you’ve been crushing it, [specific: 18 classes last month / hit your first pull-up]. A few members at your level are moving into [premium tier / small-group coaching / a PT block] to [next goal]. Want me to hold you a spot? Here’s what it looks like: [link].
The reactivation text (for the gross-churn members slipping away):
Hey [First name], we’ve missed you at [Studio], it’s been a few weeks. Everything ok? If life got busy, no judgment, want me to help you get back on the calendar this week? First class back is on me.
That last one matters because catching a member on the way out is far cheaper than replacing them. The full win-back sequence, including the timing and the offers that convert lapsed members, is in gym win-back campaigns. And if leads are also slipping before you follow up, the same automatic-response logic applies to new inquiries, which we cover in speed to lead for gyms.
The compliance wrinkle on raising prices and auto-renewals
Two of the fixes above (auditing legacy rates and lifting your collected average) mean changing what members pay, and recurring billing is governed by law, so a quick note before you touch anyone’s rate.
First, clear up a myth. A lot of operators believe the federal government now forces a one-click cancel button and strict notice rules on every membership. Check the date. The FTC’s “click-to-cancel” Negative Option Rule was vacated by the Eighth Circuit on July 8, 2025 before it ever took effect, and there is no federal click-to-cancel rule in force in 2026 (Crowell & Moring).
That does not mean anything goes. Auto-renewal and recurring billing are governed by state law, and more than half of states have automatic-renewal statutes, with California’s Automatic Renewal Law among the strictest. The through-line for a gym raising rates is simple: give clear advance notice of any price change, keep cancellation genuinely easy, and get clean consent on the billing terms. That protects the exact thing this post is about, your collected revenue, because sloppy consent turns into disputes and chargebacks, and a chargeback is worse than a member who never paid: you lose the payment plus a dispute fee. The full breakdown of what actually applies is in gym membership cancellation and auto-renewal law in 2026. None of this is legal advice; check your own state’s rules before you change contract terms.
Objections operators raise
“Won’t auditing discounts and raising rates make members angry and cause churn?” It can if you do it badly. Done with notice, a clear reason, and something gained, rate changes rarely spike churn, because the members on legacy rates are usually your most loyal and least price-sensitive. The bigger risk is the opposite: never touching it and slowly going broke while looking full. Migrate gradually and grandfather the handful who truly earn it.
“Isn’t chasing failed payments going to feel aggressive?” The opposite, when it is done right. A friendly automatic text that says “your card didn’t go through, here’s a link to fix it” is a favor, not a demand. Members are embarrassed, not offended, when a card expires, and most fix it in minutes if you make it easy. The aggressive move is silently suspending someone or letting them rack up a balance they did not know about.
“I already pay for gym software that shows my revenue. Why do I need anything else?” Your management platform shows you billed revenue and a member count. It does not chase the failed cards, audit your comps, text a slipping member before they ghost, or trend revenue per member over time. Those are the actions that plug the leaks, and at most gyms nobody has time to do them by hand. Keep the tool that runs your front desk, and add the layer that keeps members and collects what you are owed.
“Do I need to be technical to set any of this up?” No. Every leak here closes with a message and a trigger: when a card fails, send this; on day 60, send that; every month, pull these two numbers. Build it yourself over a few weekends or have it installed done-for-you. Either way the work is deciding the rules, not writing code.
The bottom line
A full schedule is a good problem to have and a terrible thing to steer by. It proves demand and hides everything about whether that demand becomes money. The six leaks all run at once, all invisibly, and all get worse the busier you are.
The fix is not more traffic. It is plugging what you already have. Start with the one number that exposes the rest: pull collected revenue and active members this week and divide. Then chase the failed cards, audit the discounts, fix the prime-time pricing, and give your best members a way to pay you more. The room stays just as full while the account finally catches up to it.
Go back to that 6:15pm Tuesday. The floor was not lying and neither was the bank balance. Both were true at once, because “full” and “paid” are different numbers, and nobody had gone looking for the gap between them. Now you know where to look.
Frequently asked questions
Why is my gym busy but not making money?
A full schedule measures demand for your time slots, not collected revenue. A gym can be at capacity while money leaks out through six common gaps: tracking attendance instead of revenue per member, gross churn hidden behind a flat net member count, discounts and comps dragging down your average rate, uncollected failed payments, cheap unlimited plans filling your prime-time capacity, and no way for engaged members to pay you more. Because none of these show up on the schedule, you can run this way for years. The fix is plugging the leaks, not adding more members.
What is revenue per member and how do I calculate it?
Revenue per member is your total collected monthly revenue divided by your active paying members. Use collected revenue, not billed, because failed payments and discounts mean you collect less than you invoice. Two gyms with the same member count can be thousands of dollars apart in revenue per member, so it is a far better health signal than member count alone. Track it monthly, and if it falls while your member count holds, you have an open leak.
What is involuntary churn and how much does it cost a gym?
Involuntary churn is when a member stops paying not by choice but because a payment failed, usually an expired card, a bank flag, or insufficient funds. The member still wants to be there and often keeps attending, so it is invisible from the floor. A gym can leak several percent of monthly revenue this way without noticing. The fix is a dunning sequence: an automatic, friendly series of texts and emails that prompt the member to update their card the moment a charge fails.
Should I raise prices on members who are on old discounted rates?
Usually yes, done carefully. Legacy and promo rates compound into a large drag on revenue per member, and the members on them are often your most loyal and least price-sensitive. Give clear advance notice, explain what they gain, migrate gradually, and grandfather the few who genuinely earn a special rate. Rate changes handled this way rarely spike churn, and lifting your collected average even $10 per member is one of the fastest revenue moves available because you already have the members.
Is there a federal click-to-cancel law I have to follow in 2026?
No. The FTC's click-to-cancel Negative Option Rule was vacated by the Eighth Circuit on July 8, 2025, before it took effect, and there is no federal click-to-cancel rule in force in 2026. Auto-renewal and recurring billing are governed by state law instead, and more than half of states have automatic-renewal statutes, with California's among the strictest. Give clear notice of price changes, keep cancellation easy, and get clean billing consent. This is general information, not legal advice.
Do I need more members or better systems to make my full gym profitable?
Almost always better systems. If your gym already looks full, you have demonstrated demand, so acquiring more members is the most expensive way to grow and, if the gym leaks, the new members leak too. Focus first on retention, payment collection, pricing, and ascension. Those move the money faster and cheaper than another ad campaign, and they work on the members you already have.
Written by Divya Kapoor, Member Retention & Lifecycle Specialist. Divya ran member experience for a three-location boutique pilates and yoga group before building retention systems full-time. She is the person who noticed that silent churn, not formal cancellations, was eating most of her studios’ revenue, and she writes about the unglamorous data work that keeps studios full and paid.
