Most reported ROAS numbers are wrong. Not by a little. By 20-60%. We have audited dozens of accounts where the dashboard reported 4x and the actual contribution-margin ROAS was somewhere between 1.4x and 2.1x.
This is not a Google bug. It is a chain of small reporting choices, each one defensible in isolation, that compound into a number nobody should be making decisions on. Here is the math, and how to fix it.
What the dashboard reports
Google Ads' default "Conv. value / cost" column is gross revenue attributed to a click, divided by ad spend. Three things are wrong with that number for almost every account:
- Branded traffic is included as acquisition. Someone Googles your brand name, clicks the paid ad above the organic result, converts. The dashboard counts that as paid acquisition, even though the user would have converted via the organic listing right below for free.
- Returns and refunds are not subtracted. Conv. value is what was checkout-completed, not what was actually delivered and kept. For ecommerce, returns can be 5-30% of gross.
- It is gross revenue, not margin. A 5x ROAS on a 20% gross margin product makes no money. A 2x ROAS on an 80% gross margin product is excellent.
Fix the three, then re-bid the account against the corrected number.
Fix 1: exclude branded traffic
The cheap fix is to add a brand-only negative keyword list to every non-brand campaign. The careful fix is to separate brand search into its own campaign and report on it separately.
- Create a Brand campaign that bids on exact-match variants of your brand name and any common misspellings.
- Add every variant as a negative keyword on every other campaign, including Performance Max via brand exclusions.
- In your reporting, subtract the Brand campaign's revenue and spend from the account-wide ROAS calculation. Report the rest as "acquisition ROAS" and the brand campaign as "brand defence" with its own math.
Brand defence is a real cost: if you do not bid on your brand, a competitor will. But it is a different problem from acquisition, and mixing them produces nonsense.
Fix 2: subtract returns and refunds
Most ecommerce stores have a returns rate they ignore because the dashboard does not surface it. The fix has two parts:
- Net revenue, not gross. Pull Shopify or WooCommerce data into a sheet, calculate net revenue by month (gross minus refunds minus discounts minus shipping refunds). This is what the ROAS calculation should use, not Conv. value.
- Offline conversion adjustments. Google Ads supports adjusting conversion values after the fact when a refund happens. Enable it, and pipe the refund data into the account so smart bidding optimises against net revenue rather than gross.
A 12% returns rate that nobody adjusts for inflates reported ROAS by exactly 12%. Compounded over a quarter of bid decisions, that is the difference between a profitable account and a slow bleed.
Fix 3: report on contribution margin
The number that matters is contribution margin per dollar of ad spend. The formula is:
Contribution Margin per Order = Net Revenue - COGS - Fulfilment Cost - Payment Processing
Contribution-Margin ROAS = (Contribution Margin × Orders) / Ad Spend
This is the only ROAS that maps to profit. Everything else is a vanity metric, useful for sanity checks but not for bid decisions.
Build it into the dashboard:
- Pull COGS and fulfilment cost into a sheet or a BI tool that updates monthly.
- Calculate the per-order contribution margin for each SKU.
- Multiply by orders attributed to each campaign.
- Divide by spend.
Now you have a number you can act on.
What changes when ROAS is correct
We have run this exercise on dozens of accounts. The pattern is always the same:
- The corrected number is 20-60% lower than the reported one.
- One to three campaigns flip from "winning" to "losing" once branded traffic is stripped.
- Smart Bidding strategies set against gross revenue need to be re-tuned against net contribution margin. Target ROAS becomes Target CPA-Margin in most cases, since CPA-Margin is easier to express as a bid signal.
- The total account spend goes down by 15-25% in the first two months, and the absolute profit goes up.
The last point is the surprising one. Most teams hear "your real ROAS is lower than you thought" and assume that means cutting budget. In practice the right response is to cut the unprofitable campaigns aggressively, then scale the profitable ones harder with the freed-up budget. Account spend usually drops first, then climbs to higher than before within a quarter.
The reporting cadence
Daily ROAS is noise on most accounts. Weekly is barely signal. Monthly is the right cadence for bid decisions, with weekly reviews for trend-spotting and creative tests.
The monthly report should include:
- Gross ROAS (the dashboard number, for continuity)
- Net ROAS (after returns and refunds)
- Contribution-Margin ROAS (the number that matters)
- The delta between Gross and Contribution-Margin ROAS as a single percentage
- Brand search spend and revenue, isolated from acquisition
A team that reads this report every month makes different bid decisions from one that reads the dashboard.
What this looks like with us
Google Ads management at MindScrollers starts with a margin model and a corrected ROAS baseline in week one. We do not change a single bid before the math is right.
If you want the corrected number rather than the method, the $990 automation audit covers the account: a corrected ROAS calculation, the brand against acquisition split, and the bid changes that follow from it. Published price, no call.

