← All posts Attribution

Build one true ROAS number when platforms disagree

1 Sep 2026 · 5 min read · Twinslytics
Building One True ROAS Number01Platform DataMeta, Google, TikTok02WarehouseRaw spend + revenue03Dedupe LogicRemove overlap …04Blended ROASRevenue ÷ total …
A single trustworthy ROAS comes from a warehouse pipeline, not any one ad platform's dashboard.

Meta says your ROAS is 4.2x. Google says 3.6x. TikTok says 5.1x. Your finance team looks at total revenue divided by total ad spend and gets 1.8x. Nobody is lying. Nobody made a mistake. Every platform is measuring a different thing and calling it the same name.

This is the most common fire drill in ecommerce marketing: a Monday meeting where three dashboards contradict each other and everyone defends their own number because their job depends on it. The fix isn't picking the dashboard you trust most. It's building a number that doesn't come from any ad platform at all.

Why every platform reports a different number

Each platform grades its own homework, and it grades generously. Three mechanics cause almost all the disagreement:

None of this is fraud. It's platforms optimizing for their own algorithms, which need conversion signals to bid well. The problem is when marketers treat platform-reported ROAS as a financial statement instead of an optimization signal.

Decide what "true" actually means

Before you build anything, define the number you're trying to produce. There are two different questions people confuse constantly:

Most teams need both, used differently. Blended ROAS is your source of truth for "are we profitable." Incremental ROAS is your source of truth for "where should the next dollar go." Platform-reported ROAS should never be the answer to either question — it's an input, not a conclusion.

Build ground truth from order data, not ad data

The fix starts by refusing to let ad platforms mark their own exams. Pull actual order data from your store — Shopify, your OMS, wherever revenue really lands — into a warehouse. That's your denominator's numerator: real revenue, real refunds, real discounts, real contribution margin if you want to go further than top-line revenue.

Then bring in spend data from every platform's API, normalized to the same currency, same date grain, same taxonomy. This sounds obvious but it's where most spreadsheets die — Meta reports in campaign-day, Google in a different timezone default, TikTok with its own quirks. A pipeline that lands raw spend and raw order data into consistent daily grain, in one place, is non-negotiable. This is infrastructure work, not a reporting task, which is why it usually needs an actual data pipeline rather than five people exporting CSVs on a Friday.

Once spend and revenue live in the same warehouse on the same time grain, blended ROAS becomes a query, not a debate: total revenue for the period divided by total spend for the period. No platform's attribution logic touches it. It will almost always be lower than any single platform's self-reported number, and that's the point — it's not missing credit, it's removing double-counted credit.

Layer in incrementality to break ties

Blended ROAS tells you the business is healthy. It doesn't tell you whether Meta or TikTok deserves more budget. For that you need to test what happens when spend actually changes, not what a pixel claims happened.

You don't need a PhD-level model on day one. Even a rough quarterly holdout test will tell you more truth than another month of trusting platform dashboards.

Put one number in front of the business

The last step is organizational, not technical: pick one dashboard, built from the warehouse, and make it the only ROAS anyone quotes in a leadership meeting. Platform dashboards stay open for the media buyers who need them to optimize bids day-to-day — that's what they're actually good for. But the number that determines budget, headcount, and board conversations comes from one place: real orders divided by real spend, adjusted by whatever incrementality data you've gathered.

This kills the Monday fire drill permanently. When someone brings a screenshot from Ads Manager claiming 4x, the answer becomes simple: "that's platform-attributed, here's blended, here's what the last holdout test showed." The conversation moves from whose dashboard is right to what the data actually supports.

The disagreement between platforms was never really about attribution windows. It was about letting four different vendors each grade their own performance and then acting surprised when they all gave themselves good marks. Build the warehouse, own the order data, run the tests, and the disagreement disappears — not because you found the "correct" platform, but because you stopped asking platforms the question in the first place.

Further reading

283/408 sessions reattributed — Fixed attribution, returned conversions to Google Ads

Want your attribution reconciled like this?

We patch the join between clicks and closed revenue so bidding optimizes on what actually happened, not what the checkout referrer claims.