ROAS vs POAS: Why ROAS Misleads, and What to Measure Instead
Return on ad spend quietly became revenue on ad spend. It double-counts across platforms, ignores margin, and rewards demand you already owned. Here is the profit version: contribution-margin ad efficiency, break-even ROAS, the CM1/CM2/CM3 ladder, and where MER, incrementality, MMM and MTA actually fit.
Why ROAS became the default
ROAS was meant to mean Return on Ad Spend. In practice it means Revenue on Ad Spend, and the reason is structural rather than philosophical. When ecommerce analytics matured, platforms could measure revenue at the moment of conversion, but they could not see your cost of goods, your shipping, your payment fees or your returns. Profit was not available, so the readily available number, revenue, was substituted in. ProfitMetrics makes this point plainly: ROAS in practice says nothing about margins, payment fees or shipping, because the denominator platforms could populate was revenue, not return.
Once revenue became the numerator, Google and Meta wired ROAS in as the headline KPI and, more consequentially, as a bidding target. Target ROAS bidding optimises a campaign toward revenue per ad dollar. That is a coherent objective for the platform, which is paid on spend, and an incoherent one for the operator, who is paid on profit. The two only align when contribution margin is uniform across every product the campaign can sell, which is almost never true.
None of this makes ROAS useless. Revenue per ad dollar is a real, fast, available denominator, and it is the right starting point for a profit calculation. The problem is treating it as the answer. A platform has a structural incentive to inflate the number it reports back to you, because a higher reported ROAS justifies more spend. The job of profit-led measurement is to take that denominator and finish the calculation the platform stopped short of.
ROAS was meant to mean Return on Ad Spend. In practice it means Revenue on Ad Spend, and that gap is where the money leaks.
Three ways ROAS misleads
ROAS fails in three distinct ways, and they compound. It double-counts the same sale across platforms, it ignores the margin on the revenue it counts, and it rewards demand you would have captured anyway. Treat them as three separate corrections, because each has its own fix and its own calculator.
Misleads #1: it double-counts across platforms
Every ad platform applies its own attribution window and claims 100% of a conversion under its own rules. Meta counts a view-through and a modeled conversion; Google counts an enhanced or consent-mode modeled conversion; both can credit the same order. When you sum platform-reported conversions, you are adding overlapping claims, not distinct sales.
The magnitudes are documented, not hypothetical. C3 Metrics reports that platform-claimed conversion counts run 150 to 200% of actual orders in multi-channel programs. Meta platform reporting averages 26% more conversions than site-side analytics once view-through and modeled conversions are included. Google Ads over-attributes by an estimated 15 to 20% when modeled conversions are switched on. Summed across a stack, the platform reports can imply a company is 2 to 4 times its actual size, with Rockerbox cited up to 5x.
The direction of the error is predictable. Last-touch channels that sit at the conversion event, paid search and direct, are systematically over-credited. Upper-funnel channels that create demand, display, social and video, are under-credited because their contribution falls outside the converting touch's window. Optimise on platform reports and you tend to defund the channels that create demand and overfund the channels that harvest it.
This is the golden rule, and it is non-negotiable in Blufire: platform-reported ROAS and Shopify last-touch are reported, not real. Shopify's acquisition channel is a last-touch guess; platform conversions are self-serving claims. Neither is truth. The honest baseline is one conversion per order, reconciled. Our attribution-overlap-calculator quantifies the gap on your own numbers so the double-count is visible rather than assumed.
| Source of inflation | Reported magnitude | Why it happens |
|---|---|---|
| Summed platform-claimed conversions | 150-200% of actual orders | Each platform claims 100% of the same sale under its own window |
| Meta vs site-side analytics | +26% conversions | View-through plus modeled conversions |
| Google Ads with modeled conversions | +15-20% | Enhanced Conversions / Consent Mode modeling |
| Whole stack summed | Implies 2-5x real size | Overlapping claims added together |
Platform-reported ROAS and Shopify last-touch are reported, not real.
Misleads #2: it ignores margin
Revenue per ad dollar says nothing about the cost of the revenue. A ROAS of 6 on a product line that nets 25 cents of contribution margin per dollar of revenue is a very different business outcome from a ROAS of 6 on a line that nets 60 cents, yet the headline number is identical. ROAS counts the top line and stays silent on COGS, shipping, payment fees and returns, which is where the profit actually lives.
ProfitMetrics provides the canonical illustration. Across four products in one store, the break-even ROAS ranges from 2.12 for a high-margin branded frying pan to 8.88 for a low-margin mixer. A single blended ROAS target of 10 would have shut down the three campaigns that were, on a contribution-margin basis, the most profitable in the store. Identical revenue logic, opposite profit verdicts. A blended target does not just blur the picture; it actively kills your best orders because they happen to carry a lower revenue multiple.
The fix is to stop measuring ad efficiency on revenue and start measuring it on margin. That is the next section.
A blended ROAS target of 10 would have shut down the three most profitable campaigns in the store.
Misleads #3: it rewards demand you already owned
A high ROAS can simply mean the ad took credit for a sale that would have happened anyway. Brand-search campaigns are the clearest case: someone who types your brand name was already going to buy, and a paid click on top of a strong organic listing harvests intent you already owned. The conversion gets attributed to the ad, the ROAS looks excellent, and the incremental contribution can be close to zero.
One honest counterweight comes from Google's own research. Across more than 400 Search Ads Pause Studies on paused accounts, an average of 89% of paid search ad clicks were incremental, meaning they were not made up for by organic clicks when the ads were paused. Google reports this number was consistently high across verticals. That is the pro-ad headline, and it is real. But note the scope: this is an average across non-brand and brand search combined, and the blog does not segment the two.
The brand-keyword caveat is a separate, separately established finding. eBay's large-scale paid-search experiments (Blake, Nosko and Tadelis, published in Econometrica) found that returns to brand-keyword search ads were close to zero, because consumers searching the brand name would have reached the site through organic results or direct navigation anyway. Different study, same conclusion the Google headline does not reach: the 89% average does not license you to assume your brand campaign is incremental.
Separating caused conversions from claimed conversions requires incrementality testing, not attribution. Platform ROAS measures correlation; a holdout measures causation. We return to iROAS and holdout design in the measurement section, but the point here is that ROAS structurally cannot tell you whether an ad created a sale or merely stood next to one.
The profit version: contribution-margin ad efficiency (POAS as the synonym)
The correction for the margin problem is to put profit in the numerator. Contribution-margin ad efficiency divides the contribution margin a channel generated by the ad spend that generated it. Above 1, the channel made money on a contribution basis; below 1, it lost money. The industry shorthand for this is POAS, Profit on Ad Spend, trademarked and popularised by ProfitMetrics and framed by others (Judeluxe) as contribution margin generated per pound of ad spend. We lead with contribution-margin ad efficiency and treat POAS only as the noted synonym, because the profit you put in the numerator should be true contribution margin, not an undefined gross profit.
The identity that links the two metrics is simple when margin is uniform: POAS = ROAS x contribution margin %. That single multiplication is what platforms leave out, and it reorders your campaigns. The worked example below is Demonstrative, but the arithmetic is exact.
Campaign A returns a ROAS of 6.0 on a product line carrying a 25% contribution margin. POAS = 6.0 x 0.25 = 1.5, so $1.50 of contribution margin per ad dollar. Campaign B returns a ROAS of 4.0 on a 60% contribution margin line. POAS = 4.0 x 0.60 = 2.4. The lower-ROAS campaign is 60% more profitable per ad dollar. A revenue-ROAS target would have favoured the wrong one and starved the better one. This is the high-ROAS-low-margin trap, and it is invisible until you finish the calculation.
Blufire computes this number on TRUE contribution margin, revenue minus COGS, shipping, returns and fees, then hands the operator the highest-value move with the dollar impact attached. The output is not a ratio to admire; it is profit-per-channel you can act on. The contribution-margin-calculator gets you the margin input; the true-roas-calculator turns a reported ROAS into the profit figure.
| Campaign | ROAS | Contribution margin % | POAS (CM per ad $) | Verdict |
|---|---|---|---|---|
| A | 6.0 | 25% | 1.5 | Profitable, but the weaker line |
| B | 4.0 | 60% | 2.4 | 60% more profit per ad dollar |
Break-even ROAS = 1 / contribution margin %
Before you can judge a campaign, you need the line in the sand. Break-even ROAS is the revenue multiple at which an ad dollar exactly covers the cost of the goods it sold. The formula is the reciprocal of margin: break-even ROAS = 1 / contribution margin % (RedTrack states it as 1 / gross profit margin). At a 25% contribution margin, break-even ROAS = 1 / 0.25 = 4.0. At a 60% margin, break-even ROAS = 1 / 0.60 = 1.67. At a 50% margin, it is 2.0.
Reading the Demonstrative example back through this line: Campaign A at ROAS 6.0 on a 25% margin clears its break-even of 4.0 by 1.5x, so it is genuinely profitable. A ROAS 3.5 campaign on the same 25% line is below the 4.0 break-even and is losing money despite looking respectable. The break-even threshold is what turns a ROAS number from decoration into a decision.
Triple Whale derives the same line from unit economics, which is useful when you think in AOV and CAC rather than margin percentages. If AOV x gross margin minus CAC equals zero, then break-even ROAS = AOV / CAC. Their verified example: AOV $50, gross margin 50% gives $25 of gross profit; a CAC of $25 leaves zero net income, so break-even ROAS = $50 / $25 = 2.
One caveat that both Triple Whale and honest practice insist on: break-even ROAS clears variable cost only. It excludes G&A, salaries, legal, banking, tax and interest. Clearing your break-even ROAS is necessary for net profit but not sufficient. It tells you the ad paid for the product it sold, not that the business made money. Set the threshold with the true-roas-calculator and the contribution-margin-calculator, then treat it as a floor, not a finish line.
Measurement sits on contribution margin: the CM1/CM2/CM3 ladder
POAS and break-even ROAS both depend on getting the margin number right, and margin is not a single figure. It is a ladder, and ad efficiency must be measured on the right rung. Each rung strips out a further layer of variable cost, so the profit you credit to a channel is the profit that actually survives the sale.
CM1 is revenue minus COGS. It is the gross contribution before any of the costs of selling and fulfilling the order. CM2 takes CM1 and subtracts the variable selling costs that scale with each order: shipping, payment and processing fees, fulfilment, and returns. CM3 takes CM2 and subtracts the variable marketing and ad spend attributable to the order. Ad efficiency belongs on CM2 (the margin available to pay for marketing) or CM3 (after marketing), never on revenue.
The reason this matters in practice is that the gap between revenue and CM2 is exactly the gap ROAS ignores. A line can look strong at the revenue line, lose most of it to shipping and payment fees by CM2, and turn negative once ad spend lands at CM3. Measuring on CM2/CM3 is what makes the high-ROAS-low-margin trap visible before you scale spend into it.
This is the number Blufire computes before handing over the move. We build the ladder on true contribution margin, reconcile the attribution underneath it, and then surface the highest-value action with its dollar impact, not just a ratio. The marketing-profitability and profit-led-measurement guides walk the full ladder; the contribution-margin-calculator gets you the per-order figure to start.
MER, the blended view, and where incrementality, iROAS, MMM and MTA fit
The double-count problem (misleads #1) has its own family of fixes, and they sit alongside the margin fix rather than replacing it. Start with the blended view. MER, the Marketing Efficiency Ratio, is total revenue divided by total marketing spend, also called blended ROAS or eROAS (Northbeam, Common Thread Co, Upstack and Triple Whale all define it identically). Because it counts all revenue against all spend, it cannot double-count the way summed platform ROAS does. MER is table stakes, not a differentiator, but it is the fastest way to see the double-count gap: put blended MER next to the sum of your platform-reported ROAS and the size of the discrepancy is the inflation.
MER tells you the blended truth but not the causal truth. For causation you need incrementality testing. A holdout or geo holdout withholds ads from a comparable group and measures the lift, isolating conversions the ads actually caused from conversions that would have happened anyway (Haus). The output is iROAS, incremental ROAS: iROAS = incremental revenue (test minus holdout) / ad spend. A Demonstrative case shows why it matters: a brand-search campaign reports platform ROAS 8.0, but a geo holdout finds 70% of those conversions would have come through organic anyway, so incremental revenue is 30% of attributed revenue and iROAS = 8.0 x 0.30 = 2.4. The best campaign by ROAS is mostly harvesting owned demand. Platform ROAS measures correlation; iROAS measures causation.
MMM and MTA are the two attribution lenses, and they are complements, not rivals (Funnel). MMM, marketing mix modeling, is top-down, aggregate, regression-based and privacy-durable; because it does not depend on user-level tracking it is the right tool for business-level budget and incrementality decisions. MTA, multi-touch attribution, is bottom-up, granular and user-level; it assigns each conversion exactly once, distributing fractional credit across the touchpoints so the shares sum to 100% of one conversion, not 100% each for a 400% total (C3 Metrics). That deduplication alone produces a more honest count than summing platform reports, independent of how accurately the journey is stitched. Incrementality testing is the experimental ground truth that calibrates both.
Where Blufire differs: the double-count narrative is well-owned by C3 Metrics, Rockerbox, Northbeam and Haus, who tie dedup to a cleaner conversion count. Blufire ties deduplicated attribution to contribution margin, so the output is profit-per-channel you can act on, not a fractional-credit chart. We show each platform's self-reported figures next to our reconciled, deduplicated attribution and the Shopify total, with the over-report made explicit, and we never present Shopify last-touch or platform claims as truth. The build-vs-rent-attribution guide covers why we build the reconciliation rather than rent a last-touch pipe.
| Lens | Shape | Answers | Caveat |
|---|---|---|---|
| MER / blended ROAS | All revenue / all spend | Is the whole program efficient? | Blended, not per-channel; no causation |
| MTA | Bottom-up, user-level | Which touchpoints share the credit? | Privacy-fragile; needs journey stitching |
| MMM | Top-down, aggregate | How to set budget across channels? | Lower granularity; modeling assumptions |
| Incrementality / iROAS | Experimental holdout | Did the ad actually cause the sale? | Requires test design; calibrates the others |
Platform ROAS measures correlation. iROAS measures causation. The two are not the same number.
What to do this week
You do not need a new attribution stack to start. Five moves, in order, close most of the gap between reported and real.
1. Pull blended MER alongside the sum of your platform-reported ROAS. The difference is your double-count, made visible. Use the attribution-overlap-calculator to put a number on it.
2. Compute your contribution margin % per product line or per campaign, then set break-even ROAS = 1 / CM%. The contribution-margin-calculator gets you the input; the true-roas-calculator turns reported ROAS into the profit figure and the break-even line.
3. Reframe your targets in POAS / contribution-margin terms. Replace the single blended ROAS target with a per-line break-even ROAS, and judge campaigns on CM2/CM3, not revenue.
4. Flag your brand versus non-brand spend and schedule an incrementality test on the brand campaign. Assume nothing from the 89% average; measure your own lift and compute iROAS.
5. Stop reporting Shopify last-touch as truth. Label platform-reported and Shopify-sourced channel figures as reported, not real, until a reconciled, deduplicated number sits behind them.
Deeper reading: ROAS lies (/blog/roas-lies), three platforms one sale (/blog/three-platforms-one-sale), profit-led measurement (/resources/guides/profit-led-measurement), build vs rent attribution (/resources/guides/build-vs-rent-attribution), and marketing profitability (/resources/guides/marketing-profitability). Calculators: true ROAS (/free-tools/true-roas-calculator), attribution overlap (/free-tools/attribution-overlap-calculator), contribution margin (/free-tools/contribution-margin-calculator).
Questions
Sources
- ProfitMetrics - ROAS vs POAS
- RedTrack - Break-even ROAS
- Triple Whale - Break-even ROAS
- Northbeam - Marketing Efficiency Ratio (MER)
- C3 Metrics - Deduplication
- Google Research - Search ads drive 89% incremental traffic
- Blake, Nosko & Tadelis - Consumer Heterogeneity and Paid Search Effectiveness (eBay experiments, Econometrica)
- Haus - Meta incrementality testing
- Funnel - MTA vs MMM