Your ROAS looks great. So why isn't your Shopify store making money?

ROAS shows what your ads brought in, not what you kept. Find your break-even ROAS, see why ad platforms overcount, and learn which numbers to scale on instead.

Dair Rose Founder, Skynify · 9 min read
KEY TAKEAWAYS
  1. ROAS counts revenue. Profit depends on what each order leaves after product, shipping, fees and returns.
  2. Break-even ROAS is 1 ÷ your margin. Our example store needs about 2.4× just to break even.
  3. Scale on profit and MER (all revenue ÷ all ad spend), not on what each ad platform reports.
On this page+

It's one of the most common things we hear on strategy calls: the ads dashboard says 4× ROAS, but the bank account doesn't look any better than it did six months ago.

Both things can be true at once. ROAS (return on ad spend) tells you how much revenue your ads brought in for every dollar spent. It says nothing about what you kept after product costs, shipping, payment fees and returns. And the revenue it reports is each ad platform's own count, which is usually generous.

This guide shows how to find the ROAS your store actually needs, why a good-looking number can still lose money, and the few numbers worth checking every week instead.

The short answer

A Shopify store can have a "good" ROAS and still lose money for three reasons:

  1. The ROAS is below the store's break-even point. A 3× can leave almost nothing once costs are paid, and a 4× can lose money when margins are thin.
  2. The ad platforms count more sales than the ads caused. Meta, Google and the rest each count by their own rules, so the same sale can show up in more than one report.
  3. Some costs never reach the ad account. Discounts, free shipping, returns and payment fees eat the margin quietly.

The fix: know your break-even ROAS, judge results on your store's total numbers rather than each platform's report, and raise budgets only while profit holds.

ROAS measures revenue, not profit

Take a simple example store. An average order is $100. The product costs $35, shipping costs $15, payment fees take $3.20 (2.9% + $0.30), and returns cost about $5 per order on average. That leaves $41.80 from every order to pay for ads and make a profit.

Now add the ads:

  • At a 3× ROAS, every $100 sale costs $33.33 in ads. You keep $8.47.
  • At a 2× ROAS, every sale costs $50 in ads. You lose $8.20 on every order.

Two stacked bars showing where a $100 order goes. At a 3x ROAS: product $35, shipping $15, fees and returns $8.20, ads $33.33, and $8.47 left as profit. At a 2x ROAS: the same costs plus $50 in ads, which is $8.20 more than the order brought in.

The example store: $35 product cost, $15 shipping, payment fees of 2.9% + $0.30 and returns worth 5% of sales. It's the same store our break-even ROAS calculator opens with.

Both campaigns would look fine in a weekly report. One pays the bills. The other costs you $8.20 every time it "works".

The question isn't "what's my ROAS?" It's "what's the most I can pay for a sale and still make money?"

Find your break-even ROAS

Your break-even ROAS is the point where ads exactly pay for themselves. Below it, every sale from ads loses money. It takes about five minutes to work out:

  1. Start with your average order value. Shopify's analytics shows it on the overview page.
  2. Subtract what each order costs you: the product, the shipping and packaging you pay for, payment fees, your average discount, and what returns cost you.
  3. Divide what's left by the order value. That's your margin before ads. For the example store, $41.80 ÷ $100 = 41.8%.
  4. Divide 1 by your margin. 1 ÷ 0.418 = 2.39, so the example store breaks even at about 2.4×.

The thinner your margin, the higher the ROAS you need just to stand still:

Bar chart of break-even ROAS by margin: a 20% margin needs 5.0x, 30% needs 3.3x, 40% needs 2.5x, the example store's 41.8% needs 2.4x, 50% needs 2.0x and 60% needs 1.7x.

Margin here is what an order leaves after product, shipping, payment fees and returns, before any ad spend.

That's why comparing your ROAS with another store's tells you very little. A 4× loses money for a store with a 20% margin, whose break-even is 5×, and makes good money for one with a 50% margin, whose break-even is 2×.

A discount works the same way: it thins your margin, so the ROAS you need goes up. Before a Black Friday sale, work out how much you can afford to discount, or let the discount break-even calculator do the math.

The same number in dollars is your break-even cost per purchase: the example store can spend up to $41.80 in ads to win a $100 order before it starts losing money.

Break-even isn't the goal

At break-even, you did all that work for nothing. Decide how much profit you want from each order, then work out the ROAS that leaves it. If the example store wants to keep 15% of every sale as profit after ads, it needs a ROAS of 1 ÷ (0.418 − 0.15), about 3.7×.

Rather skip the math? Our free break-even ROAS calculator works out both numbers from your own costs, and shows what each order makes or loses at the ROAS you're getting now. To turn a revenue goal into a monthly ad budget, use the ad budget calculator.

Why the dashboard ROAS is usually too high

Even a ROAS above your break-even can mislead you, because of who's counting.

Each ad platform only sees its own ads, and each decides for itself how long after a click, or even a view, a sale still counts as its doing. Say a shopper sees your Instagram ad on Monday, searches for your brand on Google on Wednesday and clicks your ad there, then buys on Friday after a reminder email. Meta can count that sale. So can Google. Your email platform may show it as email revenue too. Add up what every platform reports and it can come to more than your store actually sold.

Two more things push the number up:

  • Sales that would have happened anyway. Returning customers and people searching for your brand by name were already on their way to you. Ads that reach them get credit for sales they didn't create. Our Google Ads page explains how brand searches flatter the numbers.
  • Views counted as sales. Some platforms count a purchase from someone who saw an ad without clicking it. Sometimes the ad did its job. Sometimes the person scrolled straight past it.

None of this means the platforms are lying. Each reports what it saw. It means no single platform's ROAS can tell you whether your ads, together, made money.

The numbers to watch instead

You don't need a complicated dashboard. These five numbers, checked weekly, tell you whether advertising is paying:

Number How to work it out What it tells you
Platform ROAS Revenue a platform credits to its ads ÷ what you spent there Which campaigns and ads work best, compared with each other
MER (marketing efficiency ratio) All store revenue ÷ all ad spend Whether your advertising as a whole pays, with nothing counted twice
New-customer MER Revenue from first orders ÷ all ad spend Whether ads are winning new customers, not just reaching existing ones
POAS (profit on ad spend) Profit before ads ÷ ad spend (your ROAS × your margin) Whether the ads made money once your costs are in: above 1 is profit
Contribution profit Revenue minus product, shipping, fees, returns, discounts and ad spend What's actually left to pay for everything else

MER works because it starts from what Shopify recorded, so no sale is counted twice. Your break-even MER uses the same math as break-even ROAS: the example store needs an MER above 2.4× before its advertising, all together, makes money.

MER has a blind spot of its own: it includes sales from email, repeat customers and word of mouth that ads didn't create, so it can look healthy while your ads struggle to win anyone new. That's what new-customer MER is for. Shopify's reports can split sales between new and returning customers, so it takes a few minutes a week.

This is how we ran Amourprints' Meta ads: budgets went up only while the ads stayed above a profit target worked out from the brand's margins, not just while ROAS looked good on a dashboard. Over twelve months the ads brought back $5.50 for every dollar spent, and revenue grew from $2M to $11M.

Then count repeat customers, carefully

Break-even ROAS assumes a customer buys once. If your customers come back, the first sale is worth paying more for.

Say the example store's customers order 1.5 times a year and keep buying for two years. That's three orders and $125.40 in profit before ads, against $41.80 from the first order alone. A customer is worth three times what the first-order math says, and that's what lets a brand outbid competitors who only count the first purchase.

But use it carefully:

  • Count only the repeat orders you actually see. Use your own returning customer rate, which Shopify's analytics shows, not the rate you hope for.
  • Mind the cash gap. You pay for the ad today and earn the repeat profit over months or years. A store that spends its customers' whole lifetime value up front can run out of cash while it waits.
  • Give customers a reason to come back. Repeat orders rarely happen on their own. Post-purchase and win-back emails do most of that work: see the 5 email flows every Shopify store should have running.

Our customer lifetime value calculator opens with this same example, and shows the most you can pay to win a customer and how long they take to pay it back.

When to scale, hold or cut

Once you know your numbers, budget decisions get much simpler:

  • Above your target ROAS, and MER is holding: raise the budget in steps, and check after each step that profit grows with it. ROAS usually falls as you spend more, because the extra money reaches people who are less ready to buy. Scale on profit, not on ROAS.
  • Between break-even and target: keep it only if it's winning new customers who come back. Otherwise, rework the ads, the offer or the landing page.
  • Below break-even for more than two weeks: pause it or rebuild it. It's paying for sales you'd be better off without.

If a campaign looks great but your MER and your bank balance don't move, trust the bank balance.

And if your ads keep falling short, the problem may not be the ads. A store that turns more of its visitors into buyers gets more from every ad dollar: see the 4 places Shopify stores lose sales.

Your checklist for this week

  • Work out your margin and break-even ROAS with the break-even ROAS calculator.
  • Set a target ROAS that leaves the profit you want.
  • Ask whoever runs your ads which campaigns are above target, which are between break-even and target, and which are below break-even.
  • Start tracking MER and new-customer MER every week, next to each platform's ROAS.
  • Check your returning customer rate, and whether your post-purchase emails are live.
  • Pause or rework anything that's been below break-even for more than two weeks.

If you'd like a second pair of eyes on your numbers, that's exactly what our strategy calls are for.

Questions and answers

ROAS counts revenue, not profit. If it's below your break-even ROAS, every sale from ads loses money once product, shipping, fees and returns are paid. Ad platforms can also count sales they didn't cause, so the real return is often lower than the dashboard says.

ROAS is the revenue one ad platform credits to its own ads, divided by what you spent there. MER is all your store's revenue divided by all your ad spend. MER can't count a sale twice, so it's the better check on whether your advertising as a whole pays.

Each ad platform counts any purchase that happens within its own window after someone clicks, or sometimes just sees, one of its ads, and other platforms may count the same order. Shopify records each order once, which is why we judge results on Shopify's numbers.

Yes, but only the repeat orders your own data shows, and mind the cash gap: you pay for the ad today and earn the repeat profit over months. In our example, a customer who orders three times over two years is worth three times the first order's profit.

When your ads are above your target ROAS and your MER holds as you spend more. Raise budgets in steps and check that profit grows with each one, because ROAS usually falls as spend rises.

WANT THIS DONE FOR YOU?
We handle Meta and Google ads for Shopify brands every day.
See the service →
Share LinkedIn X
Dair Rose
Written by Dair Rose

Founder of Skynify. Nine years in e-commerce and 50+ Shopify brands scaled, from first-time founders to Tuff Crowd.

About Dair →

Keep reading

All articles →