Brandlio
Sign in
Ecommerce

True ROAS: Why Platform-Reported ROAS Lies (and How to Fix It)

Add up the revenue your ad platforms claim and you will get a bigger number than your bank shows. Every platform grades its own homework, counts the same sale more than once, and never sees a refund. Here is how to calculate what your campaigns actually earned.

JeremiahAugust 25, 20269 min read
True ROAS: Why Platform-Reported ROAS Lies (and How to Fix It)
True ROAS: Why Platform-Reported ROAS Lies (and How to Fix It)
On this page

What Is True ROAS?

Key Takeaway: True ROAS is your return on ad spend calculated from what actually landed in your bank, after removing conversions that two platforms both claimed, subtracting refunds and discounts, and accounting for margin. Platform-reported ROAS is a gross, self-claimed, pre-refund number. The two routinely differ by more than the margin you are optimising against.

Here is a test you can run in about four minutes.

Open Google Ads, Meta and Amazon. Write down the revenue each one claims for last month. Add them up. Now open Shopify or Stripe and look at what actually came in.

The second number is smaller. Usually a lot smaller. Most people who run this test for the first time assume they made an error somewhere, because the gap seems too large to have gone unnoticed. It has not gone unnoticed — it is structural, and every advertiser has it.

This post explains exactly where the difference comes from, how to calculate the real figure, and why the calculation is harder than it should be.

Why Is the Reported Number Wrong?

Platform-reported ROAS is not a lie in the sense of anyone being dishonest. Each platform is answering a narrower question than you think you asked, and it answers that narrower question accurately.

Generate an illustrated image in 16:9. A wide stepped funnel running left to right. On the far left, a tall solid violet block labelled "Reported". Moving rightward it narrows in four visible steps, each marked by a small coral notch with a tiny coral minus icon and a short label beneath reading in order "Duplicates", "Refunds", "Discounts" and "Margin". On the far right, a much shorter block filled with a violet-to-indigo gradient and glowing warmly, labelled "True". The reduction in height across the frame is dramatic. Soft modern SaaS illustration on a light lavender gradient background from #EDEBFB to #DCD9F5 with a very faint square grid texture. All shapes are rounded squircles with generous corner radius, each filled with a soft pastel colour and containing one simple darker tonal line icon in a deeper shade of the same colour, with soft diffuse drop shadows and no outlines. Connector lines are thick smooth ribbons with rounded caps, each in the same pastel colour as the tile it leaves. Small white four-pointed sparkles and tiny white dots scatter lightly around the focal point. Friendly, clean, generous spacing, no hard strokes, no flat line-art, no dark background. Keep all spellings correct. No brand logos, no real company marks.

A vertical funnel where a large reported revenue block passes through four labelled deductions — duplicates, refunds, discounts and margin — leaving a much smaller true figure

Four things stand between reported and real.

Leak One: Three Platforms, One Sale

This is the largest leak and the least visible.

One customer journey across three days where three ad platforms each claim the same purchase, marked Counted three times

A single customer journey timeline where three ad platforms each claim the same purchase under their own attribution window

A customer sees your Meta ad on Monday and does not click. On Wednesday they search your brand name and click a Google ad. On Thursday they buy.

Meta claims that sale under its view-through window — the ad was seen, the purchase followed, within the window. Google claims it under last-click, and by most reasonable definitions Google has the better case. If the purchase happened on Amazon, Amazon has its own attribution logic and may claim a version too.

One sale. Two or three platforms reporting it. Nobody is cheating: each platform can only see its own touchpoints, so each reports what it observed. But when you sum across platforms you are adding numbers that overlap, and no dashboard warns you about the overlap because no dashboard can see it.

The overlap grows with the number of platforms you run and with how much brand-heavy or retargeting traffic you buy — precisely the campaigns that tend to report the strongest ROAS. That is not a coincidence. Campaigns that intercept people already on their way to buying will always look excellent to the platform that intercepted them.

Key Takeaway: Summing platform-reported revenue is not arithmetic, it is double counting. The more platforms you add, the more the total overstates reality — which means the advertisers most exposed to this error are the sophisticated multi-channel ones, not the beginners.

Leak Two: Refunds and Chargebacks

An attributed conversion that comes back is still an attributed conversion. Platforms record the sale at the moment it happens and generally never revisit it. Returns, cancellations, chargebacks and failed payments all leave your bank balance without touching your ROAS report.

In low-return categories this is a rounding error. In apparel, footwear, furniture and anything with sizing, it is not remotely a rounding error, and it hits hardest in exactly the campaigns driving impulse purchases — which, again, are the ones reporting the best numbers.

Leak Three: Discounts and Order Composition

Platforms usually record order value at whatever your tracking passes them. Depending on how that is implemented, a code applied at checkout may or may not be reflected, and shipping and tax may or may not be included. Multiply that ambiguity across a promotion-heavy month and reported revenue drifts from banked revenue for reasons that have nothing to do with attribution at all.

Worth checking rather than assuming: pull ten orders and compare what the platform recorded against what the store recorded. Teams are frequently surprised.

Leak Four: Revenue Is Not Profit

ROAS is a revenue metric. It does not know your cost of goods, fulfilment, payment processing or platform fees. Two campaigns at identical ROAS can have opposite contribution margins if they sell different products.

Here is the worked example — illustrative numbers, not measured data.

Campaign A drives a 4× ROAS on a product with 60% gross margin. Campaign B drives the same 4× ROAS on a product with 25% gross margin. On any dashboard these campaigns are equally good. In reality one of them is funding the business and the other is buying revenue at close to break-even. Scaling both equally, which is what an efficiency-ranked view invites you to do, moves budget toward the worse one.

What Do You Need Connected?

Here is why true ROAS is rarely calculated despite everyone agreeing it matters: the inputs live in three different places, and most tooling only reaches one of them.

Three data sources — Ads, Store and Payments — feeding one hub that produces a True ROAS figure, with Ads alone marked insufficient

Three source cards for ads, store and payments feeding one hub that outputs a single true ROAS figure

You need

From

Why ads alone cannot give it

Spend, by campaign and channel

Ad platforms

Ads have this. It is the only input they do have.

Orders with a single source of truth

Shopify, WooCommerce, Amazon Seller Central

Deduplicating requires one order list, not three claim lists

Refunds, chargebacks, net settlement

Stripe or your processor

Platforms never see money leaving

Cost of goods and fees

Store, ERP or spreadsheet

Not present in any advertising system

New versus returning

Store or Klaviyo

Separates acquisition from harvesting existing customers

Only the first row comes from advertising. This is why an AI connected only to ad platforms will confidently report platform ROAS when you ask about return — it is answering accurately from the only data it has, and it has no way to know the rest exists. That is not a model failure. It is a coverage failure.

Honest limitation: True ROAS is more accurate than platform ROAS but it is still not causal. It tells you what happened, not what would have happened without the ads. A brand campaign harvesting people who were going to buy anyway can show excellent true ROAS and still be incremental waste. For genuine causality you need holdout tests or geo experiments, and no dashboard — ours included — substitutes for running one.

How Do You Calculate True ROAS?

Four steps: Deduplicate → Net → Margin → Compare.

Four calculation steps in sequence — Deduplicate, Net, Margin and Compare — leading to the final true return figure

Four connected steps labelled Deduplicate, Net, Margin and Compare running left to right toward a final true ROAS figure

  1. Deduplicate. Stop summing platform-claimed revenue. Start from your store's actual order list for the period — that is one sale per sale, by definition. This single change removes the biggest error before you do anything clever.

  2. Net it down. Subtract refunds, chargebacks, cancellations and discounts from the order total. Your payment processor has this; your ad platforms never will.

  3. Apply margin. Subtract cost of goods, fulfilment and payment fees to get contribution. Now you are dividing something meaningful by ad spend rather than dividing a gross figure that flatters you.

  4. Compare, don't obsess. The absolute number matters less than the direction and the gap. Track the ratio between platform-reported and true ROAS over time. When that gap widens, something changed — usually attribution settings, promotion intensity, or return rates.

If you are choosing tooling to do this, the best marketing MCP servers compares the options on coverage. A useful shortcut while you build toward the full calculation: blended ROAS — total revenue from your store divided by total ad spend across all platforms. It is crude, ignores incrementality entirely, and is far better than summing platform claims, because the numerator is a real number that exists exactly once.

What Should You Take from This?

  • Platform-reported ROAS answers "what did this platform observe", not "what did this campaign earn". Both are useful; only one belongs in a budget decision.

  • Never sum revenue across platforms. Duplicate attribution means you are adding overlapping numbers, and the error grows with sophistication rather than shrinking.

  • True ROAS needs three connections — ads, store and payments. Ad platforms structurally cannot see the last two.

  • Even true ROAS is not causal. For incrementality you need holdout or geo tests, and no reporting layer replaces one.

Hub-and-spoke diagram: a central True ROAS hub linked to six data source tiles, with badges reading Deduped, Net, After Margin and One Number

Hub-and-spoke diagram with a central hub connected to six data source icons, with four badges reading Deduped, Net of Refunds, After Margin and One Number

Ask Your AI What You Actually Earned

Brandlio reads Shopify, WooCommerce, Stripe and Amazon Seller Central alongside every ad platform, so "what was our true ROAS last month once refunds are netted out" is one prompt in Claude or ChatGPT instead of a spreadsheet afternoon. See pricing or connect your first account.

Read this next → Best MCP Servers for Ecommerce Advertising

Which servers actually reach a store and a payment processor rather than stopping at advertising — and the coverage questions to ask before you commit to one.

Frequently Asked Questions

What is true ROAS?

True ROAS is return on ad spend calculated from actual banked revenue rather than platform-claimed revenue. It removes conversions that more than one platform claimed, subtracts refunds, chargebacks and discounts, and accounts for cost of goods and fees. Platform-reported ROAS is a gross, self-claimed, pre-refund figure, so the two measure genuinely different things.

Why is my platform ROAS higher than my actual revenue suggests?

Four reasons compound. Multiple platforms claim the same sale under their own attribution windows, so summing across them double counts. Refunds and chargebacks are never deducted. Discounts and shipping may be recorded inconsistently. And ROAS is a revenue metric that ignores cost of goods entirely.

How do I calculate true ROAS?

Start from your store's actual order list rather than summing platform-claimed revenue, which removes duplicate attribution immediately. Subtract refunds, chargebacks and discounts using payment processor data. Subtract cost of goods, fulfilment and payment fees to reach contribution. Then divide by total ad spend across all platforms.

What is the difference between true ROAS and blended ROAS?

Blended ROAS is total store revenue divided by total ad spend across all channels. It is crude but avoids duplicate attribution because the numerator exists exactly once. True ROAS goes further by netting out refunds and applying margin. Blended is a good first step if you cannot yet do the full calculation.

Can Google Ads or Meta calculate true ROAS for me?

No. Neither can see your other ad platforms, your refunds, your discount codes or your cost of goods. Each reports what it observed within its own attribution window, accurately, from its own narrow view. Calculating true ROAS requires joining advertising data with store and payment data, which no single ad platform has access to.

Does true ROAS tell me whether my ads are incremental?

No, and this is an important limitation. True ROAS is more accurate than platform ROAS but remains correlational — it tells you what happened, not what would have happened without the ads. A brand campaign harvesting customers who would have bought anyway can show excellent true ROAS while adding little. Incrementality requires holdout or geo experiments.

Which data connections do I need to measure true ROAS?

Three at minimum: your ad platforms for spend, your store platform such as Shopify, WooCommerce or Amazon Seller Central for a single deduplicated order list, and your payment processor such as Stripe for refunds and net settlement. Cost of goods, whether from the store or a spreadsheet, is needed for the margin step.

How often should I check true ROAS against platform ROAS?

Monthly is enough for most advertisers, and the ratio between the two matters more than either number alone. When the gap widens, something has changed — commonly an attribution setting, a heavier promotion period, or a rise in return rates. Treating that ratio as a monitored metric catches problems that neither number catches on its own.

Jeremiah

Related articles

All posts →