“What is a good ROAS?” is the most frequently asked question in e-commerce advertising and the only one with no common answer. The same result can be excellent in one shop and loss-making in another, because margin decides. This guide replaces benchmarks with one formula: a break-even point from your own margin, three target levels and per-category thresholds that turn the “does this campaign pay off?” debate into a calculation.
The wrong answer
Why there is no single good ROAS
ROAS tells you how much revenue comes back from every euro spent on advertising. But revenue is not profit: from every euro returned, the shop keeps only the margin. A shop with a 20% margin and a shop with a 50% margin live in different worlds: at a ROAS of 4.0 the first is losing money, while the second makes a profit on the same result. That is why any answer like “a good ROAS is 4” is pointless until someone asks back: at what margin?
The formula
Break-even point: one formula from your own margin
The formula that replaces benchmarks
Break-even ROAS is the result at which advertising returns exactly as much margin as it cost. Anything below means paying extra for sales; only the space above starts making money.
This is what an account looks like once the threshold is applied (a fitness equipment shop, 36% product margin → threshold 2.8, illustrative data):
Campaigns on the ROAS axisROAS according to GA4 · threshold from 36% margin · illustrative data
One vertical line organises the whole account: B burns margin despite a “decent” result, D sits on the edge, A makes money and C has the most room to scale. Without a threshold, these four numbers look like a ranking; with one, they look like a list of decisions.
Levels
Three target levels: survival, profit, scale
The threshold is an alarm line; the target sits higher. A result at the threshold means zero margin from the campaign, with fixed costs, operations and logistics still unpaid. A practical ladder:
= threshold (100 / margin%)
Alarm line
Advertising returns exactly its own cost in margin. Campaigns below it need fixing or switching off; “it will pick up soon” is the most expensive sentence in the ad platform.
≈ threshold × 1.3–1.5
Operational target
A buffer for fixed costs, operations and logistics. The exact multiplier comes from the shop’s cost accounting; it is set once and recorded alongside the threshold definition.
> target, consistently
Scaling zone
Campaigns consistently above target are candidates for budget increases until the rising cost of additional sales brings them back towards the target.
The same logic works one level up: MER (shop revenue divided by total advertising spend) has its own threshold based on average margin and protects against the illusion in which every channel “works” on its own while total spend grows faster than sales. Budget decisions are made on MER; ROAS thresholds organise spending within the budget (for the mechanics, see the guide to conversions and attribution).
The measurement trap
Platform ROAS vs threshold: a common gap
Verdicts for the whole account are checked against shop revenue, that is against MER. Ad platforms count with their own windows and modelling, so the same account looks like this:
The platforms say “scale”, the books say “you are losing money”. Where such gaps come from and how to read platform results against shop revenue is covered in the guides on Meta Ads and agency reporting; here one principle is enough: the platform for optimisation, the shop for accounting, the threshold for verdicts.
Deeper
Thresholds per category: one number is not enough
Margin differs between categories, so the threshold does too. A shopping campaign mixing categories with 24% and 52% margins has no single threshold; it has an average that hides the decisions (a fitness equipment shop, ROAS per category from Google Shopping product data in the Google Ads panel, illustrative data):
| Category | Product margin | ROAS threshold | ROAS (Google Ads panel) | Verdict |
|---|---|---|---|---|
| Training accessories | 52% | 1.9 | 4.8 | scale first |
| Supplements | 46% | 2.2 | 3.4 | above target, stable |
| Sportswear | 38% | 2.6 | 2.7 | right at the threshold: below operating target |
| Large equipment | 28% | 3.6 | 3.1 | below threshold despite a “good” result |
Note the last row: 3.1 is the best nominal result after accessories, yet the category stays below its threshold because the low margin raises it to 3.6, and that is by the panel’s own count, which tends to be optimistic. Without per-category thresholds, budget flows to “nice numbers” instead of profit. Where to get margin per product and category is explained in the guide to margin in e-commerce.
DataOrganizer
How DataOrganizer calculates thresholds and checks MER
All three parts of the calculation live in one model: margin per product and category (thresholds), ROAS per campaign and category from GA4 and the ad platforms, including Google Shopping results per product (estimates per campaign), and spend across all platforms set against shop revenue (MER). Per-category verdicts fit into a single conversation:
Thresholds versus Shopping ROAS (Google Ads panel data):
| Campaign / category | Threshold | ROAS (panel) | Spend | Verdict |
|---|---|---|---|---|
| Training accessories | 1.9 | 4.8 | €1,525 | scale |
| Sportswear | 2.6 | 2.7 | €1,200 | at threshold: raise target or improve |
| Large equipment | 3.6 | 3.1 | €2,350 | below threshold: about −€310 margin |
The largest budget is working in the only category below the threshold: according to the Google Ads panel, large equipment returned €3.10 of conversion value per €1 over the month, and with a 28% margin that means a loss of about €310 even by the panel’s own count. Recommendation: move part of the budget to accessories (threshold 1.9, panel ROAS 4.8), return to large equipment after changing bids or prices, and check the account-level MER from shop revenue against the overall threshold.
Methodological note: the figures in the examples are illustrative. The formula 100/margin% calculates the threshold on product margin (excluding fixed costs), so the operating target is set with a buffer; with discounts, the threshold is calculated from the post-discount margin. ROAS per campaign and category comes from GA4 or the ad platforms and is an estimate, while shop revenue is assessed only for the whole account (MER); changing the source or attribution model invalidates comparisons between periods.
Key takeaway
A good ROAS is your threshold plus a buffer, calculated from your margin. One vertical line on the axis turns a platform ranking of campaigns into a list of decisions: what to switch off, what to fix, what to scale.
FAQ
Frequently asked questions about a good ROAS
What is a good ROAS?
One above the break-even threshold based on your own margin: threshold = 100 / margin%. A 20% margin requires a ROAS of 5.0 just to break even; a 50% margin only 2.0. That is why other people’s benchmarks do not answer this question, while your own margin does.
How do you calculate break-even ROAS?
100 divided by product margin as a percentage. This is the point of zero margin from the campaign, excluding fixed and operating costs, so the operating target is set clearly higher (typically the threshold times 1.3–1.5, depending on the shop’s costs).
How does break-even ROAS differ from a MER target?
By scale: ROAS describes a campaign or channel, MER the whole shop (revenue / total spend). Thresholds are calculated with the same logic, but budget decisions are made on MER, because it protects against a sum of channels that each “pay off” only in their own attribution.
Why is platform-reported ROAS misleading?
Attribution windows, modelling and no knowledge of cancelled orders inflate the result; platform figures summing to 4.2 can mean a MER of 2.7 on shop revenue. The account threshold is checked against MER from shop revenue; the platform figure stays for optimisation within the platform.
How does DataOrganizer calculate thresholds?
Margin per product and category from the shop gives the thresholds, ROAS per campaign and category comes from GA4 and the ad platforms, and MER from shop revenue checks the whole account; the chat compares them per category, so a list of campaigns below the threshold and candidates for scaling comes from a single question.
Cheat sheet for the whole guide
ROAS calculation in three lines
1. Threshold = 100 / margin%. This is the alarm line: below it, advertising subsidises sales, however nice the number looks.
2. Target = threshold + buffer, account verdict = MER. The platform optimises, the shop accounts: summed platform ROAS is checked against MER from shop revenue before any budget decision.
3. Thresholds per category instead of an average. Margins differ between categories more than campaign results do. DataOrganizer calculates thresholds from margin and sets them against ROAS from GA4 and the ad platforms and against MER from shop revenue, so budget flows to categories that genuinely clear their threshold.
DataOrganizer · thresholds from margin, MER from shop revenue
Connect your shop and ad platforms: margin per category sets the thresholds, ROAS per campaign from GA4 and the platforms shows where each campaign stands, and MER from shop revenue checks the whole account. Demo account available instantly; you pay only for the sources you connect.