
In late May the worst number in my app's business was trial conversion. 20.7% of free trials were becoming paying subscribers. The industry median for Health & Fitness apps is 39.9%, so I was converting at about half the going rate, and the trend was down — my April and May weekly cohorts ranged from 8% to 25%.
Five weeks later the last four fully-resolved weekly cohorts converted at 37.5%, 37.5%, 57.7%, and 43.3%. Blended that's 44%, 46 paid out of 104 trials. MRR went from $634 to $925 over the same stretch, up 46%, with zero dollars of ad spend behind any of it.
This is what I changed, in order.
The Worst Number in the Business
Some context on how I got here. Back in March my trials converted at 28 to 43% a week. Those were small, warm cohorts — 13 to 23 trials a week, almost all organic. Then I started spending real money on ads, volume went up, and conversion fell off a cliff. One April cohort converted at 7.7%. Thirteen trials, one payer.
I killed the ads in mid-May because the unit economics were hopeless (that's its own post, linked above). But the conversion problem remained, and when I benchmarked it against RevenueCat's subscription benchmarks it was the single biggest gap between my app and a healthy one. Retention was at or above benchmark. Churn was normal. Conversion was half of median.
So the plan for June was one line: fix trial conversion.
The Paywall Work
Three moves in the first week of June.
I put the Pro features back behind the paywall. While building fast I'd accidentally made two Pro features free and never noticed — free users were getting a recovery dashboard and a weekly summary for nothing. I put them back behind Pro and fixed a broken gate on a third. If the free tier already gives you the good stuff, the trial has nothing to sell.

The new paywall: $3.33/mo framing, features first. 30.1% of viewers start a trial vs 24.1% on the old one.
I A/B tested a new paywall. My old paywall mostly explained how the 7-day trial works. The new one leads with what upgrading actually gets you — Deep Dive reports on every check-in, precision body fat, the Coach — and shows the yearly plan as $3.33 a month instead of $39.99 a year. Same price, different frame. As of July 5 the new paywall converts 30.1% of views into trial starts (58 of 193) vs 24.1% (46 of 191) for the old one. That's +6 points absolute, but with an 88.9% chance-to-win it is not statistically significant yet, so I'm not calling it. Decision date is end of July.
I kept building feature-specific paywalls. Instead of one generic gate, every premium feature now shows a real, partially-unlocked preview of itself. Tap into a muscle comparison as a free user and you see your actual before/after muscle map with the detailed breakdown blurred behind the upgrade button. Open the Coach and you get a real sample answer built from your own numbers before the ask. The pattern: show the thing, lock the depth.


Feature-specific paywalls: your real muscle comparison with the breakdown locked, and the Coach showing a real answer before the ask.
What the Data Said About Who Pays
One detour worth a paragraph before this section: to trust any of the numbers below I first had to fix my tracking. My analytics had logged 10 trial conversions in 120 days while RevenueCat had counted about 48 — a wrong-flavor API key silently failing plus two event bugs. A week and a half of unglamorous plumbing that moved nothing by itself, but every readout below exists because of it.
With conversions visible per-user, I joined the payment records to behavior data (332 of 374 subscribers matched) — the same read-your-data-before-building habit that's saved me before — and got the findings that shaped everything after:
- The check-in habit is the payer signature. 43% of eventual payers had checked in on 2 or more days, vs 13% of people who never paid.
- Photo volume is the strongest activation predictor I have. Among single-session users, trial-start rate goes 0.7% → 12% → 28% → 63% as photo count goes from zero to 1–5 to 6–15 to 16–40. Zero photos, zero conversions, almost literally: 7 out of 676.
- The onboarding wall is one specific step — the photo pose setup. 806 abandonment events, a third of all of them, with people parked there an average of 12 hours.
- I had deleted my own biggest paywall. A late-April commit removed the welcome paywall that new users saw on first launch, and I never replaced it. Paywall exposure among new users fell from 38% to 21% over three months and I had no idea.
The one that reframed the whole problem: of everyone who had ever trialed or purchased, 44.9% (168 of 374) had paid at some point. The paywall sells fine. The trial was what leaked.
Putting the Best Features Into Onboarding
The change I'd bet on most, though, isn't the paywall itself. It's that onboarding now shows off the app instead of just setting it up.
Onboarding used to be pure setup: pick your poses, add photos, make an account. Now every new user gets a real preview of the three best Pro features before they ever reach the home screen:
- A Deep Dive report on their first photo. Real AI analysis of the photo they just added — score, body fat estimate, a written summary of their physique — with the detailed sections locked behind the upgrade.
- A Future Me preview. An AI projection of their own photo toward the goal they picked, six months out.
- A free Coach answer. The AI Coach answers one question grounded in their actual first check-in, right there in onboarding.



The three Pro previews every new user hits during onboarding: a Deep Dive on their first photo, a Future Me projection, and a free Coach answer.
This does two jobs at once. It teaches people what the app actually does with their photos, which was half my onboarding problem in the first place. And it makes the paywall concrete — by the time someone sees the upgrade screen they've already held every feature it's selling, run on their own body. I think these previews drove more conversions than any other single change I made, though the attribution caveats below apply to this claim as much as any other.
Giving the Trial More to Convert On
If photos drive conversion, the obvious move was getting trial users to more photos, faster. So I built the feature I'd been putting off: camera-roll import that finds up to ten years of your old progress photos, scores them, and builds your transformation history in one shot. A trial user who runs it hits the paywall with months of visible progress in the app instead of a single day-one photo. It shipped mid-June.
I also ran onboarding experiments against that pose-setup wall — a library-first flow, softer copy, a "remind me tonight" deferral. Honest result: no clean win to report. Onboarding completion is still about 58%, the same as before. That leak is still open, and it's the biggest one left.
The Numbers Now

Before and after, all verified against RevenueCat:
| Metric | Late May | Now (Jul 7) |
|---|---|---|
| Trial → paid conversion | 20.7% blended | 44% last 4 cohorts (46/104) |
| vs 39.9% industry median | about half | at/above |
| Paywall view → trial start | 13% (66/495) | 23.5% (62/264) |
| Install → paying within 7 days | 5.17% | 10.0% (23/230) |
| MRR | $634 | $925 |
| Active subscriptions | 122 | 198 |
| Realized 30-day LTV per payer | $18 | $27.50–31.12 |
| Ad spend | $0 | $0 |

You can check the live revenue numbers here, so nobody thinks I'm making this up: RevenueCat verified — GainFrame.
What I Can't Take Credit For
This is the part most posts like this leave out, so here's mine.
I can't cleanly attribute the win to any single change. The improvement starts with the May 31 cohort — before several of the changes above had even shipped. The honest list of candidate causes: paid ads went off in mid-May, so trials reverted to high-intent organic users (my March organic cohorts already converted at 28–43% before I touched anything); the re-gated Pro features; the new paywall on half of traffic; the Pro previews in onboarding; the photo-history feature. The intent-mix reversal from killing ads is probably the biggest single factor. I'd rather admit that than pretend my paywall genius did it all.
The cohorts are small. 24 to 30 trials a week means one week can swing ±10 points on noise. That's why I quote the 4-cohort blend of 44% and not the 57.7% best week, which would be a nicer headline and a worse claim. Two newer cohorts are still maturing and aren't counted at all.
The A/B test hasn't concluded. 88.9% chance-to-win is promising and not a result.
Onboarding didn't move. About 42% of installs still never finish onboarding, unchanged since May, despite a targeted experiment. Biggest remaining leak.
Late-June momentum has a traffic confound. A TikTok sponsorship went live July 3 and spiked my web traffic to about 15–20x baseline for a day, with installs up 51% the same week. That flatters the MRR and install numbers at the very end of the chart. It does not explain the conversion-rate gains, which started a month earlier — but you should know it's in there.
Churn also ticked up a bit (4.76% weekly vs a 3.59% baseline) as the bigger new cohorts hit their first renewals. Watching it, not alarmed yet.
What This Unlocks
The reason I cared this much about one metric: at 21% conversion and $18 LTV, paid acquisition could never work — I proved that expensively in May. At 44% conversion and $27–31 realized LTV, the math changes. I'd set myself a rule that I don't touch paid again until trial conversion clears 30%. It has, so if the July cohorts hold I'll run one small capped Apple Search Ads re-test in August, a couple hundred dollars, and see if the funnel behind the click is finally strong enough to pay for the click.
Six weeks ago I assumed I had a paywall problem. Mostly I had a trial problem. The app wasn't showing people enough of their own progress inside the trial to be worth paying for, and a couple of my own regressions were giving away the parts that were. Charge for what's worth paying for, anchor the price, get people to their progress faster. None of it is clever. It compounds anyway.
If you're staring at a bad conversion number on your own app, I'm happy to compare notes — and if you're into lifting, the app this is all about is below.
Track your progress with GainFrame
Take or import a gym photo and get an AI body fat estimate, physique score, FFMI, and muscle breakdown, plus a Coach that explains what changed using your photos, weight, and workouts.
Download GainFrame Free