Every Shopify merchant running paid ads has been told the same story. "Hit 3x ROAS and you are profitable. Hit 4x and you are scaling." The number on the Google Ads or Meta Ads dashboard becomes the operating metric.
The problem is that number is almost always wrong, often by 30 to 50%, and the direction of the error is not consistent.
This is what we mean by the difference between reported ROAS and true ROAS, and why the gap matters for every operating decision you make on paid spend.
Reported ROAS is what your ad platform tells you
Reported ROAS is calculated from the conversion data your ad platform sees. Specifically:
- Google Ads sees conversions that fire on your
/checkout/completeor equivalent page, attributed to a click on a Google ad within the conversion window - Meta Ads sees conversions attributed via the Meta Pixel and Conversion API, within Meta's attribution window
- Each platform claims the same conversion if it touched the customer, which means double-counting across platforms is the default
When Google Ads reports "4.2x ROAS this month," it is showing you revenue claimed by Google Ads divided by Google Ads spend. The numerator is contested. Meta is claiming much of that same revenue.
True ROAS is what your bank account tells you
True ROAS is calculated from total revenue divided by total ad spend. Period. No attribution model. No claimed conversions. Just the numbers from Shopify and the ad platforms.
For a store spending US$20,000/mo total on Google + Meta and bringing in US$80,000 in revenue:
- True ROAS = 80,000 / 20,000 = 4.0x
- Reported Google ROAS = 4.2x (Google's view)
- Reported Meta ROAS = 3.6x (Meta's view)
- Sum of platform-reported attributed revenue = US$96,000 (overcounted by 20%)
The sum of reported revenues exceeds actual revenue. That is the giveaway. Platforms cannot both be right.
Why this matters more than people realise
If you bid against reported ROAS, you make decisions based on a number that flatters reality. You increase spend on a campaign reporting 5x ROAS when the true contribution is 3x. You miss the campaign reporting 2x that is actually pulling 3x via organic spillover.
We see this constantly. Merchants who think Meta is underperforming because Meta reports lower ROAS than Google, when in fact Meta is doing the upper-funnel work and Google is claiming the bottom-funnel close.
Three signals your conversion tracking is broken
Beyond the platform double-count, the pixel itself is often broken in ways your reports do not surface:
- Pixel fires on wrong action. Meta Pixel set to track "Purchase" event firing on Add-to-Cart instead. We see this in roughly 1 in 5 stores we audit.
- Conversion deleted but campaign still optimising for it. Google Ads campaign optimising for a conversion action you removed weeks ago. Spend continues, optimisation does not.
- Three weeks of zero firings. Pixel installed, configured, then silently broken by a theme update. Reported conversions go to zero but the campaign keeps spending.
A health check looks at all three at once. Most merchants check none of them until ROAS tanks for a month. Our earlier post on Google Ads conversion tracking walks through a 10-minute diagnostic for that side of the stack.
How to calculate true ROAS yourself
For a single calendar month:
- Total revenue from Shopify admin, Analytics, Total sales, that month
- Total spend from Google Ads, Campaigns, spend column, that month
- Total spend from Meta Ads Manager, Ad spend, that month
- Total spend from any other channel (TikTok, Klaviyo paid sends, etc.)
- True ROAS = Total revenue / (Total spend across all paid channels)
Compare against your reported ROAS. The gap tells you how much your attribution layer is exaggerating.
What we do about it
oddly's Steer tier ($149/mo) calculates true ROAS automatically by joining Shopify revenue data with ad spend data across Google, Meta, and other connected channels. Every action card in the dashboard shows true ROAS impact, not reported ROAS.
The Brand health score uses true ROAS as one of its inputs because that is the number that actually determines whether your business makes money on a given dollar of ad spend.
If you are running paid ads on Shopify and have not calculated true ROAS in the last 30 days, that is the highest-leverage hour you can spend this week.