Three weeks ago I was on a board call where a CFO asked the head of marketing why their reported 4.2× blended ROAS hadn't translated into 4.2× revenue growth. The head of marketing didn't have an answer. The CFO did: your numbers are wrong.
He was right. And he was right for a reason that's true at almost every brand I see — including ones run by very smart people. Reported ROAS is systematically inflated by a structural quirk of how ad platforms attribute conversions.
The structural problem
Every major ad platform — Meta, Google, TikTok — uses some flavor of last-click or assisted attribution within a 7-day or 28-day window. Here's what that means in practice.
- Sarah sees an Instagram ad on Monday. Doesn't click.
- Sarah sees a TikTok ad on Wednesday. Clicks but doesn't buy.
- Sarah Googles your brand on Friday. Clicks the brand-search ad. Buys.
How do the platforms attribute Sarah's purchase? Each one claims it.
- Meta sees the Instagram view-through within 28 days. Counts it.
- TikTok sees the TikTok click within 28 days. Counts it.
- Google sees the brand-search click. Counts it.
Sarah bought once. The three platforms collectively count three conversions. When you sum your "platform-reported ROAS" across channels, you're double- and triple-counting the same revenue.
How bad is the inflation?
Across 600 paid-media accounts we've audited since 2023, here's the typical inflation by channel.
Platform-reported ROAS overcount by channel
Median across our audit portfolio. Higher = more overcounting.
Brand search is the worst offender. Why? Because most brand-search clicks are people who would have bought anyway. They saw your creator post, your TikTok ad, your podcast mention — and then went to Google to find your site. Brand-search ads claim that conversion, but they didn't cause it.
The fix: server-side + multi-touch + holdout
Three things together get you within 5% of the real number.
1. Server-side conversion APIs
Stop relying on browser pixels. Browsers strip third-party cookies, ad-blockers kill pixels, iOS prompts kill what's left. Server-side events fire from your backend the moment the order is created — with the user identifier hashed and pushed to Meta CAPI, Google Enhanced Conversions, TikTok Events API.
This alone closes 30–40% of the attribution gap.
Best practice: server-side as your primary signal, browser pixel as the deduplicating fallback. Most platforms now natively dedupe matching events. The configuration takes a day. The lift is permanent.
2. Multi-touch attribution model
Run a position-based model (40% first touch, 40% last touch, 20% middle). It's not perfect — no model is — but it eliminates the structural overcounting and forces marketers to defend top-of-funnel investments instead of having them silently absorbed by brand search.
3. Holdout testing, twice a year
Once you have a multi-touch number, validate it with incrementality tests. Turn off paid social in 20% of your geographies for 4 weeks. Compare the revenue delta. The actual lift you observe is your true incremental ROAS — the rest was happening anyway.
Across the brands that run this discipline twice a year, here's what they typically find.
Reported vs incremental ROAS
Holdout-validated incrementality, blended across channels.
Reported 4.2× → multi-touch 3.4× → incremental 2.8×. The 33% gap between reported and incremental is what most brands have been quietly losing as they scale paid spend without validating the underlying number.
What changes when you fix it
Three things, in our experience.
- Brand-search budget gets cut. Often by 40–60%. Brand search is mostly capturing demand created elsewhere — the actual incrementality is small.
- Top-of-funnel budget gets bigger. Creators, TikTok, podcast — the channels that create demand — finally get credit and budget.
- Total spend often grows, not shrinks. Once the CFO sees real numbers, they're more willing to fund more spend — because they can defend the math.
The bottom line
Reported ROAS is a useful operational metric — it tells you which campaigns to scale day-to-day. But it's a terrible CFO-defense metric. The real number is 25–35% lower for most brands, and the only way to know yours is to install server-side events, run a multi-touch model, and validate with holdouts twice a year.
If you want to see what your real number is, that's exactly what our free 30-minute audit opens with. We'll show you the gap between what your dashboard says and what your bank account is doing.