Case Study · Functional Medicine · Thryve Clinic

The Account Wasn’t
Underperforming.
It Was Lying.

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.

01 · The Client

Thryve Clinic

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.

02 · The Tell

A $10.18 CPM Is Not a Bargain. It Is a Symptom.

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.

CampaignSpendImpressionsCPMLeads
Lead GenLeads$2,719.3766,620$40.82175
Conversion (May)Leads$1,145.7927,512$41.650
Brand AwarenessAwareness$556.57329,905$1.690
Wellness AwarenessAwareness$9.0613,504$0.670
Boosted post + demoEngagement$52.552,699$19.470
Two awareness campaigns bought 343,409 impressions for $565.63. That is 78% of every impression the account ever served, for 12.6% of the money. Those impressions dragged the account-level CPM down to $10.18 and made the whole thing look cheap and healthy. The campaigns actually chasing customers were running at $40.82 and $41.65, which is to say: at market price, like everybody else.

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.

03 · The Forensic

Where 440,240 Impressions Actually Went

Not the campaign view. Not the ad view. The placement view, which is the one almost nobody opens.

Facebook Reels overlay zero leads271,458 impressions · 0.24% CTR
61.7%
Facebook Reels56,793 impressions · 0.89% CTR
12.9%
Facebook feed53,557 impressions · 1.88% CTR
12.2%
In-stream video26,990 impressions · 1.26% CTR
6.1%
Everything else27,626 impressions · 6.93% CTR
6.3%
Facebook Stories3,816 impressions · 16.3% CTR
0.9%

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

  • Four Meta pixels firing on a single pageview of the main site, writing every visit into four datasets at once.
  • Ads shipping with no headline and no body copy, because the copy lives somewhere the default view does not show.
  • $89 in the ad, $189 at checkout. Live, on the page people were being sent to.

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.

04 · The Decision

Retrain It, or Start Again?

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.

The clean account was built on day one, before it was needed. Not because I knew the old one was unrecoverable, but because if it turned out to be, I did not want to lose a week building infrastructure while the budget sat idle. The diagnostic fortnight was not lost time. It is what bought the confidence to throw the old account away instead of nursing it for another quarter.
05 · The One Change

Then the Dead Placement Did It Again

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.

Read the CPM row again. It went up 6.5x, and the cost per lead went down 4.1x. On this account those two numbers ran in opposite directions all month. Anyone optimising toward a cheap CPM, which is the default instinct and the default dashboard, would have reversed this exact change and called it a win.
06 · Against Benchmark

What the Rebuild Actually Bought

28 days, $2,067.20 spent, 41 leads. Measured against published 2026 healthcare benchmarks rather than against feelings.

MetricHealthcare 2026This accountVerdict
Link click-through rate0.6% – 1.4%2.94%Above range
Cost per lead$61.30 median$50.4218% below
Cost per lead, after 3 Aug$61.30 median$46.8824% below
Landing page view → lead3.0% – 4.2%5.2%Above range
CPM$27.30 median$46.84Above, deliberately
Lead → sale10% – 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.

07 · The Creative Engine

147 Ads and 31 Landing Pages, in Four Weeks

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

Iteration 1 · W29 / W30The original positioning

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
Winning ad

Your Trend Data

16 landing pages

Homepage

Homepage

Tired all the time

Tired all the time

Normal labs, still sick

Normal labs, still sick

Brain fog

Brain fog

Hormones off

Hormones off

Can't lose weight

Can't lose weight

Autoimmune answers

Autoimmune answers

300+ biomarkers

300+ biomarkers

Results in 72 hours

Results in 72 hours

Skip the waiting room

Skip the waiting room

Preventative, not reactiveWinner

Preventative, not reactive

Join Thryve

Join Thryve

A checkup measures 14 things

A checkup measures 14 things

What a wearable cannot measure

What a wearable cannot measure

Four steps, no clinic

Four steps, no clinic

Membership sales page

Membership sales page

Iteration 2 · W31Ten sales pages and not one new ad

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

Membership

Package

Package

Consultation

Consultation

Compare

Compare

Long letter

Long letter

Quiz

Quiz

Dark

Dark

Objection

Objection

Proof

Proof

The arithmetic

The arithmetic

Iteration 3 · W32Rebuilt after the positioning was rewritten

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.
Winning ad

The myth: your annual labs tell the full story.

3 landing pages

Call funnel signup

Call funnel signup

Callback + explainer

Callback + explainer

Integrative medicine

Integrative medicine

Iteration 4 · W33Built from what had actually won

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.
Winning ad

The honest version of integrative medicine.

2 landing pages

The gap

The gap

The directionWinner

The 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.

Click-through improved in every round, and round three won on both halves at once. Its best ad beat the previous round’s champion on the same days, on half the budget, and its page turned visitors into leads at roughly three times the rate of the first-generation winner. The creative was never the constraint. It got measurably better every week it was allowed to run.
08 · What Month One Really Looks Like

The Funnel Changed Fifteen Times in Twenty-Three Days

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 stageRatevs benchmark
Impression → link clickAbove rangebeat it
Link click → landing page viewAbove rangebeat it
Landing page view → leadAbove rangebeat it
Lead → contacted by the clinic~38%90%+ within 24h
Lead → sale0%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.

09 · The Actual Job

I Don't Run Ads. I Find the Constraint and Kill It.

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

10 · How It Ran

Thirty-Two Days, Start to Handover

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

Is the account working, or does it just look like it is?

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 call

Every 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.

Pareto 13 Ltd, registered in England & Wales, company no. 15014377. VAT no. GB 525 4202 23.
Registered with the UK Information Commissioner's Office for data protection, no. ZC241334.
© 2026 Pareto 13 Ltd. All rights reserved.