The setup
A bootstrapped fitness app founder came to me with a straightforward ask, to help them scale with paid ads.
On paper, everything looked promising:
- Budget: $1,500/day, a monthly budget of about $45K
- Creatives: 40+ variations ready to test
- Target: $15 cost per trial
- Foundation: Organic traction, positive unit economics, loyal user base
The goal was clear, the resources were there, and we got to work.
What we did
We improved tracking for Apple’s ATT rules, with proper conversion events firing. We set up blended measurement across four platforms (Meta, App Store Connect, RevenueCat, Mixpanel). No single source tells the whole truth.
I quickly found that Meta was only capturing some of the actual conversions compared to internal tools. Duh. Attribution gaps are real.
I tested audiences, including age segments and geographic markets (US, UK). I ran through creative concepts methodically.
The progress
It kind of worked.
CPT dropped from $60 to $90 at launch to $30 to $40 within a few weeks. I expected more.
Then it stopped.
The wall
$30 CPT. That’s where I got stuck.
I tested 40+ creatives, and the algorithm concentrated 90% of spend on two “winners,” neither of which hit our $15 target.
I realized that at $30 CPT, every new test is expensive.
- Testing one creative concept properly? $300+ before you get signal.
- Each test takes 7 days because of trial windows. Many elements affect conversion to paying.
- Meta’s commonly cited guideline is about 50 events per ad set per week to exit learning.
I had ideas though: influencer content, new markets, age segment deep dives, direct purchase optimization.
We just couldn’t afford to test them properly at this CPT.
The other problem
Digging deeper, I found something more fundamental than campaign optimization. The app had two audiences and one product.
| What I looked at | Audience A: Enthusiasts | Audience B: Beginners |
|---|---|---|
| Who they are | Already skilled. Want to train at home and need to have the right hardware. | Curious. Want to learn from scratch. |
| What the ads did | Our best creatives attracted them, and they convert well. | They would click, then churn because the app assumed too much skill. |
| The problem | Too small and too niche. Meta can’t find them at scale. | The product experience wasn’t built for them yet, even though the market is large. |
One fitness app, one product, two audiences, as I read them by day 25.
This is a product market marketing fit problem showing up in ad performance.
The hard conversation
Day 25. We sat down and asked the real question, “Should we keep spending?”
The CPT was high for us, both in absolute terms and versus industry benchmarks. Small creative tweaks weren’t going to cut costs in half, so we needed structural changes.
Burning budget hoping for “maybe” signals didn’t make sense.
Sometimes you have to tell a founder “not yet.”
What would it take?
We mapped out what would need to happen for Meta to work.
On the testing side:
- Influencer partnerships for authentic creative
- New markets with lower CPMs
- Age segment optimization
- Direct purchase flow (skip trials entirely)
On the product side:
- Custom App Store pages for each audience
- Separate onboarding flows based on skill level
- Tailored content experience
One product can serve two audiences, but not with one funnel.
The outcome
We paused.
The conditions for it to work weren’t in place yet, not because Meta “doesn’t work.”
The plan:
- Pause Meta spending to stop the bleeding.
- Do the product work by building separate funnels for each audience.
- Build reserves by saving budget for proper testing later.
- Return in 6 months with clarity and resources to test properly.
5 lessons from this
- High CPT makes every test expensive. At $30 per trial, you can’t iterate fast. Testing velocity matters.
- Knowing what to test is different from affording to test it. I had the ideas, but we didn’t have the economics to validate them.
- Niche products face algorithmic headwinds. Meta’s algorithm needs volume. Small audiences are harder to find profitably.
- Product gaps show up as ad performance problems. If your product doesn’t convert the people your ads attract, no amount of optimization fixes that.
- Pausing is a valid strategy. 30 days of clarity beats 6 months of expensive guessing.
These are one client’s numbers, not benchmarks, so take the reasoning and leave the thresholds.
Paid ads are a diagnostic tool. They tell you, fairly quickly, whether your product market fit is strong enough for algorithmic targeting.
The real question is “What needs to be TRUE for Meta to work?”, not “Can Meta work for me?”
| What needs to be true | What this account showed |
|---|---|
| Product converts the people your ads attract | Audience B clicked, then churned |
| Creatives filter for the right audience | Our best creatives pulled the smaller Audience A |
| Budget supports testing at your actual CPT | $30 CPT meant $300+ and 7 days per test |
Run the same three checks on your own account. You can’t optimize your way past these.
This engagement ended with a pause. But that pause came with a clear diagnosis and a roadmap for what to fix, which mattered more.
Sometimes the best outcome is knowing exactly why you’re not ready for it yet, and what to do about it.