All posts Pricing & margin · 25 May 2026 · 15 min read

Return on ad spend mastery: what ROAS actually means, what good looks like, and why most owners chase the wrong number.

ROAS is the most-googled DTC metric for a reason — it is the simplest acquisition number to compute and the easiest to misuse. A 4x ROAS sounds good until you realise your gross margin is 30% and you needed 3.33x just to break even. This is the full ROAS guide: the formula, the break-even math, the eight worked thresholds by margin, ROAS vs MER vs PROAS, the iOS 14.5 break, channel benchmarks, and the daily reconciliation against your bank.

Ibrahim Ölmez Founder, nouz · serial entrepreneur

ROAS is the most-googled DTC metric for a reason — it is the simplest acquisition number to compute and the easiest to misuse. You spent €1,000 on Meta, you got €4,000 of attributed revenue, your ROAS was 4x. That feels good. The question nobody asks is what your gross margin was, because if your margin was 30%, that 4x ROAS produced €1,200 of contribution against €1,000 of spend — €200 of margin to cover packaging, fulfilment, shipping insurance, returns, and a thirty-fourth of your monthly rent. By the time those land, the campaign was a loss. This post is the full ROAS guide: the formula, the break-even math that almost nobody computes, eight thresholds by margin, ROAS vs MER vs PROAS, the iOS 14.5 break, channel benchmarks, scale-vs-kill thresholds, and the daily reconciliation against your bank that exposes when platform-reported ROAS is fiction — because nouz is built on the idea that ad spend is a variable cost like any other and the only ROAS that matters is the one your bank account confirms.

TL;DR

The honest ROAS math. ROAS = Revenue ÷ Ad spend. It is a revenue ratio, not a profit ratio — which is why "good ROAS" depends entirely on your gross margin. Break-even ROAS = 1 ÷ gross margin %. A 40% margin business breaks even at 2.5x ROAS; a 60% margin business breaks even at 1.67x. Use MER (total revenue ÷ total ad spend) for go/no-go decisions and per-channel ROAS only for mix decisions. iOS 14.5 made Meta's reported ROAS partly modeled (and overstated by 15-40% in iOS-heavy categories). The only number that survives contact with reality is the bank — log ad spend as a daily variable cost and watch what EBIT actually does, weekly.

ROAS = Revenue / Ad spend

Return on ad spend is the simplest metric in performance marketing. You take the revenue attributed to an ad campaign and divide it by the spend that produced it. €4,000 of attributed revenue on €1,000 of ad spend is a 4x ROAS, sometimes written as 4:1 or 400%. The math fits on a napkin. The interpretation does not.

ROAS formula. ROAS = Attributed revenue ÷ Ad spend. A 4x ROAS means €4 of revenue for every €1 of spend. It says nothing about profit, nothing about gross margin, nothing about whether the revenue is incremental, and nothing about whether the customer will ever come back.

There are three structural problems with the formula that every ecommerce owner has to understand before they make a single budget decision based on it.

First: ROAS measures revenue, not profit. A €1,000 ad spend that produces €4,000 of revenue produces somewhere between €0 and €3,000 of gross margin depending on what your product cost, shipping, and card fees look like. The ROAS number does not know that, does not show that, and cannot be used to decide profitability without the margin number folded in. Most owners learn this the hard way — they scale a 4x ROAS campaign for six months, watch revenue triple, and discover the bank balance went down because the gross margin underneath the campaign was thinner than they thought.

Second: ROAS is attributed revenue, not incremental revenue. The platform — Meta, Google, TikTok, whatever — uses an attribution window (default 7-day click, 1-day view on Meta) to decide which sales to credit to which ads. A sale that happened within that window after some interaction with your ad gets credited, regardless of whether the ad actually caused the sale. A customer who was going to buy anyway, who happened to scroll past your retargeting ad on Instagram the day before, becomes "Meta-attributed revenue" even though Meta added zero causal lift. The attribution window post walks the full mechanism — for the purposes of this post, just assume that platform ROAS is systematically more optimistic than incremental ROAS, usually by a factor of 1.5-3x.

Third: ROAS is a snapshot, not a relationship. It captures the first transaction in the relationship — the one driven by the ad — and ignores everything that happens afterward. A customer acquired at 2x ROAS who then buys four more times over the next eighteen months is worth far more than the ROAS number suggests. A customer acquired at 6x ROAS who returns the order and never comes back is worth almost nothing. The CLV post covers the back end — for now, hold the thought that ROAS is the front-door number and the full economics need the back door too.

The single sentence to memorise. ROAS is a revenue ratio computed against the platform's attribution rules. It is useful as a directional signal for comparing campaigns within a single platform. It is not, by itself, a measure of whether a campaign is making you money. The margin and the bank statement decide that.

What "good ROAS" actually means

There is no universal answer to "what is a good ROAS." Search the question and you will see numbers from 2x to 8x quoted as benchmarks. They are all both correct and useless because they ignore the only input that actually matters: your gross margin. A 3x ROAS is excellent if your gross margin is 70% and a disaster if your margin is 25%. The benchmark cannot be quoted without the margin.

The reason is arithmetic. ROAS is revenue per euro spent on ads. The portion of that revenue you actually keep — before fixed costs, before profit — is gross margin. To break even on a campaign you need the gross margin generated by the ad-attributed revenue to at least cover the ad spend. That gives you the foundational equation:

Break-even ROAS formula. Break-even ROAS = 1 ÷ Gross margin %. At 50% gross margin, break-even is 1 ÷ 0.50 = 2.0x. At 30% gross margin, break-even is 1 ÷ 0.30 = 3.33x. At 70% gross margin, break-even is 1 ÷ 0.70 = 1.43x. Anything below break-even is a loss before you have paid rent.

The shape of the curve is the entire reason ROAS targets are so different across DTC categories. Skincare brands at 65-75% gross margin can survive on a 1.6-2.0x ROAS. Apparel at 50-55% gross margin needs roughly 1.9-2.0x to break even. Pet food and supplements at 35-45% gross margin need 2.2-2.9x. Furniture and electronics resellers running 20-30% gross margin need 3.3-5.0x just to clear the ad cost. The "good ROAS" number is whatever sits comfortably above the break-even threshold for your margin structure, with enough room to cover fixed costs and pay the owner.

A clean way to think about it: break-even ROAS is the floor. Healthy ROAS is the floor plus enough margin to cover everything else and leave profit. For most small DTC brands, healthy is roughly break-even × 1.5 — so a 50% margin brand that breaks even at 2.0x needs a 3.0x ROAS to be genuinely profitable after fixed costs. A 30% margin brand that breaks even at 3.33x needs a 5.0x ROAS to clear fixed costs. Use the break-even ROAS calculator to run the floor for your specific cost stack — it folds shipping, fulfilment, card fees, and your fixed-cost slice per order into one number.

Where the textbook "3x is good" rule comes from. The 3x ROAS benchmark cited everywhere assumes a 33% gross margin business — which is roughly the average for unbranded resellers but is far below the typical owner-operator brand. If your margin is 50%, treating 3x as a target wastes money on under-utilised acquisition. If your margin is 25%, treating 3x as a target burns cash. Quote the rule, ignore the rule, run your own break-even.

Break-even ROAS = 1 / Gross margin %

The break-even formula is the most important piece of math in this post. It is what separates owners who know their numbers from owners who do not. The full derivation, in plain English:

You spend €1 on ads. That ad generates X euros of revenue (the ROAS number). The portion of that revenue you keep, after product cost, shipping, fulfilment, and card fees, is your gross margin percentage — call it M. So the gross contribution per €1 of ad spend is X × M. To break even on the ad spend, that contribution has to equal €1: X × M = 1. Solve for X: X = 1 / M. That is the break-even ROAS.

The table below shows break-even ROAS at every meaningful gross margin level. Find your own gross margin (your honest one, after shipping, fulfilment, and card fees — not the "70% margin" your supplier quotes, which is just the product margin) and find the corresponding break-even ROAS. Anything below that line is a loss.

Gross margin %Break-even ROASHealthy ROAS (break-even × 1.5)Example category
20%5.00x7.50xElectronics resellers, unbranded commodity
25%4.00x6.00xHeavily discounted apparel, accessories
30%3.33x5.00xMost reseller / dropshipping models
35%2.86x4.29xPet food, supplements with thin margins
40%2.50x3.75xMid-tier apparel, home goods
45%2.22x3.33xPremium apparel, branded supplements
50%2.00x3.00xSkincare entry tier, branded home
55%1.82x2.73xEstablished DTC apparel brands
60%1.67x2.50xMid-tier skincare, premium consumables
65%1.54x2.31xEstablished skincare brands
70%1.43x2.14xPremium skincare, supplements
75%1.33x2.00xHigh-margin beauty, niche premium
80%1.25x1.88xDigital products, software-attached SKUs

Three things to notice in this table. First, the spread is enormous — a 20% margin business needs more than four times the ROAS of a 70% margin business to break even on the same campaign. Second, very few "healthy ROAS" targets are above 6x, even at the thinnest margins. If your dashboard is reporting 8x ROAS on a 40% margin business, either your margin is higher than you think, the attribution is overstating, or the campaign is genuinely exceptional — figure out which one before scaling. Third, the "healthy" column assumes break-even × 1.5. Many founders need a higher multiplier than 1.5 to clear meaningful fixed costs — a brand with a warehouse, three full-time staff, and a customer service team needs break-even × 2 or higher to actually pay the bills.

A common mistake when computing your own gross margin: using the product margin from the supplier or the "default" Shopify margin number instead of the true contribution margin. The honest gross margin for ROAS purposes is: AOV minus product COGS minus outbound shipping (if you pay it) minus card processing fees minus pick/pack/fulfilment, all divided by AOV. That number is typically 5-15 percentage points lower than the "product margin" line you see in Shopify. Use the honest one. The true profit per order post walks the per-order calculation in full.

Worked example: 40% gross margin → break-even ROAS = 2.5x

Take a small DTC apparel brand. Average order value is €60. Product COGS averages €22 per order. Outbound shipping costs the brand €5 per order (free shipping above €50 — most orders qualify). Card processing fees are €1.50 per order at 2.5% of AOV. Pick/pack is €3.50 per order. Contribution per order: €60 − €22 − €5 − €1.50 − €3.50 = €28. Gross margin: €28 / €60 = 46.7%, rounded down to 40% to account for returns averaging ~14% on apparel after refunding the margin on returned items.

Break-even ROAS at 40% margin: 1 / 0.40 = 2.5x. The brand has to generate €2.50 of attributed revenue for every €1 of ad spend just to recover the ad cost. Anything below that and the campaign is contributing nothing to fixed costs.

A worked weekly scenario. The brand spends €2,000 on Meta last week. Meta reports €5,400 of attributed revenue — a 2.7x ROAS. The owner looks at the dashboard, sees ROAS above the 2.5x break-even, and feels good. Is the campaign actually profitable?

LineValueNotes
Meta ad spend€2,000Actual euros that left the bank
Attributed revenue (Meta-reported)€5,400At 2.7x ROAS
Gross margin on attributed revenue€2,160€5,400 × 40%
Contribution after ad spend€160€2,160 − €2,000
Fixed-cost slice for the week€480€2,080/month fixed ÷ 4.33 weeks
Net contribution after fixed costs−€320€160 − €480 — loss

The Meta dashboard said the campaign cleared break-even. The honest math says the week was a €320 net loss after fixed-cost allocation. Two things make it worse. First, the attributed revenue is platform-attributed — incremental revenue is probably 60-80% of that, dropping the real ROAS to roughly 1.6-2.2x and turning the contribution negative even before fixed costs. Second, this assumes a 14% return rate has already been folded into the 40% gross margin — if returns spike (and apparel returns spike seasonally), the margin drops further. The discipline of logging today's ad spend the day it ran lets nouz compute the implied per-customer cost against the day's net-new orders — the help-center article on categorising an expense covers the in-app entry.

For this brand to actually run profitably on paid acquisition, the target ROAS is closer to 4x, not 2.5x. That is the break-even (2.5x) plus enough room to cover the fixed-cost slice (another ~0.5x) plus a buffer for attribution overstatement (another ~0.7-1.0x) plus a small operating margin. The owner who scales at 2.7x because the dashboard says it is "above break-even" is the owner whose bank balance shrinks every month. The owner who targets 4x at the same gross margin runs profitably.

Worked example: 60% gross margin → break-even ROAS = 1.67x

Now take a different shape: a small skincare brand with stronger gross margin. Average order value is €55. Product COGS averages €12 per order. Outbound shipping is €4.20 (free above €50 — most orders qualify). Card fees are €1.40 (2.5%). Pick/pack is €2.50. Contribution per order: €55 − €12 − €4.20 − €1.40 − €2.50 = €34.90. Gross margin: €34.90 / €55 = 63.5%, rounded down to 60% to account for the small refund rate (skincare averages 4-7% returns) and the occasional damaged shipment.

Break-even ROAS at 60% margin: 1 / 0.60 = 1.67x. The brand only needs €1.67 of attributed revenue per €1 of ad spend to recover the cost of the campaign. That sounds easy until you remember that platform ROAS is overstated by 1.5-3x typically — so an "incremental" 1.67x might require a "reported" 2.5-5x just to be honest.

Same weekly scenario, recomputed for the skincare brand. The brand spends €2,000 on Meta. Meta reports €5,400 of attributed revenue — a 2.7x ROAS, same headline number as the apparel brand.

LineValueNotes
Meta ad spend€2,000Actual euros that left the bank
Attributed revenue (Meta-reported)€5,400At 2.7x ROAS
Gross margin on attributed revenue€3,240€5,400 × 60%
Contribution after ad spend€1,240€3,240 − €2,000
Fixed-cost slice for the week€480€2,080/month fixed ÷ 4.33 weeks
Net contribution after fixed costs€760€1,240 − €480 — profitable

Same headline ROAS, same ad spend, completely different result. The skincare brand cleared €760 of net contribution after fixed costs on the same campaign that lost €320 for the apparel brand. The only difference is gross margin. This is the entire reason "is 2.7x ROAS good?" has no answer in isolation — the same number is excellent for some businesses and ruinous for others.

For the skincare brand, the target ROAS is closer to 2.5x — break-even (1.67x) plus a healthy buffer for attribution overstatement and fixed costs. The brand can scale aggressively at 2.7x and stay profitable. The apparel brand cannot. Both owners can stare at the same Meta dashboard and reach opposite conclusions about whether the campaign is working. Both can be correct, because the question depends on what is happening underneath the revenue line in the P&L. More on the wider Shopify profitability operating system this sits inside.

ROAS vs MER (Marketing Efficiency Ratio) — when each is right

ROAS is a per-campaign or per-channel number. MER — Marketing Efficiency Ratio, sometimes called "blended ROAS" — is a top-line business number. They measure different things and answer different questions.

Definitions. ROAS = Attributed revenue (within a single platform's attribution window) ÷ Ad spend on that platform. MER = Total revenue across the entire business (all sources, all channels) ÷ Total marketing spend across all channels (Meta + Google + TikTok + influencer + agency + creative). ROAS is per-channel and attribution-dependent. MER is whole-business and attribution-free.

The argument for MER is brutal and simple: per-channel ROAS is fundamentally unreliable because attribution is fundamentally unreliable. When the same sale can be claimed by Meta, Google, Klaviyo, an affiliate, and a TikTok view-through within the same seven days — and it can, routinely — the per-channel numbers add up to more than 100% of actual revenue and none of them is a measurement of what would have happened without that channel. MER sidesteps the entire mess. There is no attribution involved — just total revenue divided by total spend. The number cannot be inflated by any one platform because the math does not consult any platform.

The argument for per-channel ROAS is also valid: at the margin, you have to decide where to allocate spend between Meta, Google, TikTok, and so on. MER cannot tell you that — it gives one blended number across everything. To decide whether to shift €500 from Google to TikTok next month, you need some per-channel signal. Per-channel ROAS, used directionally and with the attribution caveats kept in mind, is the right tool for that decision.

QuestionUse ROAS or MER?Why
Should we increase total ad budget next month?MERTop-line decision — needs the honest whole-business ratio, not platform attribution.
Should we shift budget from Meta to Google?Per-channel ROASMix decision — need per-channel signal even if imperfect.
Is paid acquisition profitable for us at all?MERYes/no decision on whether the engine works — must use bank-confirmed revenue and total spend.
Which Meta audience or creative is winning?Per-channel ROASIntra-platform comparison — attribution rules are constant, so ROAS comparisons within Meta are meaningful.
Should we kill TikTok ads?BothMER tells you if total marketing efficiency improves when you pause TikTok; per-channel ROAS gives the directional starting point.
What is "healthy" for our brand?MERCited industry benchmarks for healthy MER are 3-5x for established DTC; per-channel can be misleading.

A practical rule of thumb: per-channel ROAS for mix decisions, MER for budget-level decisions. The owners who get this wrong are usually the ones who scale total ad spend because every individual channel reports a healthy ROAS, then watch MER drop below 2.5x because the per-channel numbers were all overstating. By the time MER catches up, the brand has spent two quarters scaling against a fiction.

ROAS vs PROAS (Profit ROAS) — the actual measure

PROAS is a less-cited but more honest cousin of ROAS. Where ROAS measures revenue per euro of ad spend, PROAS measures profit per euro of ad spend — gross margin (or contribution margin) divided by ad spend, instead of revenue divided by ad spend.

PROAS formula. PROAS = Gross profit (revenue × gross margin %) ÷ Ad spend. A 4x ROAS at 40% gross margin is a 1.6x PROAS. A 4x ROAS at 60% margin is a 2.4x PROAS. A PROAS above 1.0x is gross-margin profitable before fixed costs; a PROAS above ~1.5x is usually profitable after fixed costs.

The reason PROAS is more honest: it folds in the gross margin step that ROAS hides. The break-even threshold for PROAS is 1.0x, full stop — at PROAS 1.0x, the gross margin produced by the ad-attributed revenue exactly covers the ad spend, regardless of what the underlying gross margin percentage was. That makes PROAS a margin-normalised number that can be compared across businesses with different cost structures.

A worked comparison. Three campaigns at three businesses, all spending €1,000:

BusinessGross margin %Ad spendAttributed revenueROASPROAS
Apparel brand40%€1,000€3,0003.0x1.2x
Skincare brand60%€1,000€2,5002.5x1.5x
Reseller / dropshipper25%€1,000€5,0005.0x1.25x

The ROAS numbers tell three different stories — 5x looks dominant, 3x looks fine, 2.5x looks thin. The PROAS numbers tell one consistent story — all three campaigns are roughly at the same profitability level, with the skincare brand slightly ahead because of the margin. The reseller's impressive 5x ROAS is, in profit terms, weaker than the apparel brand's "fine" 3x. PROAS is the version of ROAS that does not lie about gross margin.

The reason PROAS is not the default metric in performance marketing dashboards is that platforms do not know your gross margin. Meta sees revenue, not profit. Google sees revenue, not profit. Neither one can compute PROAS for you because neither one knows what your products cost or what you pay your 3PL. The owner has to compute PROAS manually, by taking the reported ROAS and multiplying by gross margin percentage. It is one extra calculation per campaign, and it is the calculation that separates "this campaign looks great" from "this campaign actually makes money."

PROAS does not solve attribution. PROAS uses attributed revenue from the same platform that reports ROAS, so it inherits the attribution biases — view-through inflation, last-click overcrediting, cross-device double-counting, modeled iOS conversions. PROAS only fixes the gross-margin problem. To fix attribution, you still need MER plus a pause test. PROAS and MER are complementary: use PROAS to normalise per-campaign comparisons across cost structures, use MER to validate whole-business marketing efficiency.

Why iOS 14.5 broke Meta's reported ROAS

In April 2021, Apple released iOS 14.5 with App Tracking Transparency (ATT). The change was simple in concept and seismic in effect: iPhone users now had to explicitly opt in to letting apps track them across other apps and websites. The opt-in rate quickly settled at roughly 25-30% in most markets, where it has stayed through 2026. For Meta, which built its ad targeting and attribution machinery on persistent cross-app identifiers, the lights went out on roughly 70% of iPhone users overnight.

The mechanical effect: Meta could no longer deterministically connect "this ad impression on Instagram" to "that purchase on your Shopify store" for users who opted out. The signal Meta had been using to attribute conversions disappeared for the majority of iPhone users. To keep the dashboards working, Meta switched to modeled conversions — statistical estimates of how many sales the ad probably generated, based on patterns from the minority of users where deterministic measurement still worked.

Modeled conversions are not random guesses. They are reasonably sophisticated, drawing on the deterministic data from non-Apple devices and the minority of opted-in iPhone users. But "reasonably sophisticated guess" is a different thing than "measurement," and the guesses tend to be more optimistic than reality for two reasons. First, the model is calibrated against the deterministic data, which is biased toward higher-converting users (Android users, opted-in iPhone users, and desktop users tend to have higher purchase intent in many categories). Second, Meta has every commercial incentive to err on the side of generous estimates — generous estimates make ROAS look better, which makes advertisers spend more, which makes Meta more money.

Independent audits and Apple's own published research have suggested Meta's modeled conversions in iOS-heavy categories can overstate true conversions by 15-40%. The exact magnitude depends on the campaign type and the audience mix, and it is impossible to verify from the dashboard side — Meta does not break out which conversions are deterministic and which are modeled.

The practical implication. If a meaningful share of your customers are iPhone users — which is the default in the US, UK, much of Western Europe, Australia, Japan — a meaningful share of your Meta-reported conversions are modeled estimates, not measured events. The ROAS number you see is partly measurement and partly model, with the model component biased upward. You cannot tell from the dashboard which is which. For categories where iOS share is high (consumer goods, premium DTC, anything skewing affluent), the iOS 14 effect alone can account for a 1.2-1.5x overstatement in reported ROAS versus reality.

There is no fix on the Meta side. Apple's policy is not going to change. Android added similar restrictions in 2024-2025 that affect Google more than Meta but follow the same trajectory. The structural answer is that platform-reported ROAS has become permanently less reliable than it was in 2020, and the gap has to be reconciled against bank-confirmed revenue rather than trusted at face value. MER and the pause test are the only honest workarounds.

The 7-day click vs 1-day click attribution rabbit hole

Inside Meta Ads Manager, you can choose your attribution window for reporting purposes. The default is "7-day click, 1-day view" — meaning Meta claims credit for any sale that happens within 7 days of someone clicking an ad, or within 1 day of someone seeing an ad without clicking. You can change this to "7-day click only" (no view-through), "1-day click only," "1-day click, 1-day view," and a few other combinations. The choice has nothing to do with the underlying truth and everything to do with how generous Meta's credit-taking is allowed to be.

Attribution settingWhat it countsTypical reported ROAS effect
1-day click onlySales within 24 hours of a clickMost conservative — lowest reported ROAS, closest to incremental for many brands
1-day click, 1-day viewSales within 24 hours of a click or impressionSlightly higher — adds view-through credit for high-intent buyers
7-day clickSales within 7 days of a clickMiddle ground — picks up considered-purchase categories
7-day click, 1-day view (default)Sales within 7 days of a click, or 1 day of a viewMost generous default — view-through inflation, longest window
28-day click (where available)Sales within 28 days of a clickVery generous — credits the campaign for sales that happened weeks later, often through unrelated touchpoints

The clean test of how much your reported ROAS depends on attribution rules: switch the setting from "7-day click, 1-day view" to "1-day click only" and watch what happens. For a typical Shopify store with a strong organic base, reported ROAS will drop by 30-60%. That drop is approximately the share of credit that was attribution-window inflation — view-through conversions for high-intent organic buyers, plus 7-day-window credit for sales that happened days after the ad and would have happened anyway.

A practical recommendation: run Meta on "7-day click only" (no view-through) for reporting purposes inside Ads Manager. That single change removes the most aggressive layer of attribution inflation while keeping the click-attribution data useful for comparing campaigns to each other. It will make your dashboards uglier — reported ROAS will drop on day one — but the numbers will be meaningfully closer to incremental, and you will stop overspending against the inflated baseline. The deeper fix is still MER plus a pause test, but switching off view-through is the cheapest immediate correction.

A note for Google: Google Ads defaults to data-driven attribution with a 30-day click window for paid search and longer for display, which is similar in spirit to Meta's 7-day click but with even more room for credit inflation in considered-purchase categories. The same exercise — tighten the window to something more conservative, see how reported ROAS drops — applies on Google. The attribution window post covers Google in more depth.

Channel-level ROAS benchmarks (Meta, Google, TikTok, programmatic)

Channel benchmarks are useful only as rough sanity checks. The honest answer to "what ROAS should I expect from Meta?" is always "it depends on your margin, your category, your funnel stage, your creative, your audience, and your attribution settings." With every caveat noted, the typical ranges for small Shopify and DTC brands in 2026:

ChannelTypical reported ROAS range (small DTC)Strongest use case
Meta — prospecting (cold audiences)1.5x - 3.0xTop-of-funnel reach, awareness, new customer acquisition
Meta — retargeting (warm audiences)5x - 15x reported, 1.5-3x incrementalClosing browsers who already engaged — but heavily overstated by last-click bias
Meta — broad audiences with Advantage+2.0x - 4.0xScale-stage when creative library is deep enough to feed the algorithm
Google — branded search10x - 25x reported, 1.5-2.5x incrementalDefensive against competitors bidding on your brand; mostly cannibalises organic
Google — non-branded search2.0x - 4.0xDirect intent capture, high-quality traffic — usually the most honest paid channel
Google — Performance Max2.5x - 5xMixed-funnel automated buying; harder to attribute to specific intent
Google Shopping3.0x - 6.0xProduct-feed-driven, high purchase intent — strong for commodity-ish DTC
TikTok — prospecting1.0x - 2.5xDiscovery-driven, creative-intensive, often lower ROAS but lower CAC for the right audience
TikTok — Spark Ads (boosted organic)1.5x - 3.5xAuthentic creator-led content; better for younger DTC categories
Pinterest1.5x - 3.5xVisual-discovery, longer purchase consideration; strong for home, beauty, apparel
Programmatic display0.5x - 2.0x reported, often <1x incrementalBrand awareness only — almost always negative on direct response math
Influencer (paid placements)1.5x - 5xWildly variable; depends on creator fit and audience trust
Affiliate3x - 8xPure performance, but often credit-shifts revenue that would have come through other channels

Three honest caveats about this table. First, the ranges are reported ROAS — incremental ROAS (what actually shows up in the bank) is typically 50-70% of reported for most of these channels, more for retargeting and branded search, less for non-branded search and Google Shopping. Second, the ranges assume default attribution settings — tightening to 7-day click only or 1-day click will pull the reported numbers down across the board. Third, your numbers will vary based on margin, AOV, creative quality, and how saturated your audiences are; treat the ranges as starting points, not destinations.

The pattern across the table: prospecting channels (cold audiences, top-of-funnel) report lower ROAS but tend to be more incremental — those customers genuinely would not have bought without the ad. Retargeting and branded search report higher ROAS but tend to be less incremental — many of those customers were already converting through other channels. The "high-ROAS" parts of your ad stack are usually the parts that are most overstating, and the "low-ROAS" parts are usually doing more of the actual acquisition work than the dashboard suggests.

The "blended ROAS" approach — total revenue ÷ total ad spend

Blended ROAS is the same thing as MER, viewed from the marketing side of the desk rather than the finance side. Total gross revenue across the business, divided by total ad spend across all paid channels, in the same period. It is the single most useful number for go/no-go decisions on overall marketing budget because it cannot be fooled by any individual platform's attribution biases.

Blended ROAS / MER formula. Blended ROAS = Total gross revenue (across the entire business, all channels combined) ÷ Total ad spend (across Meta + Google + TikTok + Pinterest + influencer + affiliate commissions + agency retainer + creative production attributable to ads). For a healthy ecommerce business with a meaningful paid-acquisition share, blended ROAS typically lands at 3-5x. Below 2.5x usually means the math is too tight after COGS, shipping, fees, and fixed costs. Above 6x usually means you are under-investing in acquisition.

A worked example. Last month a brand spent €3,200 on Meta, €1,400 on Google, €600 on TikTok, €450 on an agency retainer, and €350 on creative production attributable to paid ads. Total ad spend: €6,000. Last month's gross revenue (from Shopify, gross including VAT): €24,000. Blended ROAS: €24,000 ÷ €6,000 = 4.0x. That is the number to use for the decision of whether to keep the marketing engine running at this level next month.

Two refinements that make blended ROAS more useful in practice. First, strip VAT from the numerator if your business is VAT-registered, because VAT is not yours. A €24,000 month with 20% VAT is €20,000 of revenue that is actually yours, and blended ROAS becomes €20,000 ÷ €6,000 = 3.33x. Second, the deeper version — contribution-margin blended ROAS — uses gross margin generated rather than gross revenue: €20,000 × 50% gross margin = €10,000 of contribution against €6,000 of spend = 1.67x contribution-blended ROAS. That number is the closest single metric to "is the marketing engine paying for itself."

The discipline blended ROAS enforces is uncomfortable: you can no longer tell yourself the story that "Meta is doing great, Google is doing great, all our channels are profitable" while the bank shows you breaking even. If every channel reports 5x ROAS individually and the blended number is 2.5x, the platform numbers are wrong. The blended number is right. Use the right one for decisions. More on why platform numbers and blended numbers diverge.

When to scale a campaign vs kill it (ROAS thresholds with confidence interval)

Most owners look at a campaign's ROAS on day three, decide it is "doing well" or "doing badly," and act on it. The problem is that early-stage ROAS is statistically noisy — a campaign that reports 6x on day three may report 2.5x by day fourteen as the audience saturates and the algorithm exhausts the easiest wins. Acting on a noisy signal is a fast way to either kill winners prematurely or scale losers into bigger losers.

A more honest scale-vs-kill framework uses a minimum data threshold before any decision, plus a confidence band around the ROAS number to account for noise. The rough rules of thumb for a small DTC store:

StageMinimum data before decidingAction threshold
Days 1-3 (testing)Do nothing structural — too noisyWatch for catastrophic failure only (ROAS <0.5x for 3 days)
Days 4-7 (early signal)At least 30 conversions, €500+ spendKill only if ROAS is <50% of break-even target with no improving trend
Days 8-14 (decision window)At least 50 conversions, €1,000+ spendScale if ROAS is >130% of healthy target (break-even × 1.5) for 7+ days; kill if
Days 15-30 (validation)At least 100 conversions, €2,000+ spendScale aggressively (+50-100%) if ROAS holds above healthy target; restructure or kill if drifting toward break-even
After 30 days100+ conversions per audienceScale incrementally (+20-30% per week), with weekly ROAS reconciliation against blended ROAS

The most important number in the table is "at least 50 conversions." Below that, the ROAS estimate is so noisy that any decision is essentially a guess. A campaign with 15 conversions reporting a 6x ROAS could easily be a 3x campaign that got lucky on three high-AOV orders. Waiting until you have at least 50 conversions costs you a few extra days; acting before then costs you the campaign.

A rough confidence-band rule: with 50 conversions, the true ROAS is probably within ±25% of the reported number. With 100 conversions, ±15%. With 200 conversions, ±10%. So a campaign reporting 4x ROAS on 50 conversions could honestly be anywhere from 3x to 5x. A campaign reporting 4x on 200 conversions is probably between 3.6x and 4.4x. The more conversions you have, the tighter the band, and the more confidence you can put in any single decision.

The most expensive mistake. Scaling a campaign aggressively after 7 days of good ROAS, before the audience has had a chance to saturate. Meta and Google algorithms find the easiest conversions first — the first 100 customers in an audience are usually the cheapest to acquire, and ROAS deteriorates as you push into less-engaged segments. A campaign that reports 5x on day 7 may report 2.5x on day 30 simply because the easy wins are exhausted. Hold scale decisions until you have at least 2 weeks and 100+ conversions of stable performance.

How to spot inflated ROAS (return rate adjustment, cohort attribution gaps)

Even after switching to tighter attribution windows and tracking blended ROAS, individual campaign ROAS numbers can still overstate reality through two specific mechanisms: returns that the platform never sees, and cohort attribution gaps where the platform credits a sale to a campaign that did not actually drive it. Both are common, both are quiet, and both are detectable if you know what to look for.

Return-rate adjustment

When a customer places an order, the platform sees gross revenue. When the customer returns the order two weeks later, the platform never sees the refund — because most refund flows happen outside of the platform pixel, in Shopify's own returns system. The result: platform-reported ROAS is computed against gross revenue including the soon-to-be-refunded sales. For categories with significant return rates (apparel, footwear, accessories), this is a meaningful overstatement.

A worked adjustment. A campaign reports 3.5x ROAS on €1,000 of spend = €3,500 of attributed revenue. The brand's overall return rate is 22% (typical for fit-sensitive apparel). After-return attributed revenue is €3,500 × (1 − 0.22) = €2,730. Return-adjusted ROAS is €2,730 ÷ €1,000 = 2.73x — a 22% drop from the reported number. Combined with attribution overstatement and gross-margin reality, the campaign that "looked like 3.5x" is closer to a 1.5-2x in PROAS terms.

The fix: track return rate quarterly and apply it as a flat multiplier to reported ROAS for budgeting purposes. If your return rate is 18%, every reported ROAS number gets multiplied by 0.82 in your honest internal math. The difference between the dashboard number and the return-adjusted number is meaningful, especially in apparel and footwear. More on category return rates and how to bake them into daily contribution math.

Cohort attribution gaps

A subtler inflation mechanism: campaigns that target repeat customers (Custom Audiences, lookalike audiences seeded from existing buyers, retention-focused retargeting) get credit for sales from customers who were already buyers. The customer was going to buy again anyway — the ad happened to be in the window when the purchase happened — but the platform credits the campaign as if the ad caused the repeat order. The campaign's reported ROAS is high; the incremental contribution is low.

The diagnostic: look at the new-customer rate in your campaign-attributed revenue. If a campaign reports 6x ROAS and 80% of the attributed orders are from existing customers, the campaign is mostly taking credit for retention that would have happened anyway. If a campaign reports 3x ROAS and 90% of attributed orders are from new customers, the campaign is genuinely acquiring — the lower headline ROAS is more honest because it is incremental.

Shopify's analytics tab can split orders by new vs returning customer, and most ad platforms expose a "new customer ROAS" metric in their reporting. Use it. A campaign's value depends heavily on whether the attributed revenue is acquiring new customers or recycling existing ones. The mix matters more than the headline ROAS.

A small test for inflated ROAS. Take your top campaign by reported ROAS. Check three things: (1) what is the return rate for that AOV bracket? (2) what percentage of attributed orders are new customers? (3) what is the attribution setting? If the return rate is high, the new-customer percentage is low, and the attribution window is generous (7-day click, 1-day view default), the campaign is almost certainly overstating by 1.5-2.5x. The honest ROAS is probably half of what the dashboard shows.

How nouz helps you see real ROAS daily (log ad spend, see revenue vs spend, daily)

The structural problem with platform-reported ROAS is that the platforms reward themselves with credit and there is no neutral referee. The structural fix is to build the daily P&L around the bank account, treat ad spend as a variable cost like any other, and look at whether EBIT actually moved. nouz is built on exactly that premise. The formula has not changed since the product launched:

Gross revenue − Tax − Card transaction fees = Net revenue
Net revenue − COGS − Variable costs − (Monthly fixed ÷ 30.4375) = EBIT

Ad spend is a line in "Variable costs." Whatever the platforms claim about ROAS, the spend deducts at the face value of the euros that left your bank. By the end of the week, after a campaign push, you can see three numbers side by side: what the platforms claimed in ROAS, what your bank actually moved by, and what your real PROAS was in EBIT terms. The daily P&L is the referee.

A worked weekly review using nouz, after a €1,500 Meta push:

  • Week before the push: daily EBIT averaged €210. Weekly EBIT roughly €1,470.
  • Week of the push: €1,500 spent on Meta. Daily EBIT averaged €240. Weekly EBIT roughly €1,680.
  • Meta said: €1,500 spend × 5.2x ROAS = €7,800 of attributed revenue. Implied gross-margin contribution at 45% margin = €3,510.
  • Bank said: EBIT moved from €1,470 to €1,680. Real EBIT contribution from the Meta push = €210 on €1,500 of spend.
  • Real PROAS in EBIT terms: (€1,500 + €210) ÷ €1,500 = 1.14x. Meta's implied 5.2x was inflated by roughly 4.5x.
  • Decision: the push paid for itself by €210 of incremental EBIT. Modest positive return, nowhere near the "scale aggressively" signal the dashboard implied. Worth maintaining at this level; not worth doubling.

That kind of reconciliation is the entire point. You do not need to dispute Meta's number or argue with the dashboard — you just need to see the bank-confirmed reality next to it, weekly, so the gap stops being abstract. By month two of doing this exercise, the platforms' attribution numbers become directional indicators (useful for comparing campaign A to campaign B within Meta) and the daily EBIT becomes the only number that drives spend decisions.

A nouz rule that catches the ROAS problem correctly. Ad spend logs as a variable cost on the day it ran, against the revenue that landed on the same day (and the days following). By end-of-week, you can see whether the spend actually moved EBIT — not just whether it moved ROAS in a dashboard. Card fees apply to card revenue only (always 100% in ecommerce — no cash bucket). COGS snapshots at sale time so changing supplier prices tomorrow does not rewrite yesterday's margin. Fixed costs allocate by ÷ 30.4375 to keep daily comparisons clean. All four rules are why the daily EBIT number ties to the bank.

Try the break-even ROAS calculator to compute the minimum ROAS you need given your cost stack — it folds gross margin, fulfilment, card fees, and fixed-cost slice into one number. Pair it with the profit margin calculator to refresh your gross margin assumption before plugging it in. For the per-customer side of the math, use the customer acquisition cost calculator.

When you want the daily reconciliation to happen every evening — including the gap between platform-claimed ROAS and bank-confirmed EBIT — nouz is monthly, no contract, and setup takes about ten minutes. The live demo has sample ecommerce numbers pre-loaded if you want to see the shape before committing. For ecommerce-specific onboarding, see nouz for ecommerce.

A 5x ROAS that does not show up in your bank is a 5x ROAS that does not exist. Platform-reported ROAS is a model with view-through inflation, last-click bias, cross-device double-counting, brand-search cannibalisation, modeled iOS conversions, and no return adjustment baked in. The bank statement is the only number that survives contact with reality. Until you reconcile them weekly, the gap between "Meta said 5x" and "bank moved by €210" will keep widening, quietly, every quarter.

The honest summary: ROAS is the most useful directional metric in performance marketing and the most misused number on every DTC dashboard. Used correctly — with break-even computed from your gross margin, MER tracked alongside per-channel ROAS, PROAS used to normalise across cost structures, attribution windows tightened where possible, return rates applied as a flat adjustment, and daily EBIT used as the bank-confirmed referee — it tells you exactly what your acquisition engine is doing. Used carelessly — the headline number from the dashboard, scaled aggressively without margin awareness — it is one of the fastest paths to running out of cash that ecommerce offers. The math itself is not complicated. The discipline of reconciling weekly is the entire business. For the wider Shopify profitability operating system this sits inside, see the pillar post. For the definitions, see the ROAS glossary, the AOV glossary, and the CAC glossary. For the back-end retention math, see the CLV post. For the front-end acquisition cost math, see the CAC mastery post. For the per-order math underneath all of it, see true profit per Shopify order. For the break-even AOV side, see break-even AOV.

FAQ

What is a good ROAS for Shopify?

There is no universal answer because "good" depends entirely on your gross margin. The break-even formula is ROAS = 1 ÷ gross margin %. A 40% margin Shopify store breaks even at 2.5x; a 60% margin store breaks even at 1.67x. A healthy ROAS is typically the break-even number multiplied by 1.5 — so a 40% margin store needs roughly 3.75x and a 60% margin store needs roughly 2.5x to be profitable after fixed costs. Use the break-even ROAS calculator to compute the floor for your specific cost stack rather than trusting the cited "3x is good" rule, which assumes a 33% margin and is wrong for most owner-operator brands.

How do I calculate break-even ROAS?

Break-even ROAS = 1 ÷ Gross margin %. The honest gross margin to use is the full contribution margin after product COGS, outbound shipping (if you absorb it), card processing fees, pick/pack/fulfilment, and an adjustment for return rate. Not the "70% product margin" your supplier quotes — that ignores 10-15 percentage points of variable cost. For a brand at 45% true gross margin, break-even ROAS is 1 ÷ 0.45 = 2.22x. Anything below that and the campaign is contributing nothing to fixed costs. The calculator folds the full cost stack in for you.

What is the difference between ROAS and PROAS?

ROAS = Attributed revenue ÷ Ad spend. PROAS (Profit ROAS) = Gross profit (attributed revenue × gross margin %) ÷ Ad spend. ROAS measures revenue per euro of ad spend; PROAS measures profit per euro of ad spend. PROAS is more honest because it folds in the gross-margin step that ROAS hides — a 4x ROAS at 40% margin is a 1.6x PROAS, while a 4x ROAS at 60% margin is a 2.4x PROAS. PROAS's break-even is 1.0x regardless of underlying margin, which makes it a margin-normalised metric you can compare across businesses. Platforms do not compute PROAS because they do not know your COGS — you have to multiply reported ROAS by your gross margin percentage yourself.

What is the difference between ROAS and MER?

ROAS is a per-channel or per-campaign number computed against attribution rules. MER (Marketing Efficiency Ratio, also called blended ROAS) is a whole-business number: total revenue ÷ total marketing spend, across all channels and including agency fees and creative production. MER is attribution-free — it cannot be inflated by any one platform's biases because no attribution is involved. Use MER for go/no-go decisions on total marketing budget and to validate whether the acquisition engine is profitable at all. Use per-channel ROAS only for mix decisions (which channel gets the next €500). Healthy MER for established DTC is typically 3-5x; below 2.5x usually means the math is too tight after COGS, shipping, fees, and fixed costs.

Why is my Meta ROAS overstated?

Five structural reasons. (1) Default attribution is 7-day click, 1-day view — view-through credits sales to ads people scrolled past without clicking. (2) Last-click attribution overcredits the final ad before purchase, even when other channels did the actual work. (3) Cross-device matching double-counts sales across Meta and Google when both claim the same transaction. (4) Brand-search ads cannibalise organic that was already coming. (5) iOS 14.5 forced Meta to use modeled (estimated) conversions for ~70% of iPhone users, and the model tends to overstate by 15-40%. Stacked together, platform-reported ROAS is typically 1.5-3x higher than incremental ROAS. Switch to "7-day click only" in Meta to remove view-through; run a 14-day pause test on suspect campaigns; track MER and PROAS alongside per-channel ROAS. The attribution window post covers the full mechanism.

What channel ROAS should I expect for a small DTC store?

Approximate ranges for reported ROAS in 2026 (with the caveat that incremental is typically 50-70% of reported): Meta prospecting 1.5-3.0x; Meta retargeting 5-15x reported but heavily overstated; Google non-branded search 2.0-4.0x; Google Shopping 3.0-6.0x; Google branded search 10-25x reported but mostly cannibalising organic; TikTok 1.0-3.5x; Pinterest 1.5-3.5x; programmatic display 0.5-2.0x; affiliate 3-8x but often credit-shifting from other channels. The pattern: prospecting channels report lower ROAS but tend to be more incremental; retargeting and branded search report higher ROAS but tend to be less incremental. The high-ROAS parts of your stack are usually the parts most overstating, and the "low-ROAS" parts often do more of the actual acquisition work than the dashboard suggests.

Should I look at ROAS or profit?

Profit. Always. ROAS is a useful directional metric for comparing campaigns within a platform, but it is fundamentally a revenue ratio, not a profitability measure. A 4x ROAS can be a healthy profit or a guaranteed loss depending on your gross margin, fixed-cost structure, and return rate. The honest sequence: compute break-even ROAS from your gross margin (1 ÷ margin %), then compute PROAS (reported ROAS × margin %), then track MER as the whole-business measure, then reconcile weekly against actual EBIT in the daily P&L. The bank is the only referee. If your dashboards say 5x ROAS and your bank balance is flat, the dashboards are wrong. More on per-order true profit math.

How do I improve ROAS?

Three structural levers and one tactical one. Structural: (1) increase gross margin — even a 5-point margin lift drops break-even ROAS substantially (45% to 50% drops break-even from 2.22x to 2.00x). (2) increase AOV — bundles, free-shipping threshold tuning, order-bumps. A higher AOV at constant CAC is a direct ROAS lift. (3) improve retention — repeat customers cost almost nothing to acquire, so adding them to the campaign-attributed revenue base lifts ROAS without lifting spend. Tactical: tighten attribution to 7-day click only, audit creative for fatigue (refresh every 14-21 days at scale), narrow audiences if broad targeting has saturated, and run pause tests quarterly to identify which channels are genuinely incremental vs which are credit-claiming. The deeper play is usually structural — margin, AOV, and retention move ROAS more sustainably than creative or audience optimisation. See the CLV post for the retention side and the CAC mastery post for the acquisition side.