What ROAS measures, and what it deliberately leaves out
ROAS is a revenue ratio. Spend $4,000, book $16,000 of attributed revenue, and your ROAS is 4.0× — four dollars of top line for every dollar of media. Every major ad platform reports it, usually as “purchase ROAS” or “conversion value / cost”, and the Marketing Accountability Standards Board's Common Language Marketing Dictionary defines it the same way. The definition is not in dispute; what the number means is where the trouble starts.
It is also the number most likely to be misread, for one structural reason: the numerator is revenue, not profit. A 4.0× ROAS sounds like a 300% return. It is not. If your gross margin is 45% and each order carries $8 of shipping and processing, that $16,000 of revenue leaves $6,400 of contribution, against $4,000 of spend — a real gain of $2,400. On the same revenue with a 20% margin, the campaign would have lost money.
So ROAS has no universal good value. A 2.0× ROAS is excellent for a software product with 90% margins and disastrous for a grocery reseller at 12%. The only meaningful comparison is against your break-even ROAS, which is one divided by your contribution margin. At a 40% contribution margin you need 2.5× to break even. At 20% you need 5.0×. At 10% you need 10.0×, which is why low-margin businesses almost never make paid acquisition work on first orders alone.
ROAS also says nothing about incrementality. It counts revenue the platform claims, including orders from customers who were already going to buy. That is a measurement problem no formula can fix, and it is covered further down.
The formula, and the three variants worth knowing
ROAS = attributed revenue ÷ ad spend. Both numbers must cover the same campaign and the same date range, and revenue should be gross of nothing but sales tax. If your platform reports revenue including tax or shipping charged to the customer, strip those out first — you never keep them.
Gross-profit ROAS = contribution ÷ ad spend. Replace revenue with what you actually keep: revenue × gross margin, minus the variable costs each order incurs. This version has an unambiguous threshold. Above 1.0× the campaign paid for itself; below 1.0× it did not. Nothing about your margin needs to be remembered because it is already inside the number.
Break-even ROAS = 1 ÷ contribution margin. The derivation is one line. Profit after ad spend is R·cm − S, where R is revenue, cm the contribution margin and S the spend. Set it to zero: R·cm = S, so R ÷ S = 1 ÷ cm. The left side is ROAS. Nothing else enters — not the order count, not the price point, not the channel.
Blended ROAS, or MER. Divide all revenue by all marketing spend and you get the marketing efficiency ratio. It cannot be double-counted, cannot be inflated by attribution, and is the number a CFO should watch. Its weakness is that it cannot tell you which campaign to cut. Use channel ROAS to allocate and MER to sanity-check the total.
Worked example: $4,000 of Meta spend on a 45% margin product
A direct-to-consumer brand runs a prospecting campaign for a month. Ads Manager reports $4,000 spent, 100 purchases and $16,000 of purchase conversion value. Gross margin on those products is 45%. Each order costs another $8 in pick-and-pack, a shipping subsidy and card processing.
- ROAS: 16,000 ÷ 4,000 = 4.00×, or 400%.
- Average order value: 16,000 ÷ 100 = $160.00.
- Cost per order: 4,000 ÷ 100 = $40.00.
- Gross profit: 16,000 × 0.45 = $7,200.
- Other variable costs: 100 × $8 = $800.
- Contribution before advertising: 7,200 − 800 = $6,400.
- Contribution margin: 6,400 ÷ 16,000 = 0.40 = 40%.
- Break-even ROAS: 1 ÷ 0.40 = 2.50×.
- Gross-profit ROAS: 6,400 ÷ 4,000 = 1.60×.
- Profit after ad spend: 6,400 − 4,000 = $2,400.
Check it per order to be sure. Each $160 order yields $72 of gross profit, less $8 of fulfilment leaves $64 of contribution, and the ad cost $40 — so $24 of profit per order, times 100 orders, is $2,400. The two routes agree.
Now see how fragile that looks from the wrong angle. The campaign is 60% above its break-even ROAS, which sounds like a wide margin of safety. In dollars, it converts $16,000 of revenue into $2,400 of profit — a 15% net contribution margin on the revenue it generated, before a cent of overhead, salaries or software. Halve the ROAS to 2.0× and the same spend loses $800.
How to read your ROAS: the break-even test and the headroom test
Run two checks in order.
The break-even test. Is ROAS above 1 ÷ contribution margin? If yes, the campaign added contribution dollars this period. If no, it destroyed them, and no amount of creative testing changes the arithmetic — you need a higher margin, a higher average order value, or a cheaper click.
The headroom test. How far above break-even are you, and what would you give up to grow? Paid channels have rising marginal cost: the next $1,000 of spend always converts worse than the last, because the cheapest audience is bought first. A campaign at 4.0× against a 2.5× break-even has room to spend more at a worse ratio and still make money, and total profit usually peaks well below peak ROAS. Optimising to maximise ROAS reliably starves growth.
Two extra considerations change the threshold legitimately. First, repeat purchase: if a first-time buyer is worth 2.2 orders over a year, a first-order ROAS below break-even can still be correct — but you must be able to prove the repeat rate from cohort data, not hope. The customer lifetime value calculator and the CAC payback period calculator put a number on it. Second, returns: platform revenue is gross of refunds, so a 15% return rate turns a reported 3.0× into an effective 2.55×. Deduct returns from revenue before you compare against break-even, or build the allowance into the per-order cost.
For target-setting, invert the question. Decide the profit margin you want on advertised revenue, then the required ROAS is 1 ÷ (cm − desired margin). At a 40% contribution margin and a 15% target margin, you need 1 ÷ 0.25 = 4.0×.
Break-even ROAS by contribution margin
| Contribution margin | Break-even ROAS | Equivalent ACoS | ROAS for a 10% net margin |
|---|---|---|---|
| 10% | 10.00× | 10.0% | — |
| 15% | 6.67× | 15.0% | 20.00× |
| 20% | 5.00× | 20.0% | 10.00× |
| 25% | 4.00× | 25.0% | 6.67× |
| 30% | 3.33× | 30.0% | 5.00× |
| 40% | 2.50× | 40.0% | 3.33× |
| 50% | 2.00× | 50.0% | 2.50× |
| 60% | 1.67× | 60.0% | 2.00× |
| 75% | 1.33× | 75.0% | 1.54× |
| 90% | 1.11× | 90.0% | 1.25× |
The last column is 1 ÷ (cm − 0.10). At a 10% contribution margin there is no ROAS that leaves a 10% net margin, which is why that cell is empty.
Reported ROAS is not incremental ROAS
Every platform's attribution model credits itself generously. Click-through windows of 7 days, view-through windows of a day, last-touch logic inside a walled garden and modelled conversions all push reported revenue up. Add two platforms and the same order can appear in both reports, so channel ROAS figures routinely sum to more revenue than the business actually took.
The only reliable correction is an experiment: a geographic holdout, a conversion-lift test, or a scheduled spend-down where you cut a channel and watch total revenue. Where you cannot experiment, use your blended MER as the ceiling and treat channel ROAS as a relative ranking rather than an absolute truth.
Mistakes that inflate a ROAS figure
- Using revenue instead of contribution. The default error. A 3.0× ROAS on a 25% contribution margin is a loss, and the platform will still colour it green.
- Leaving returns in the numerator. Refunded orders keep their ad cost and lose their revenue. Deduct at your historical return rate before comparing to break-even.
- Counting shipping revenue and sales tax. Money you collect and pass on is not margin. Strip it out of attributed revenue.
- Ignoring agency and creative cost. If a retainer is 15% of media, your effective spend is 1.15× the platform number and your true ROAS is 13% lower than reported.
- Comparing across attribution windows. A 7-day-click ROAS is not comparable to a 1-day-click ROAS, and neither is comparable to a last-non-direct figure from your analytics tool.
- Reading branded search as acquisition. Bids on your own brand name harvest demand that already existed. Their ROAS is spectacular and largely non-incremental.
- Optimising the ratio instead of the profit. Cutting spend always lifts ROAS and usually cuts total profit. Track contribution dollars alongside the ratio.
ROAS, ACoS, CPA and ROMI: choosing the right frame
These metrics are algebraically related and answer different questions, so pick by audience.
ACoS is ROAS upside down, expressed as a cost percentage: ACoS% = 100 ÷ ROAS. Marketplace sellers think this way, and the Amazon ACoS calculator works the same numbers with a break-even set to the pre-ad margin.
CPA replaces the revenue denominator with a conversion count, which makes it the better metric whenever order values are similar or when you are buying leads rather than sales. Use the cost per acquisition calculator for the maximum CPA your margin supports, and the cost per click calculator to turn that into a bid.
ROMI expresses the same result as a percentage return on the marketing investment, which is what a board deck and a finance team expect. The marketing ROI calculator handles it, including the incremental version that nets out baseline sales.
Underneath all four sits your contribution margin, and it is worth getting right before you tune a single bid. Rebuild it from the ground up with the contribution margin calculator, or check the price itself against your target with the gross profit margin calculator. A break-even ROAS built on a guessed margin is a guess with a decimal point.
What this calculator does not do. It takes attributed revenue at face value, so it cannot tell you what was incremental. It applies one margin and one per-order cost to every order in the period, which discounts and mixed baskets break. It ignores refunds unless you deduct them from revenue yourself, ignores repeat purchases entirely, and counts only the spend you type in — so agency retainers and creative production sit outside the ratio unless you add them. Every one of those omissions pushes the true figure down, never up.
