How to calculate ROAS: the formula, break-even and why POAS matters
ROAS is one line of maths — it only becomes profit with POAS. Work out your break-even ROAS from your margin, then feed profit instead of revenue back to Google and Meta.
Originally written in German — read it on visnakovs.de.
Calculating ROAS is the simplest sum in performance marketing: revenue divided by ad spend. The honest question comes straight after — is that ROAS profit, or just revenue cosmetics? I’ve seen plenty of accounts optimise towards a proud-looking ROAS and lose money anyway. ROAS matters, but POAS — profit on ad spend — is the number you actually need.
If you want the arithmetic done for you, my ROAS calculator (in German) takes your margin and your current ROAS and gives you your break-even ROAS plus whether €100 of ad budget ends up as profit or loss. The maths below is the same either way.
1. The ROAS formula, a worked example, and your break-even ROAS
The formula is so simple it’s almost disappointing:
ROAS = revenue ÷ ad spend
Spend €1,000 on Google Ads and make €4,000 in revenue, and your ROAS is 4 (or 400%). One euro of budget buys four euros of revenue. Sounds good — and says nothing about profit. Inside those €4,000 sit your cost of goods, shipping, returns and payment fees. What’s left depends entirely on your margin.
Which is why the second number is the important one: your break-even ROAS. That’s the ROAS at which the advertising pays for itself. One more formula:
Break-even ROAS = 100 ÷ margin in %
A few examples to make it click:
- 50% margin → break-even ROAS 2.0. Anything above 2 is profit.
- 30% margin → break-even ROAS 3.33. Below 3.33 you’re subsidising sales.
- 20% margin → break-even ROAS 5.0. Here a ROAS of 4 is already a loss.
Let’s run one all the way through. You sell a product for €100 and keep €30 after cost of goods, shipping and fees — a 30% margin. Your break-even ROAS is 100 ÷ 30 = 3.33. At an actual ROAS of exactly 3.33 you make precisely zero profit per €100 of ad budget: €333 in revenue, 30% of which is €100 of contribution margin, minus €100 of ad spend leaves nothing. Only above that are you genuinely earning.
That’s the decisive point. The same ROAS of 4 is a profit party for one shop and a loss-maker for the next. Anyone who just “calculates ROAS” and then optimises towards a blanket target is ignoring the one variable — margin — that decides profit or loss.
So what’s a good ROAS? The honest answer: it’s the wrong question. There is no universally good ROAS. There is only a ROAS above or below your break-even. A ROAS of 8 can be a loss at an 8% margin; a ROAS of 2.5 at a 60% margin is a dream. The first number you calculate is never the ROAS itself — it’s your break-even.
Lead gen works the same way, mirrored, via CPA instead of ROAS: order value × margin gives you the most a lead is allowed to cost. Both views describe the same economics — one as a ratio, one as a cost ceiling.
2. ROAS matters, but POAS is what you need
Now the core of it. ROAS is a revenue metric, not a profit measure. It treats a euro of revenue on the thin-margin bargain product exactly like a euro on the margin champion. That’s where the expensive decisions start — especially with blended ROAS, the value averaged across every product.
A blended ROAS can look great and still drag an account into the red. The usual pattern: a discounted bestseller with a thin margin does enormous revenue. It visibly lifts the average ROAS across all campaigns, and the report glows green. Except every unit of that product costs you real money, because the contribution margin after discount slips below zero. ROAS is margin-blind — it sees the revenue, not the loss behind it. Some products look strong in blended ROAS while driving genuinely negative profit.
POAS flips the perspective. Instead of “how much revenue per ad euro?” you ask “how much profit per ad euro?”.
POAS = contribution margin ÷ ad spend
A POAS of 1 means you’re breaking even on the advertising. Above that is real profit, below it is a subsidy — no matter how pretty the ROAS next to it looks. The moment you look at POAS, you can see which products, campaigns and search terms actually carry the account and which are only pretending.
Here’s the blind spot in numbers. Campaign A does €10,000 in revenue at a 70% margin. Campaign B also does €10,000 in revenue, but at a 10% margin. Both cost €2,500 in ad spend, so both post a tidy ROAS of 4. The blended ROAS across the two is exactly 4. But: campaign A delivers €7,000 of contribution margin (POAS 2.8 — solid profit), while campaign B delivers €1,000 against €2,500 of cost (POAS 0.4 — a €1,500 loss). Together the account looks perfectly healthy at ROAS 4, while half the budget burns money. The average hides the loser — and a ROAS target would, if anything, scale campaign B up, because it “performs”.
None of this makes ROAS a bad number. For a shop with a consistent margin across the whole range, a ROAS target is completely fine, because ROAS and POAS then move in parallel. The problem starts the moment your margins diverge between products — 25% on one SKU, 65% on the next. Which is the case for almost every catalogue.
3. Sending revenue — or profit — back to Google and Meta
If POAS is the better number, you don’t just want to look at it after the fact — you want Google and Meta bidding on it in the first place. That’s the real lever: both platforms optimise towards whatever conversion value you send back. By default that value is revenue (the basket value). And you can change it.
Instead of revenue, you pass the contribution margin — the real profit per order after cost of goods, shipping, likelihood of returns and payment fees. From that moment on, smart bidding gets an honest signal for every conversion:
- The discounted thin-margin bestseller suddenly reports a tiny value back, and the algorithm stops scaling it.
- The high-margin product reports a fat contribution margin — and that is what gets more budget and more aggressive bids.
You steer the whole account towards profit without manually rebuilding a single campaign. Two routes get you there in practice:
- Overwrite the value directly. You pass the contribution margin instead of revenue when the purchase event fires. On the Meta side the same value goes server-side through the Conversions API as
value— consent permitting. - Adjust the value server-side. You leave revenue in place on the front end and correct the value downstream — via a server-side GTM container, or via conversion value rules in Google Ads that adjust value by product, margin or segment.
If you’d rather not build it yourself, use a dedicated profit platform. ProfitMetrics (profitmetrics.io) is one example: it pulls your cost positions together, works out the contribution margin per order and sends that profit value back to Google and Meta server-side as the conversion value. Build or rent is a question of control versus speed — the principle is identical either way: the value your bidding strategy optimises towards is your profit, not your revenue.
One prerequisite sits above all of this: clean, complete tracking. If the revenue itself is measured wrongly or with gaps, the loveliest margin figure won’t save you. I’ve written up how to feed profit rather than revenue in detail in e-commerce profit tracking.
One more lever on your economics, before you touch bidding
If your Google Shopping runs through Google’s default CSS, you’re paying roughly 20% too much per click. A CSS partner lowers your Shopping CPCs at the same ad position — which improves every ROAS and POAS immediately, with no new tracking involved.
The bottom line
Calculating ROAS is one line of maths. Reading the number correctly is the actual work — and that’s where data-led marketing separates from gut feel.
Three take-aways:
- Always calculate the break-even ROAS alongside it. 100 ÷ margin tells you the point at which a product makes any profit at all. Without that number, every ROAS target is a guess.
- Don’t trust blended ROAS. It’s margin-blind. Products that look strong on average can lose money on every sale — only POAS shows you that.
- Send back profit, not revenue. Pass the contribution margin as the conversion value to Google and Meta, via server-side GTM, value rules or a profit platform. From then on the same AI optimises for your margin instead of against it.
Optimise for profit while your competitors bid on revenue, and you buy the same clicks more profitably. That’s the whole trick.
If you want a second pair of eyes on your numbers — your break-even, what you’re actually sending back as conversion value — write to me at visnakovs@clickspire.de.