Most Shopify brands judge Google Ads on one number: ROAS, revenue divided by ad spend. It's the number in every agency report and the default target in every Performance Max campaign. The problem is simple. ROAS measures revenue. You bank profit.
This guide shows the three calculations that expose the gap, and the four changes that close it.
1. Work out your break-even ROAS
Break-even ROAS is the point where gross profit from ad-driven sales exactly covers the ad spend. The formula:
Break-even ROAS = 1 ÷ gross margin
Gross margin here means price minus product cost, shipping, packaging and payment fees, as a share of price.
- At a 50% margin, break-even ROAS is 2x.
- At a 30% margin, it's 3.33x.
- At a 20% margin, it's 5x.
So a 4x ROAS is comfortably profitable on a 50%-margin product and a loss on a 20%-margin one. A single account-wide ROAS target treats them the same. Google will happily push the cheap, low-margin product if it converts more easily.
2. Strip out branded search
When someone searches your brand name, they were already coming to you. By default, Performance Max and Shopping can serve on those searches and take the credit. That inflates the reported ROAS of campaigns that are meant to find new customers.
Here's what that does to the numbers. Say you spend £10,000 a month at a reported 4x ROAS, with a 30% margin:
- Revenue Google reports: £40,000
- Gross profit: £12,000
- Profit after ad spend: £2,000
Now suppose 30% of that revenue came from people searching your brand. Take it out and the new-customer revenue is £28,000, gross profit £8,400 — and profit after ad spend is −£1,600. The account looks profitable only because it's claiming sales you would mostly have made anyway.
The fix is structural: run branded search as its own campaign, and use brand exclusions in Performance Max. Then you can see what each campaign really earns. You can run your own numbers in the ROAS vs profit calculator.
3. Look at profit by product, not by campaign
Export 90 days of Google-attributed orders by product. For each product, work out gross profit minus the ad spend it received. You'll usually find three groups:
- Winners — a handful of products making most of the profit.
- Passengers — products that roughly break even.
- Leaks — low-price or low-margin products that spend and never pay back.
The leaks are rarely obvious in a campaign-level report, because the winners hide them.
How to make Google bid for profit
Group products by margin
Add a custom label to your Merchant Center feed for margin tier (for example high, medium, low). Split campaigns or asset groups by that label, so each tier can have its own target and budget.
Send profit, not revenue, as conversion value
Value-based bidding optimises for whatever value you send it. If you send order revenue, it chases revenue. If you send gross profit per order, it chases profit. This needs product cost data passed alongside the order — the setup is fiddly, but it's the single biggest change you can make.
Exclude the leaks
Products whose gross profit per order can't cover a realistic cost per sale shouldn't be advertised at all. They can stay in the store. They just shouldn't be spending your budget.
Report one number
Put profit after ad spend at the top of every report. If it isn't there, nobody is managing it. Spend, gross profit, profit after ad spend, new-customer revenue and what changed — that's enough.
The short version
ROAS isn't wrong. It's incomplete. Work out your break-even point, separate branded demand, and tell Google what each order is actually worth to you. Most accounts we look at are profitable on paper and much thinner in the bank — and the fix is usually subtraction, not more spend.
If you want to check your own account in ten minutes, start with the Marketing Clutter Checklist.