Discuss a project

Good ROAS, no profit: work out your break-even ROAS first

Vladislav Dushkin5 October 20267 min read

A good ROAS is any ROAS above your break-even ROAS, and break-even ROAS is 1 divided by your contribution margin. With 35% left after product, shipping, fees and returns, you need 2.86 just to stand still. And the ad account usually shows more sales than reached your bank.

Why a ROAS of 4 can still lose money

Most agency reports end with one big number. ROAS 4, ROAS 6, "campaigns are profitable". Then the owner opens the bank account and the money isn't there. Sound familiar?

ROAS (return on ad spend) is revenue divided by ad spend. Revenue, not profit. From every $100 a customer pays, you still cover the product, shipping, payment fees, packaging, returns and discounts. Ads are paid out of what's left after that, not out of the full $100.

So "is 4 a good ROAS?" is the wrong question. The right one is: what ROAS does my margin need?

How to calculate break-even ROAS

The formula is short: break-even ROAS = 1 ÷ contribution margin. Shopify's own guide writes it as 1 ÷ gross profit margin, where the margin already has the variable costs taken out: cost of goods, shipping, payment and pick-and-pack fees. I also take out average losses on returns, because they are just as real.

An example with round numbers. This is an illustration, not a client:

  • Average order: $100
  • Product $40, shipping and packaging $12, payment fees $3, average return losses $10
  • Left before ads: $35, so the contribution margin is 35%
  • Break-even ROAS: 1 ÷ 0.35 = 2.86

Target ROAS: break-even plus the profit you want

Below 2.86, every order costs you money. At exactly 2.86 you've worked for free. A ROAS of 4 means ads take $25 of each $100, which leaves $10. Before rent, salaries and your own time.

If you want a target rather than zero, decide how much of each $100 you want to keep. Want $10? Then ads may take $25 at most, and your target ROAS is 1 ÷ (0.35 − 0.10) = 4. That number should be in the brief you give an agency. Not "make ROAS higher".

Why platform ROAS looks better than your bank account

Now the second problem. A correct break-even ROAS doesn't help if you compare it with an inflated number. And the ROAS in the ad account is usually inflated. Nobody has to be lying for that. It's how the counting works.

  • Attribution windows. By default, Meta credits itself with purchases made within several days after someone clicked an ad, or even just saw it. Which window your account uses is in the attribution setting in Ads Manager. Google Ads uses data-driven attribution by default for most conversion actions. These are rules for handing out credit, not proof the ad caused the sale.
  • Double counting. Each platform sees only its own touches. Someone clicks a Meta ad, later searches your brand on Google, opens your newsletter and buys. Meta, Google and your email tool can all count that one order. Nobody subtracts.
  • Returns and cancellations. The account counts the order at checkout. If the item comes back two weeks later, the ROAS doesn't change.
  • Returning customers. Retargeting and brand campaigns are very good at reaching people who would have bought anyway. Their orders make ROAS look great without adding new money.

Case: 5.3 in Google Ads, 3.6 in the order sheet

Graft Collab is a premium wine-glassware store in Dubai. In June 2025 the Google Ads account showed AED 14,120 in sales on AED 2,663 spent. A return of 5.3.

Our weekly order sheet for the same month said something else: 11 orders worth AED 9,647 on AED 2,660 spent. A return of 3.6. April looked the same: 4.0 in the account, 3.7 in the sheet.

The campaign really was working. In March the return had been 0.24. But if we had planned the budget on 5.3, we would have planned on AED 4,473 of sales that the order sheet doesn't show.

MER vs ROAS: the number I check first

So I start with a boring number. MER (marketing efficiency ratio) is total shop revenue divided by total marketing spend. Shopify also calls it blended ROAS. Flip it and you get the ad cost share: how many cents of every revenue dollar went to ads.

MER doesn't care which platform claims which order. Money in the shop against money spent, so double counting can't inflate it.

Villa Cotton sells premium home textiles in the US. In January 2025 the Meta account showed ad spend above 100% of the revenue it claimed. Shopify was harsher: $7,745.65 in Meta sales on $13,179.87 spent, a ROAS of 0.59. Same month, two systems, two stories.

For me the main number was the total: Meta plus Google spend against store sales. In January it was 54%. In July 2025, after five months of marketing, store sales were $81,589 (×2.9), the budget $47,310 (×3.1) and the overall ad cost share 58%. Sales almost tripled while the share barely moved.

One more detail from July. Meta claimed $62,090.73. Email and SMS claimed $10,987.65. That's $73,078 of $81,589 in store sales. Two channels already claim almost 90% of everything the store sold, before Google and before anyone who bought without seeing an ad.

Contribution margin and new customers: the checks after MER

MER tells you whether marketing as a whole pays off. These three tell you why.

  • Contribution margin after ads: revenue minus product, shipping, fees, returns and all ad spend. This is the money that pays rent and salaries. If it falls while ROAS rises, trust the margin.
  • New vs returning customers: split revenue and orders by first-time and repeat buyers in your shop platform. If ad spend grows and new-customer revenue doesn't, you're paying to re-sell to people who already know you.
  • Cost per new customer: total ad spend divided by new customers. Compare it with what a customer earns you in the first months you can actually measure, not over a "lifetime" you have no data for.

Repeat customers: from cheap channels, not paid ads

Repeat buyers aren't the problem. They should just come through cheap channels. At Villa Cotton the email and SMS flows brought $10,987.65 in July for $511.25 in costs. Paid ads were left to do the expensive job: new people.

A 15-minute check for your own shop

  • Write down your contribution margin before ads. If you don't know it, that's finding number one.
  • Calculate break-even ROAS: 1 ÷ margin.
  • Take last month's total shop revenue and total ad spend across all platforms. Calculate MER and the ad cost share.
  • Add up the revenue each platform claims. If the sum is close to or above your total revenue, the channel numbers overlap.
  • Subtract returns and cancellations from revenue and calculate again.
  • Split revenue into new and returning customers.

How to read the result

If MER still clears your break-even ROAS after all that, the ads really pay. If only the account ROAS clears it, you know where to dig. Check it against the bank, not the report.

FAQ

What is a good ROAS?

Any ROAS above your break-even ROAS, ideally above a target that includes the profit you want to keep. Generic benchmarks don't know your margin.

What is the break-even ROAS formula?

Break-even ROAS = 1 ÷ contribution margin. With 35% left after product, shipping, fees and returns, it's 1 ÷ 0.35 = 2.86.

MER vs ROAS: what's the difference?

ROAS measures one channel or campaign by that platform's own attribution. MER divides total shop revenue by total marketing spend, so overlapping claims between platforms can't inflate it.

What does blended ROAS mean?

It's another name for MER: all revenue against all marketing spend, across every channel.

Why does Meta show more sales than Shopify?

Meta credits sales by its attribution setting, which by default can also count people who only saw an ad, while Shopify attributes orders by its own rules. At Villa Cotton in January 2025 the Meta account showed a cost share above 100%, Shopify 170%.

Want to know what your ads earn in the bank, not in the account? See how I worked through it in the cases, then send me a short brief. The first 7 working days are a funnel diagnosis: where the money leaks and how much.