Why Meta's Algorithm Ignores High-ROAS Ads (And What It Actually Means for Your Creative Testing)
- saurav soni
- 7 minutes ago
- 3 min read
An ad with a 1.5 ROAS keeps getting the lion's share of budget. A different ad in the same ad set, sitting at a 3.0 ROAS, barely gets touched. It looks like a bug. It isn't — it's a real, well-documented gap between what the ROAS column reports and what Meta's delivery system actually knows.
The last-click attribution trap
The ROAS number in Ads Manager is built on last-click, ad-level attribution — it credits whichever ad happened to get the final click before a purchase, full stop. That's a genuinely narrow slice of the real story. Independent measurement research puts Meta's reported ROAS as commonly overstating true performance by 20-40% against tools like GA4, and for retargeting campaigns specifically, some marketing-mix modeling comparisons have found platform-reported numbers running 2 to 4 times higher than a business's actual blended return once overlapping credit across channels is removed.
That inflation isn't evenly spread across every ad, either — which is exactly why two ads in the same ad set can show wildly different reported ROAS while the underlying reality is much closer than the dashboard suggests.
What Meta's algorithm is actually optimizing for
The delivery system isn't reading last-click ROAS to decide where budget goes. It's running a live prediction — commonly described as an Estimated Action Rate — built from your bid, your creative's engagement signals, and how likely a given user is to convert, updated continuously as the campaign runs. An ad with a strong predicted action rate gets favored in the auction regardless of what its historical, narrowly-attributed ROAS says.
Multi-touch behavior is a real part of that picture too. Research into Meta's delivery logic has found the system evaluating full multi-touch conversion chains and distributing credit across them — in one documented case, something close to a third of the credit spread across each ad in a three-touch path, rather than handing all of it to the last one clicked. An ad sitting earlier in that chain can be doing real, measurable work that last-click ROAS simply never assigns to it.
There's a second, separate mechanic worth knowing too: marginal, incremental value. An ad that's already receiving spend can keep earning more not because its average ROAS is high, but because the next dollar into it is still returning positively — even while its cumulative reported ROAS looks lower than a newer ad that hasn't been tested at scale yet.
Where "Amount Spent" fits, honestly
Given all of that, Amount Spent is a genuinely useful signal — it reflects Meta's own live confidence in an ad, built from more information than a single lagging ROAS number shows you. Treating a heavily-funded, modest-ROAS ad as worthless and pausing it on ROAS alone can mean cutting something that's quietly doing real work elsewhere in the funnel.
But it's a signal, not a verdict. The more defensible practice, and the one better-resourced teams actually use, is triangulating three things rather than leaning on any single number: Amount Spent as a read on the algorithm's confidence, blended ROAS or MER (total revenue over total spend, which can't be gamed by attribution windows) as the number that reflects real business impact, and an occasional holdout test — turning an ad or campaign off entirely for a period — as the closest thing to ground truth about what it was actually contributing.
Amount Spent → what the algorithm currently believes about an ad's value
Blended ROAS / MER → what's actually true about total revenue relative to total spend, independent of platform attribution quirks
A periodic holdout test → the most reliable way to confirm what a specific ad or campaign is truly adding, rather than inferring it from spend or platform-reported ROAS alone
A high-spend, modest-ROAS ad isn't automatically a secret winner. It's a candidate worth checking against the bigger picture before it gets paused on a last-click number that was never built to tell the whole story.
This connects directly to two things worth keeping in mind while testing creative: the algorithm's read on any single ad is a prediction, not a fixed truth, and
Comments