Why ROAS Doesn't Equal Profitability
ROAS measures revenue returned per unit of ad spend. It says nothing about the cost of producing that revenue, so two campaigns at an identical 3x ROAS can sit either side of break-even. Your break-even ROAS is one divided by your contribution margin rate, which means it changes whenever discounting, shipping or product mix moves.
Written by Atul Tirkey · Co-founder, NetNet
Updated September 6, 2026 · 4 min read
ROAS is the most-quoted number in ecommerce advertising and one of the least decisive. It is not wrong, and it is not useless. It simply answers a narrower question than the one it gets used for.
The question it answers is: how much revenue came back per unit of spend. The question everyone actually wants answered is: did we make money. Those coincide only when margin is constant, and margin is never constant.
What ROAS measures
ROAS divides attributed revenue by advertising cost. A campaign that spent $10,000 and produced $30,000 of attributed revenue has a ROAS of 3.0.
Two things are missing from that ratio, and both are large.
The first is the cost of producing the revenue. Of that $30,000, some went to suppliers, some to carriers, some to a payment gateway. What remains is contribution margin, and only contribution margin can pay for the advertising.
The second is whether the revenue was really caused by the ads. Platform-attributed revenue includes purchases that would have happened anyway, and each platform counts independently inside its own windows.
ROAS is therefore a ratio of an overstated numerator to an understated denominator, compared against a threshold nobody has calculated.
The break-even ROAS calculation
The threshold is straightforward, and most stores have never worked it out.
Break-even ROAS = 1 ÷ contribution margin rate
At a 50% contribution margin, every revenue dollar leaves 50 cents to pay for advertising, so you break even at 2.0x. At 40%, break-even is 2.5x. At 30%, it is 3.3x. At 25%, 4.0x.
That single line reframes most ROAS conversations. A 3.0x ROAS is comfortable at a 45% margin and loss-making at a 28% margin. Neither the platform nor the ad account knows which situation you are in, because neither knows what your products cost or what you paid to ship them.
The number to write on the wall is not a ROAS target. It is your contribution margin rate, from which the ROAS target follows.
Why the same ROAS means different things
Contribution margin rate is not a constant, which means break-even ROAS moves under your feet:
- Discount depth. A code running on a campaign lowers margin on every order it touches, raising the ROAS you need.
- Product mix. Campaigns sell different things. One pushing accessories and one pushing a heavy bundled kit will have materially different margins at identical ROAS.
- Shipping. A free-delivery threshold turns a revenue line into a cost line, and it does so disproportionately on lower-value orders.
- Payment mix. Cash on delivery, international cards and alternative methods carry different fees and different failure rates.
A store can hold ROAS perfectly steady all quarter while its break-even ROAS climbs past it. Everything in the ad account looks unchanged; the business quietly moves from profitable to not.
Blended versus platform-reported
There are two ways to divide revenue by spend and they disagree, usually by a lot.
Platform-reported takes each platform’s claimed conversions. Because platforms attribute independently and generously, summing them overstates real revenue — sometimes substantially.
Blended takes total store revenue and divides by total advertising spend. It cannot be gamed by attribution windows, and it includes organic and returning-customer revenue that advertising did not buy, so it flatters spend efficiency instead.
Neither is correct alone. Blended is the better number for deciding whether total spend is sustainable, because it reconciles to real money. Platform figures are better for relative decisions inside a channel — which creative, which audience — where the attribution bias is at least consistent.
The retention argument, used honestly
The standard defence of a below-break-even ROAS is that customers come back, so the first order does not have to pay for itself.
This is sometimes true and frequently invoked without evidence. The difference matters, because it is the single most common way a store talks itself into sustained unprofitable spending.
Using it honestly requires three things. A measured repeat rate, taken from your own cohort data rather than a category benchmark — what proportion of customers acquired in a given month bought again within ninety days. A measured second-order margin, which is usually better than the first because there is no acquisition cost, but sometimes worse because repeat buyers use loyalty discounts. A payback period you have actually committed to, stated in months, with the cash to fund the gap in the meantime.
With those three, accepting a 2.0x ROAS against a 2.5x break-even is a financing decision. Without them it is a hope, and the tell is that nobody can say what repeat rate the plan depends on.
The test to apply: if the repeat rate came in ten points below assumption, would anyone notice, and when?
What to optimise instead
Two changes remove most of the ambiguity.
Compare contribution margin per order against acquisition cost per order. Both are denominated in currency, both come from the same order data, and the comparison needs no attribution model to interpret. If margin per order is $45 and a customer costs $38, the order works.
Track profit after advertising as a period figure. Contribution margin for the period, minus total advertising spend including agency fees. It reconciles to actual money, it cannot be inflated by overlapping windows, and it is the number that determines whether a good month was earned or bought.
ROAS keeps its place as a within-channel diagnostic. What it should stop being is the number that decides whether to scale.
Two campaigns, one ROAS, opposite outcomes
Both campaigns returned three dollars of revenue for every dollar spent. Only one of them made the business any money.
| Line | Relative size | Amount |
|---|---|---|
| Campaign A revenue $10,000 spend, 3.0x ROAS | $30,000 | |
| Campaign A contribution margin 45% — full-price bestsellers | $13,500 | |
| Campaign A ad spend | $10,000 | |
| Campaign A profit after ads | $3,500 | |
| Campaign B revenue $10,000 spend, 3.0x ROAS | $30,000 | |
| Campaign B contribution margin 28% — discounted, heavier products | $8,400 | |
| Campaign B ad spend | $10,000 | |
| Campaign B profit after ads | −$1,600 |
Identical ROAS, a $5,100 swing in outcome. Campaign A needed a 2.2x return to break even and cleared it comfortably. Campaign B needed 3.6x and fell short. Nothing in the ROAS figure itself could have distinguished them.
Where the numbers come from
Every figure above traces to a specific field in a specific system. These are the ones that matter, and where each one goes wrong.
| Figure | Source | Where it breaks |
|---|---|---|
| Campaign revenue | Ad platform conversion reporting | Platforms count conversions inside their own attribution windows, which overlap and double-count across channels. |
| Contribution margin by campaign | Orders attributed to the campaign, costed individually | Requires order-level cost data, since campaigns sell different product mixes at different margins. |
| Ad spend | Platform billing, plus agency fees and tax on ad invoices | Platform-reported spend excludes both, understating true cost by the agency percentage. |
What this does not tell you
- This comparison treats each campaign as though it stands alone. In practice channels assist each other, and a campaign that looks unprofitable in isolation may be initiating purchases that close elsewhere.
- It also ignores repeat purchases entirely. A campaign acquiring customers with strong retention can justify a first-order loss, which no single-order calculation will ever show as acceptable.
Frequently asked questions
What is a good ROAS?
There is no universal figure, because the threshold is set by your own margin. Break-even ROAS is one divided by your contribution margin rate: a 50% margin breaks even at 2.0x, a 30% margin needs 3.3x. A "good" ROAS is simply one comfortably above your own line.
How do I calculate break-even ROAS?
Divide one by your contribution margin rate expressed as a decimal. At 40% contribution margin, break-even ROAS is 1 ÷ 0.4, or 2.5x. Below that the campaign loses money no matter how healthy the ROAS looks in the platform.
What is POAS?
Profit on ad spend — profit generated per unit of advertising, rather than revenue. It answers the question ROAS is usually being asked to answer, and unlike ROAS it does not need a separate margin figure to interpret.
Why does platform ROAS differ from what I see in Shopify?
Platforms attribute conversions using their own click and view windows, and each one claims credit independently. Summing them typically produces more revenue than the store actually took, which inflates every ROAS figure derived from it.
Keep reading — Ads, CAC & marketing profit
Profit after Meta ads
Joining platform spend to actual margin.
Shopify contribution margin
The rate that sets your break-even.