True ROAS vs Meta-Reported ROAS (Why They Disagree)

True ROAS reconciled against Shopify shown next to an inflated Meta-reported ROAS

Meta-reported ROAS and your true ROAS disagree because they are counting different things. Meta counts conversions it thinks its ads influenced — inside a generous attribution window, including view-throughs, and increasingly from a statistical model rather than observed sales. True ROAS counts the revenue your store actually recorded against the spend that actually left your account. In almost every case Meta's number is the higher one, and the gap is widest exactly when you most want to trust it: at scale, after iOS signal loss, and on view-heavy prospecting campaigns.

Key takeaways

  • True ROAS is store-confirmed revenue ÷ actual ad spend. Meta-reported ROAS is Meta's own attribution-window estimate, shown inside Ads Manager.
  • Meta over-reports for structural reasons: a 7-day-click / 1-day-view default window, view-through conversions, in-platform attribution, cross-campaign double-counting, and modeled (estimated) conversions after iOS 14.5.
  • The gap is not a fixed percentage. It grows with broader attribution windows, more prospecting, and more iOS traffic — and shrinks on tight-window, branded, search-style campaigns.
  • The only defensible number to quote a client is reconciled against the store (Shopify, Stripe, or an export), not lifted from Ads Manager.
  • Reconciling is what True ROAS does automatically; you can also do it by hand with the steps below.

What is true ROAS, and how is it different from Meta-reported ROAS?

True ROAS is the revenue your store actually recorded, divided by the ad spend that actually left your ad account, over the same period. It is a backward-looking, cash-reconciled number — the one a finance person would recognise.

Meta-reported ROAS is a forward-attributed estimate. Meta looks at people who saw or clicked your ads, checks which of them converted inside its attribution window, and credits that revenue to the ad — even if the purchase also touched Google, email, an influencer, or a return visit days later. Both numbers are "ROAS," but one is measuring delivered sales and the other is measuring claimed influence. That single distinction is the whole disagreement.

Why does Meta over-report ROAS?

Five mechanics stack on top of each other. None of them is Meta "lying" — they are design choices that all push the reported number up.

1. The default attribution window is generous

Meta's default is 7-day click plus 1-day view. Any purchase within seven days of a click — or one day of merely seeing the ad — gets credited. Widen the window and the reported number rises mechanically, without a single extra sale happening.

2. View-through conversions count as wins

A view-through conversion is a sale Meta credits to someone who saw the ad but never clicked it. On prospecting and broad-audience campaigns, view-throughs can be a large share of "conversions" — and many of those buyers would have purchased anyway.

3. Attribution happens inside Meta's own walls

Meta both runs the ads and grades its own homework. It cannot see the Google ad, the email, or the organic visit that also touched the buyer, so it credits the full sale to itself. Every ad platform does this, which is why the sum of every platform's claimed revenue routinely exceeds your actual revenue.

4. Cross-campaign double-counting

If a buyer was exposed to two of your campaigns, both can claim the conversion in their own reporting. Add the campaigns up and you "earned" more revenue than the order was worth.

5. Modeled conversions after iOS 14.5

Since App Tracking Transparency, a meaningful slice of conversions are no longer observed — Meta estimates them with statistical modeling. Modeled conversions are useful for optimisation but they are not receipts, and they tend to round up. This is the same signal-loss gap that makes Shopify and Meta disagree on who drove a sale.

How big is the gap, typically?

There is no universal multiplier — anyone quoting "Meta inflates ROAS by exactly X%" is guessing. The honest answer is that the gap is a function of your settings and traffic mix. The pattern below is illustrative of how the same campaign can report very differently depending on the window and channel — use it to reason about direction, not as a benchmark.

ScenarioWhat Meta tends to reportWhy true ROAS lands lower
Tight window (1-day click), branded search-styleClosest to realityShort window, mostly clicks, little view-through
Default window (7-day click / 1-day view), mixedNoticeably higherView-throughs + a week of post-click credit
Broad prospecting, heavy view-throughHighest overstatementMany credited viewers would have bought anyway
High iOS share, post-ATTInflated by modelingEstimated conversions replace observed ones

The takeaway is not a number — it is that you cannot read true ROAS off Ads Manager. You have to reconcile.

How do you calculate your true ROAS?

You compare what Meta claims to what your store banked, over the same dates, for the same accounts. By hand:

  1. Pull actual spend from Ads Manager for a fixed period (use the billing/spend figure, not a campaign subset).
  2. Pull actual revenue from your store (Shopify, Stripe, or a CSV export) for the same dates, net of refunds.
  3. Decide an attribution stance for traffic you can't cleanly split — last-click, a blended factor, or a holdout. Be consistent month to month.
  4. Divide reconciled revenue by spend. Compare that to Meta's reported ROAS to see your overstatement factor.

Doing this once is illuminating. Doing it every month, per client, across a dozen accounts is the part that breaks down by hand — which is the gap True ROAS was built to close, reconciling automatically against the connected store.

True ROAS reconciles Meta-reported revenue against store-confirmed revenue, so the number you quote is the one you can defend.

When does the gap matter most?

It matters most at the two moments agencies are most exposed: when you decide where to push budget, and when you report results to a client. If you scale toward the campaigns with the highest Meta-reported ROAS, you may be scaling the campaigns with the most view-through inflation rather than the most incremental revenue. And if you quote that same number on a monthly report, you are setting an expectation the client's own Shopify dashboard will quietly contradict.

The gap is widest after iOS signal loss and on broad prospecting, and tightest on tight-window, high-intent campaigns. If you run many client accounts, watching the overstatement factor per account is also an early health signal — the same philosophy behind monitoring multiple client accounts at once.

How should agencies report ROAS to clients?

Report the reconciled number, and show your work. Clients increasingly check their own store dashboard, so a Meta-lifted ROAS that is 40% higher than what they banked reads as either ignorance or spin. A defensible report states the reconciled ROAS, notes the attribution stance, and — if useful — shows the Meta-reported figure beside it so the client understands the difference rather than distrusting you for it.

That defensible number is the entire point of True ROAS, and you can have it running on your accounts in a few minutes — see pricing for the tier that fits your account count, or query the reconciled figure straight from Claude or ChatGPT via the Advino MCP server.

Frequently asked questions

Is Meta-reported ROAS just wrong?

No — it is a real, internally consistent metric, and it is genuinely useful for in-platform optimisation. It is just not the same thing as store-confirmed return, and it should not be the number you bank budgeting or client-reporting decisions on.

What's the difference between true ROAS and blended ROAS?

Blended ROAS divides total revenue by total ad spend across all channels, ignoring attribution entirely. True ROAS reconciles a channel's claimed revenue against store-confirmed revenue. Blended answers "are we profitable overall?"; true ROAS answers "what did Meta actually return?" They are complementary.

Will tightening my attribution window fix the gap?

It narrows it, because a 1-day-click window credits fewer borderline conversions — but it does not eliminate it, since in-platform attribution and modeled conversions remain. Tightening the window changes reporting, not reality; reconciliation is still what tells you the real multiple.

Do I need Shopify for true ROAS?

No. Shopify is the cleanest source, but Stripe or a flat-file export of orders works too. The requirement is store-confirmed revenue for the same dates and accounts — not any specific platform.