A San Antonio functional medicine clinic had an ad account posting numbers most media buyers would frame and hang on the wall. A $10.18 CPM. 440,240 impressions. 175 leads at $15.54 each. In its entire life it had never produced a single sale.
Nobody running it could tell. What follows is an unedited first month: the forensic, the rebuild, and the fifteen times the funnel changed underneath it.
0.0%
Impressions in One Dead Placement
0.0x
Cheaper Leads After One Exclusion
0
Sales in the Account's Whole History
0
Real Leads, 28 Days, Clean Data
Every figure on this page was read from the Meta Ads API on 20 August 2026 and can be reproduced from the account.
A functional and integrative medicine practice in San Antonio, Texas. An at-home blood draw across 300+ biomarkers, read by board-certified providers, sold as a monthly membership. Founder-run, young company, first serious paid-media budget.
Model
Membership · at-home diagnostics
Channel
Meta, cold acquisition
This write-up
17 Jul → 18 Aug 2026
I was not brought in to fix a broken account. I was brought in because growth had stalled and nobody could say why. The ad account was, by every number anyone was looking at, the healthiest part of the business.
The first thing I did was refuse to spend money in it.
Healthcare on Meta runs a $27.30 median CPM in 2026. This account was buying attention at roughly a third of market price. That is not a competitive advantage. That is the platform telling you it cannot find anyone worth showing your ad to.
Blended CPM
$10.18
vs $27.30 healthcare median
Impressions
440,240
in about three months
Purchases, ever
0
not few, zero
Here is where that CPM actually came from. The account was running two completely different jobs at once and reporting them as one number.
| Campaign | Spend | Impressions | CPM | Leads |
|---|---|---|---|---|
| Lead GenLeads | $2,719.37 | 66,620 | $40.82 | 175 |
| Conversion (May)Leads | $1,145.79 | 27,512 | $41.65 | 0 |
| Brand AwarenessAwareness | $556.57 | 329,905 | $1.69 | 0 |
| Wellness AwarenessAwareness | $9.06 | 13,504 | $0.67 | 0 |
| Boosted post + demoEngagement | $52.55 | 2,699 | $19.47 | 0 |
The reported number was real. It was also meaningless. This is the single most common way an ad account lies to the person paying for it, and it does not require anyone to be incompetent or dishonest. It just requires nobody to ask which campaign the cheap number came from.
Not the campaign view. Not the ad view. The placement view, which is the one almost nobody opens.
Share of every impression the account served in its entire life. Read from the Meta Ads API, 20 August 2026. The six rows sum to $4,483.34 and 440,240 impressions.
Six of every ten impressions this account ever served went into Facebook Reels overlay at a 0.24% click-through rate, for 11% of the budget. It is the strip of ad that sits over a Reel while somebody scrolls past it. It is cheap because almost nobody is bidding for it, and almost nobody is bidding for it because it does not work.
That placement produced zero website leads across the account’s entire history. Meanwhile Facebook Stories, at 3,816 impressions, produced a 16.3% click-through rate on less than one percent of the impressions.
Also found
Why it compounds
Every dollar spent had been teaching Meta to find the cheapest possible response. By the time anyone switched on a purchase event, there was no clean baseline for the system to optimise from, only a model already trained toward the cheapest click. An account in this state does not announce itself. It can run for months, spend the full budget, and report numbers that look fine.
I got this one wrong first, and it cost a week. Worth saying plainly, because the wrong answer here is the expensive one.
My first read
The account could be recovered. Clean up the events, kill the awareness noise, point it at a real conversion, and let it relearn. This is usually right, and it is always cheaper than starting over.
What actually happened
After a week of trying, it would not relearn. So I built a second ad account clean, on a fresh pixel, pointed at a separate landing environment I controlled end to end. One pixel, own pages, own forms. A number that moves can be traced to the thing that moved it.
Brand-new ad account. Brand-new pixel. Inside 48 hours of real spend, Facebook Reels overlay had taken 6,735 impressions and the account had produced one lead. So it was not only the pixel. Something above the pixel carries the habit across.
22 Jul – 2 Aug
Placement running
3 Aug – 18 Aug
Placement excluded
$191.90
Spend
10x more money after
$1,875.30
1.03%
Click-through rate
4.1x
4.22%
$10.85
CPM
6.5x more expensive
$70.91
1
Leads
40
$191.90
Cost per lead
4.1x cheaper
$46.88
Same ad account. Same month. Same pixel. One placement excluded on 3 August.
28 days, $2,067.20 spent, 41 leads. Measured against published 2026 healthcare benchmarks rather than against feelings.
| Metric | Healthcare 2026 | This account | Verdict |
|---|---|---|---|
| Link click-through rate | 0.6% – 1.4% | 2.94% | Above range |
| Cost per lead | $61.30 median | $50.42 | 18% below |
| Cost per lead, after 3 Aug | $61.30 median | $46.88 | 24% below |
| Landing page view → lead | 3.0% – 4.2% | 5.2% | Above range |
| CPM | $27.30 median | $46.84 | Above, deliberately |
| Lead → sale | 10% – 20% | 0% | Zero |
Benchmarks from published 2026 healthcare vertical data. The last row is not a typo and it is not buried. It is section 08.
One week of ads, then a week that shipped ten sales pages and not a single ad, then two weeks rebuilding both halves after the positioning was rewritten. Every ad and every page below is what actually shipped that week.
W29 / W30
81
Ads
16
Pages
W31
0
Ads
10
Pages
W32
31
Ads
3
Pages
W33
35
Ads
2
Pages
Biomarkers, health grades and wearable envy, running to a page per symptom so we could find out which problem people would actually raise their hand for.
81 ads

Your Trend Data
16 landing pages

Homepage

Tired all the time

Normal labs, still sick

Brain fog

Hormones off

Can't lose weight

Autoimmune answers

300+ biomarkers

Results in 72 hours

Skip the waiting room
WinnerPreventative, not reactive

Join Thryve

A checkup measures 14 things

What a wearable cannot measure

Four steps, no clinic

Membership sales page
An entire week went into the page after the signup instead of the ads in front of it. Ten variants of the same offer, shipped at once: a membership page, a long letter, a quiz, a dark page, a page that just does the arithmetic on what a year costs, an objection page.
0 ads
No new creative shipped this week. The whole week went behind the signup.
10 landing pages

Membership

Package

Consultation

Compare

Long letter

Quiz

Dark

Objection

Proof

The arithmetic
The angle changed from biomarkers to functional and integrative medicine, and the funnel changed from self-serve checkout to a phone-qualified call. Creatives and pages both had to be produced again from zero.
31 ads

The myth: your annual labs tell the full story.
3 landing pages

Call funnel signup

Callback + explainer

Integrative medicine
Not a new idea. The hooks and structure that had already proven themselves, reproduced and varied one element at a time, against two pages instead of sixteen.
35 ads

The honest version of integrative medicine.
2 landing pages

The gap
WinnerThe direction
147 ads and 31 landing pages in four weeks. Health is a restricted category, so every creative was linted against a written compliance rule set before it was allowed near the platform.
Four of those changes were structural. This is not a horror story, it is a normal first month at a company that is still working out what it sells. Here is what it actually looked like, and what came out of it anyway.
The campaign was paused mid-flight on day one of spend. The objective was flipped from purchase to leads. The form spec was reversed after being settled twice. The entire positioning was rewritten from biomarkers to integrative medicine, on one call, across every campaign and every page. An entire week went into ten sales pages and not one new ad. The best funnel of the month, at $29.41 per lead and a 10% landing page conversion rate, was switched off while it was winning.
None of that is unusual. Every founder in month one is still deciding what the business is, and the ad account is where that argument happens in public.
My job is not to wait for a company to hold still. It is to keep producing while it does not. Through those twenty-three days we shipped 147 ads and 31 landing pages, and every acquisition metric finished at or above the published healthcare benchmark.
What it cost is honest and worth stating: four weeks of data spread across four funnels on two accounts is not a month of learning, it is four fragments. And the one number that never moved was the one at the end.
Where it held, and where it stopped
| Funnel stage | Rate | vs benchmark |
|---|---|---|
| Impression → link click | Above range | beat it |
| Link click → landing page view | Above range | beat it |
| Landing page view → lead | Above range | beat it |
| Lead → contacted by the clinic | ~38% | 90%+ within 24h |
| Lead → sale | 0% | 10% – 20% |
Month one produced zero sales. Every stage from impression to form submission beat the benchmark, and the business made no money from any of it. I am putting that on my own case study because where the money stopped is the entire finding.
Traffic was solved. Leads were arriving, real people, below market price, from a dataset that could finally be trusted. Roughly twenty of them got called. At the ordinary close rate, the leads bought in month one should have produced somewhere between five and ten sales.
Nothing inside an ad account can fix a lead that nobody calls.
That is not a complaint, it is the deliverable. Month one bought a working acquisition engine and the single most valuable sentence a founder can hear at this stage: the constraint is no longer in the ads, it is on the phone, and that is where month two goes.
Ads were the thing I was hired to do. They were not the thing that was wrong.
A media buyer optimises what the dashboard reports. Give a media buyer this account in July and they would have found a $10.18 CPM, 175 leads at $15.54, and asked for a bigger budget. Every number in the interface supported that.
The job I actually do is upstream of that. Refuse to trust the reporting until it earns it. Spend two weeks proving whether the instrument is broken before believing a single reading off it. Rebuild the measurement environment so that cause and effect can be separated at all. Only then buy media, because until then you are not buying media, you are buying noise at a discount.
And when the constraint turns out to sit outside the thing you were hired for, say so. In month one the constraint moved from the ad account to the phone. That is not a comfortable finding to deliver and it is not a billable one. It was still the correct one, and it was written into the handover in plain language: this month was about solving traffic, traffic is solved, and the next constraint is not in the ad account at all.
What a media buyer sells
Cheaper clicks
What this bought
A number you can believe
What it found
The constraint was the phone
17 Jul
Onboarding. Access, pixel audit, and a second ad account built clean the same day.
Insurance, before anything was proven
17 Jul – 21 Jul
Diagnostic week. The inherited account is measured instead of run.
No new spend until the data was understood
22 Jul
First ad live on the rebuilt account and a separate landing environment.
One pixel, own pages, isolated variables
1 – 2 Aug
The dead placement reappears on the brand-new pixel inside 48 hours.
6,735 impressions, 1 lead
3 Aug
Facebook Reels overlay excluded.
The single highest-value change of the month
4 Aug
Objective flipped, form spec reversed, positioning rewritten. All on one call.
Three structural changes in one day
11 Aug
I propose restructuring the engagement away from done-for-you.
Month one had answered its question
18 Aug
Full handover delivered: account, tracking, pages, compliance rules, playbook.
Written after the engagement was already over
19 Aug
Engagement closed at 5.0 stars.
Landing pages still hosted on my system, still serving their live ads
Client review pending insertion.
Thryve Clinic · 5.0 / 5.0, August 2026
If the reporting looks healthy and the bank account disagrees, one of those two is lying and it is usually not the bank. An hour on the account is normally enough to tell which. No deck, no pitch, no obligation.
Book a callEvery figure on this page was read from the Meta Ads API on 20 August 2026. Published with the numbers that survive someone opening the account, including the ones that do not flatter me.