Skip to content
Paid Media9 min read

Why your ROAS is lying to you (and what to measure instead)

Every ad platform reports a return on ad spend figure that flatters itself, and most brands make budget decisions from it. The number isn't fabricated — it's just measuring something that has almost nothing to do with whether you made money.

What platform ROAS actually measures

Return on ad spend, as reported inside an ad platform, is the revenue that platform believes it caused divided by the money you spent there. Both halves of that fraction are narrower than they look.

The numerator is attributed revenue — gross revenue, before cost of goods, before shipping, before the discount code the customer used, and before the 22% of orders that come back. The denominator is media spend only; it excludes your management fees, creative production, and platform tooling.

So a campaign reporting 3.0x is telling you it generated three dollars of gross, pre-return revenue for every dollar of media. That is a genuinely useful number for comparing two ad sets inside the same account. It is close to useless for deciding whether the account should exist.

The double-counting problem

A customer sees an Instagram ad on Monday, searches your brand name on Wednesday, clicks a Google ad, and buys. Meta claims the conversion under a view-through window. Google claims it as a last click. Your email tool claims it because the customer was on the list.

Each platform is reporting honestly within its own attribution model. The problem is that these models overlap, and nothing reconciles them. If you add up platform-reported revenue across channels, you will frequently find it exceeds the actual revenue in your Shopify or Stripe account — sometimes substantially.

This isn't a rounding error. In accounts we audit, the sum of platform-claimed revenue typically runs 130–160% of real revenue. Budget decisions made on those numbers systematically over-invest in whichever platform is most aggressive about claiming credit — usually the one with the widest view-through window.

Quick diagnostic: add up the revenue every platform claims for last month and compare it to your actual revenue. The gap is the size of the problem you're budgeting against.

Contribution margin: the number that decides

Contribution margin is what's left from an order after every variable cost of fulfilling it. Build it once and it changes how you read every campaign.

Start with gross revenue, then subtract: cost of goods, inbound freight and duties, pick-pack-and-ship, payment processing, discounts actually redeemed, and expected returns at your real return rate. What remains is what an order contributes toward fixed costs and profit.

Now the ROAS question becomes answerable. If your contribution margin before ad spend is 34% of revenue, you break even at roughly 2.9x ROAS. Every campaign below that is buying revenue at a loss regardless of how healthy the platform dashboard looks.

  • Compute it per SKU, not blended

    Blended margin hides the problem. In most catalogs, one or two hero products carry disproportionate ad spend and disproportionately thin margin. That combination is where money quietly disappears.

  • Use real return rates, not assumptions

    Return rates vary enormously by category — apparel can run 25–40% while consumables run under 5%. Applying a company-wide average across SKUs produces conclusions that are wrong in both directions.

  • Include discounts at redemption rate

    A 15% code that 40% of buyers use costs you 6% of revenue, not 15%. Modelling it at face value makes profitable campaigns look unprofitable.

Blended MER as the daily control metric

Contribution margin tells you what a campaign is worth. Marketing efficiency ratio tells you whether the whole operation is working. MER is simply total revenue divided by total advertising spend across every channel, measured against your actual sales figures rather than any platform's.

MER has one enormous advantage: it cannot be double-counted. There is one revenue figure and one spend figure, both from systems you control. It doesn't care about attribution windows, iOS privacy changes, or cookie deprecation.

Its weakness is that it can't tell you which channel to cut. That's fine — that's what incrementality tests and geo holdouts are for. Use MER as the health metric you watch daily and contribution margin as the metric that sets bid targets.

What to do this week

You don't need a data warehouse to fix this. Three steps get most of the value.

  • Build the contribution margin model

    A spreadsheet is genuinely fine to start. One row per SKU, columns for each variable cost. Most teams find at least one surprise within an hour of building it.

  • Add a post-purchase attribution survey

    One question at checkout: 'how did you hear about us?' It's self-reported and imperfect, but it's an independent signal that doesn't share a failure mode with pixel tracking. When it disagrees sharply with your platforms, believe the direction of the disagreement.

  • Implement server-side conversion tracking

    Browser pixels miss 20–40% of conversions post-iOS 14.5. Server-side events through Meta CAPI and Google Enhanced Conversions recover most of it, which improves both your reporting and the algorithm's targeting.

We do this for a living

If you'd rather not build this yourself, these are the services where it lives.

Rather not DIY

We'll run this on your account.

A free 30-minute teardown of your funnel, ads, and analytics. You keep the findings whether or not we work together.