← All articles

Growth · 11 min read · 2026-10-04

Platform ROAS Is Inflated: Size the Ground-Truth Haircut

Every ad platform reports a return on ad spend that is higher than the return you actually got. This is not a bug or a tracking error you can configure away — it is structural. A platform reports a conversion whenever someone who saw or clicked its ad later converts inside its attribution window, whether or not the ad caused the conversion. Reported ROAS is therefore a correlation count dressed up as a causal measure, and in 2026 the gap between the two is large enough to steer real budget into the wrong channels. Published figures put the overstatement at roughly 30-60%, with a Meta example translating a reported 4.2x into about 2.1x of true incremental lift (Aibrify, Why Your Paid Social ROAS Is Wrong 2026).

This piece is about the correction, not the complaint. The goal is to leave you able to put a defensible haircut on each channel's reported ROAS using your own first-party data, so budget decisions run on an incrementality-adjusted number instead of the platform's self-graded one. The haircut is the single most valuable number a growth lead can own, because it is the difference between reallocating budget toward a channel that is genuinely working and reallocating it toward a channel that is merely good at claiming credit.

Why reported ROAS is structurally inflated

The inflation comes from three overlapping mechanisms, and naming them tells you which channels to distrust most. The first is self-attribution: each platform is both the advertiser's media seller and the judge of whether its own media worked, and it credits itself for any conversion it can plausibly connect to an impression or click. The second is window generosity — long click windows and, worse, view-through and engaged-view windows that count a conversion after a user merely saw a video for a few seconds with no click. Meta expanded engaged-view attribution in 2026, and that single change can inflate reported ROAS by 15-25% independent of any real performance improvement (AdsX, Retargeting ROAS Overstated 2026).

The third mechanism is baseline blindness: the platform cannot see the counterfactual, so it never subtracts the conversions that would have happened anyway. This is most severe on retargeting and branded search, where the audience was already far down the funnel — the platform claims credit for intercepting a purchase that was coming regardless. The practical consequence is that the overstatement is not uniform. A prospecting campaign reaching cold audiences inflates less than a retargeting campaign that re-serves ads to people who already visited your pricing page. That unevenness is exactly why a single blanket discount is the wrong fix and a per-channel haircut is the right one.

Reported ROAS versus incremental ROAS

The number that should drive budget is incremental ROAS: the revenue that exists because of the spend and would not exist without it. Reported ROAS answers a different question — how much revenue is correlated with people who were exposed to the ad — and the two diverge whenever the audience had pre-existing intent. The cleanest way to see the difference is a holdout: withhold the ad from a comparable group and measure how much less they convert. Whatever lift the treated group shows over the holdout is incremental; everything else the platform reported was going to happen anyway. A live streaming-TV test found only about half of platform-reported conversions were incremental, a correction factor near 52% (Measured, How to Measure CTV Incrementality 2026).

For SaaS specifically, the stakes are higher than for ecommerce because the conversion event is further from the click. A trial start is not revenue; a trial start that activates and converts to paid months later is. If you measure ROAS against trial starts the platform claims, you inherit the platform's inflation and compound it with your own trial-to-paid leakage. The discipline that fixes this is the same reconciliation logic behind sizing your conversion measurement gap: tie every claimed conversion back to a verified event in your own database before you let it into a ROAS calculation.

How to size the haircut with first-party data

The haircut is a ratio: incremental conversions divided by platform-reported conversions, measured over the same window. You get the numerator from a holdout and the denominator from the platform's own report. For channels with enough spend to split geographically, a geo holdout is the gold standard — suppress the channel in a set of matched regions, run it in the rest, and the difference in your first-party conversion rate between regions is the incremental lift. Divide that by what the platform reported for the treated regions and you have a haircut you can apply going forward. If a channel reported 100 conversions and the holdout shows 55 were incremental, you plan against 55 until you retest.

When geo splits are too coarse — common for early-stage SaaS with modest spend — use audience holdouts or intent-matched comparisons instead, and lean harder on your first-party data as the arbiter. The critical requirement is that the conversion you measure comes from your own application or billing system, not the pixel, because the pixel shares the platform's blind spots. This is also where the limits of any single model show up, the same tension covered in reconciling MMM and MTA when they disagree: a holdout gives you causal truth for the channels you can test, and a model fills the gaps for the ones you cannot. Triangulating the two beats trusting either alone.

Applying the haircut without over-correcting

A haircut is a correction, not a verdict, and the most common mistake is applying one blanket discount across every channel. Because retargeting and branded search inflate far more than cold prospecting, a flat 40% haircut over-penalizes the channels that were honest and under-penalizes the ones that were not — you end up steering budget by the error in your correction rather than by the truth in your data. Derive a separate haircut per channel and, where volume allows, per campaign type, and keep the raw reported number alongside the adjusted one so the size of each correction stays visible.

Refresh the haircut on a schedule, because the thing you are correcting for keeps changing. Platforms adjust attribution windows, expand view-through credit, and ship new modeled-conversion logic that shifts the inflation without warning — Meta's 2026 engaged-view expansion is one example of a change that moved every advertiser's haircut overnight. A quarterly holdout refresh is a reasonable default; monthly if a channel is a large share of spend. Treat a haircut older than a quarter the way you would treat a stale decaying acquisition signal — useful as a direction, unreliable as a precise figure.

What the haircut changes about budget decisions

The point of the exercise is cross-channel comparison, and that is exactly where raw platform ROAS fails hardest. Each platform inflates differently, so comparing Meta's reported ROAS to Google's reported ROAS is comparing two numbers graded on two different curves — the channel that looks better may simply be the one with the more generous attribution rules. Once each channel carries its own first-party haircut, the adjusted numbers become comparable, and the ranking that drives reallocation often changes: a prospecting channel with a modest reported ROAS but a high incrementality ratio frequently outranks a retargeting channel with an impressive reported ROAS that is mostly claimed credit.

This also reframes what "scaling a winner" means. A channel with a 0.9 haircut has little hidden inflation and its reported efficiency is close to real, so scaling it is low-risk. A channel with a 0.5 haircut is half mirage, and scaling it pours budget into conversions that were already going to happen. The same logic sharpens how you weight channels by the quality of the users they bring, not just the count — the thread picked up in weighting channel attribution by cohort LTV. A high-incrementality channel that also brings high-LTV cohorts is the real winner; reported ROAS alone would never have told you which one that was.

A practical starting point for this quarter

If you have never run a holdout, start with your single largest paid channel and one geo test. Pick matched regions, suppress the channel in the holdout set for four to six weeks, and measure the difference in first-party conversions. That one number gives you a defensible haircut for the channel that matters most to your budget, and it establishes the method you can extend to the rest. Until the test completes, apply a conservative interim haircut — the literature's 30-40% overstatement range is a reasonable placeholder — rather than planning against the raw reported figure, which you now know is the one number guaranteed to be too high.

The broader habit this builds is treating every externally reported metric as a claim to be verified against your own data, not a fact. Ad platforms, like any party grading its own work, report the most favorable defensible number. Your first-party funnel is the only source that has no incentive to inflate, which is why it is the right arbiter for ROAS, for conversion counts, and for the channel comparisons that decide where the next dollar of spend goes. Size the haircut, apply it per channel, refresh it on a schedule, and your budget starts following incrementality instead of inflation.

Frequently asked questions

The questions below summarize why platform ROAS overstates return, the published magnitude of the inflation, and how SaaS teams derive and apply a ground-truth haircut before reallocating budget.

FAQ

Why is platform-reported ROAS higher than real ROAS?

Ad platforms count conversions they can plausibly claim credit for, not conversions they actually caused. A platform reports a conversion whenever a user who saw or clicked its ad later converts within its attribution window, even if that user would have converted anyway. View-through and engaged-view credit widen this further by counting conversions after a video view with no click. The result is structural overstatement: the platform's number is a correlation count, while real ROAS is a causal measure of incremental revenue the spend produced.

How much does platform ROAS overstate incremental return?

Published 2026 figures put the overstatement at roughly 30-60% for reported versus true incremental ROAS, with one Meta example translating a reported 4.2x to about 2.1x real lift. More conservative estimates put average conversion overstatement at 15-20%, rising sharply when view-through credit is active. One streaming-TV holdout found only about half the platform-reported conversions were incremental — a correction factor near 52%. The magnitude depends heavily on channel and how much retargeting and view-through credit is in the mix.

What is a ROAS haircut and how do I calculate one?

A ROAS haircut is a correction factor you multiply platform-reported ROAS by to estimate true incremental ROAS. You derive it from ground truth: run a geo or audience holdout, measure the conversion lift against the control, and divide incremental conversions by platform-reported conversions for that period. If a channel reports 100 conversions and your holdout shows 55 were incremental, the haircut is 0.55 — you plan budget against 55% of the reported number until the next test refreshes it.

How do SaaS companies measure ground-truth conversions?

The reliable source of truth is your own first-party data — trial starts, activations, and paid conversions recorded in your application database, not the ad platform's pixel. You establish incrementality by comparing a treated group against a holdout: geo holdouts for broad spend, audience or intent-based holdouts for targeted campaigns, and before/after analysis only as a weak fallback. First-party conversion data also lets you reconcile platform counts against reality continuously, so you notice when a platform's self-reported number drifts from your billing system.

Can I trust ROAS at all for budget decisions?

Yes, as a relative signal once haircut, not as an absolute. Platform ROAS is useful for comparing campaigns within the same platform, where the overstatement is roughly consistent, but it is misleading across platforms because each inflates differently — Meta's view-through credit and Google's data-driven attribution are not comparable raw. Apply a per-channel haircut derived from your own tests before you compare channels or reallocate budget, and refresh the haircut quarterly because platform attribution rules change.