Insights / Performance marketing
ROAS or contribution margin? How to steer ad budget by margin
Sascha Blum · · 5 min read
Steer your ad budget by contribution margin, not by ROAS alone. ROAS measures revenue per euro of advertising, but says nothing about cost of goods, shipping, fees and returns. Only the break-even ROAS, calculated as 1 divided by your contribution margin ratio, shows when a campaign starts making money.
Key points
- Break-even ROAS = 1 / contribution margin ratio. At a 40% ratio, a campaign only makes money from a ROAS of 2.5.
- Returns, shipping and payment fees lower the ratio, so a seemingly good ROAS can mean a loss.
- New customers may be acquired below break-even if their contribution margin over the customer lifetime supports it.
- Set a target ROAS per product group and never mix gross and net values.
The metrics at a glance
ROAS
Return on ad spend compares the revenue attributed to an ad with its cost. Shopify defines it as revenue from ads divided by ad costs. Google Ads uses the same logic: in its help article on target ROAS, Google calculates €5 of revenue per €1 of ad spend for a shoe shop as a 500% target ROAS. So ROAS says nothing about costs beyond the ad budget. Shopify itself points out that ROAS measures revenue, while ROI assesses profit.
Contribution margin and contribution margin ratio
According to the business glossary of Munich Business School, contribution margin is the difference between sales revenue and variable costs. In online retail, these are mainly cost of goods, shipping and packaging, payment fees and returns costs. The contribution margin ratio is the contribution margin divided by revenue.
Break-even ROAS
A simple calculation follows from both definitions: a campaign covers its costs exactly when the ad budget equals the contribution margin it generates. This gives:
Break-even ROAS = 1 / contribution margin ratio
At a ratio of 40%, the break-even ROAS is 2.5. Only above that does the campaign earn money that contributes to covering fixed costs.
POAS
Profit on ad spend turns the perspective around: instead of revenue, gross profit is divided by ad costs. ProfitMetrics describes POAS as gross profit from advertising divided by ad costs; break-even is always 1. Ideally, calculate POAS on the basis of contribution margin, i.e. including shipping, fees and returns.
MER or blended ROAS
The marketing efficiency ratio divides total revenue by total marketing spend. Shopify also calls it blended ROAS. It does not depend on the attribution of individual platforms, but it also does not show which campaign triggered which sale. It is therefore a control metric for the overall budget, not a steering metric for individual ad groups.
Worked example: when a ROAS of 2.2 means a loss
The following is our own example calculation. All values are assumptions for a fictitious store and are intended to show the method:
- Basket: €100 net (€119 gross at 19% VAT)
- Cost of goods: €40 per order
- Shipping and packaging: €6 per order
- Payment fees: €2 per order, not refunded on returns
- Return rate: 15% of orders, returned in full, goods can be resold
- Return shipping and handling: €8 per return
- The ad platform reports the order value at the time of purchase and does not deduct later returns
For 100 orders, the platform reports €10,000 in revenue. In reality, 85 orders worth €8,500 are kept. From this, €3,400 cost of goods, €510 shipping and €170 payment fees are deducted. That leaves €4,420. The 15 returns each cost €6 outbound shipping, €8 return handling and €2 fees, €240 in total.
| Item | Amount |
|---|---|
| Revenue reported by the platform (net) | €10,000 |
| Contribution margin before advertising | €4,180 |
| Contribution margin ratio (based on reported revenue) | 41.8% |
| Break-even ROAS (net) | 2.39 |
| Ad costs at ROAS 2.2 | €4,545 |
| Result after advertising | −€365 |
| POAS (€4,180 / €4,545) | 0.92 |
A ROAS of 2.2 looks decent in the ad account. In this example, however, every campaign with this value loses money before a single euro of rent, salaries or software has been paid.
It becomes even clearer if your tracking passes on gross values. The platform then reports €11,900 and a ROAS of 2.62. On a gross basis, break-even is €11,900 / €4,180 = 2.85. So check whether your store sends gross or net values to Meta and Google, and calculate your targets on the same basis.
Break-even ROAS by margin
The table shows the break-even ROAS for different contribution margin ratios before advertising. The third column shows the ROAS needed if 10% of revenue should still remain as contribution margin after advertising. Formula: 1 / (contribution margin ratio − 0.10).
| Contribution margin ratio before advertising | Break-even ROAS | ROAS for 10% remaining contribution margin |
|---|---|---|
| 20% | 5.00 | 10.00 |
| 25% | 4.00 | 6.67 |
| 30% | 3.33 | 5.00 |
| 35% | 2.86 | 4.00 |
| 40% | 2.50 | 3.33 |
| 50% | 2.00 | 2.50 |
| 60% | 1.67 | 2.00 |
| 70% | 1.43 | 1.67 |
The lower the margin, the more steeply the required ROAS rises. A range with a 20% contribution margin ratio can hardly be scaled profitably through paid advertising; one with 60% much more easily.
New customers, existing customers and customer lifetime value
A single purchase is not the whole story. According to Shopify, customer lifetime value describes how much a customer spends over the entire customer relationship, calculated as average order value times purchase frequency times customer lifespan. For budget decisions, what matters is the contribution margin over this period, not revenue.
Continuing the example with one further assumption: a new customer places an average of 1.5 further orders over the following 24 months. The expected contribution margin per order is €41.80 (€4,180 / 100 orders). Over the customer lifetime, that gives 2.5 × €41.80 = €104.50.
If you release the contribution margin of the first order in full and the expected repeat purchases at only half as acquisition budget, you can spend €41.80 + €31.35 = €73.15 on a new customer. With a €100 basket, that corresponds to a new-customer ROAS of around 1.37. The rest of the future contribution margin remains as a buffer for uncertainty and profit.
With existing customers it is the other way round. Some of them would have bought even without an ad, for example after a newsletter. Here you should demand a higher ROAS than break-even. Google Ads supports this separation with customer lifecycle goals: campaigns can bid higher for new customers or bid for new customers only. You define existing customers using your own data, such as customer lists.
Rules for day-to-day steering
- Calculate break-even per product group. An average across the whole range hides loss-makers. Group products by contribution margin ratio and set separate target ROAS values for each group.
- Factor returns into the ratio. Use the return rates per category from your store backend, not a gut feeling.
- Do not mix gross and net. Target ROAS and reported conversion values must be on the same basis.
- Report margin to the platform. With conversions with cart data and product costs from Merchant Center, Google Ads can show additional gross profit metrics. Alternatively, pass a contribution margin value as the conversion value instead of revenue and then steer by POAS.
- Assess new customers separately. For new customers, ROAS may be below break-even if your repeat purchase data supports it. For existing customers, a higher target applies.
- Check MER monthly. If platform ROAS rises but total revenue does not rise relative to budget, the channels may be claiming each other's sales.
- Update assumptions regularly. Purchase prices, shipping rates and fees change. Review your contribution margin ratios at least quarterly.
Conclusion
A ROAS is only as good as the margin behind it. If you know your break-even ROAS, factor in returns and fees, and assess new customers by their contribution margin over the customer lifetime, you can direct budget to where it generates profit. That is why at Minotaurus we start performance projects with exactly this calculation.
Sources
- Google Ads Help: Target ROAS bidding (German)
- Shopify: What Is ROAS?
- Munich Business School, business glossary: Deckungsbeitrag (contribution margin, German)
- ProfitMetrics: What is POAS?
- Shopify: Marketing Efficiency Ratio (MER)
- Shopify: Customer Lifetime Value
- Google Ads Help: Customer lifecycle goals (German)
- Google Ads Help: Conversions with cart data (German)