GuideUpdated 2026-07-06

ROAS vs POAS (profit-based)

Why revenue ROAS misleads across products with different margins, what profit-on-ad-spend measures instead, and how feeding margin into your decisions changes which products deserve budget.

Plain-English summary

ROAS measures revenue per pound of spend. POAS measures profit per pound of spend. Across a catalogue with mixed margins they disagree, a 400% ROAS on a thin-margin product can lose money while a 250% ROAS on a fat-margin one prints it. This explains where revenue ROAS quietly misleads and why bringing margin into the decision changes which products you'd grow.

ROAS and POAS measure different things

ROAS (Return On Ad Spend) is revenue ÷ ad spend. Spend £100, generate £400 of sales, that's 400% ROAS. It's the number Google Ads reports natively and the one most targets are set against.

POAS (Profit On Ad Spend) is gross profit ÷ ad spend. Same £100 spend, but if that £400 of sales carried £120 of gross profit, POAS is 120%. It measures what actually reaches your bank account, not what passes through the till.

For a single product at a fixed margin, they move together and ROAS is a fine proxy. The problem is that no ecommerce catalogue has a fixed margin: and that's where revenue ROAS starts lying.

Where revenue ROAS misleads

Consider two products, same £100 of spend each:

Product A (accessory) Product B (hero)
Gross margin 55% 12%
Revenue from £100 spend £300 £600
ROAS 300% 600%
Gross profit £165 £72
Ad spend £100 £100
Actual profit after ad spend £65 −£28

Product B has double the ROAS and loses money. Product A, with the worse-looking ROAS, is the one funding the business. If you optimise on revenue ROAS (chasing the 600% number) you'll pour budget into the product that quietly bleeds and starve the one that pays.

This isn't an edge case. Any catalogue mixing high-ticket-low-margin lines with low-ticket-high-margin ones has this tension baked in, and a single revenue-ROAS target papers straight over it.

Break-even ROAS is a margin fact, not a preference

The break-even ROAS for any product is roughly 1 ÷ gross margin:

Gross margin Break-even ROAS
10% 1000%
25% 400%
40% 250%
60% 167%
75% 133%

A campaign-wide 400% target is comfortably profitable for your 60% margin products and a guaranteed loss on your 10% margin ones: simultaneously. There is no single number that's right for both, which is why margin has to enter the decision somewhere.

Deep dive Feeding margin into product-level decisions

The clean way to bring profit into Shopping is to stop treating ROAS as the objective and start treating it as an input alongside margin. In practice that means each product's sustainable target is derived from its own economics rather than a campaign average.

Product-level analysis in /tools uses each product's margin and price alongside its conversion history to judge what target it can actually sustain: then surfaces where a revenue-ROAS target is mispricing things: the high-margin products you could safely grow at a lower target (winning more volume profitably), and the low-margin products the current target lets bleed. Two things to understand about how that's framed:

  • It's analysis surfaced for your approval, not an automatic override. The recommendation is a proposal with the margin and conversion reasoning shown; nothing changes bids until you sign it off. BidSmart is approval-first by design: the profit lens informs the queue, it doesn't execute on its own.
  • Margin data has to come from somewhere, and its quality bounds the analysis. If your margin figures are rough, treat the output as directional (margin bands rather than precise POAS). If they're accurate per product, the analysis gets correspondingly sharper. Either way it beats a single revenue target, because even three coarse bands separate the money-makers from the money-losers.

The prerequisite, as ever, is a clean revenue signal: accurate conversion value at the tag. Profit analysis divides that revenue by cost of goods; if the revenue numerator is broken, the profit figure is broken too, just less obviously.

Practical ways to bring profit in

You don't need a full POAS build to stop the bleeding. In rough order of effort:

  1. Margin bands via custom labels. Tag products high / medium / low margin in your feed and split targets accordingly. Crude, but it stops one target crushing your best products. See custom labels for segmentation.
  2. Profit-adjusted conversion values. Where your platform supports it, report gross profit (or a margin-weighted value) as the conversion value instead of raw revenue: then value-based bidding optimises toward profit natively.
  3. Product-level economics. Let each product's own margin and price set its sustainable target, surfaced as recommendations for your approval.

The one-line summary

ROAS ranks products correctly only when their margins are equal. Across a real catalogue they never are: so somewhere in your measurement, margin has to enter the picture, or you'll keep rewarding revenue that doesn't turn into profit.

Frequently asked questions

Is a higher ROAS always better?

No, only within the same margin band. A 400% ROAS on a 10% margin product returns less actual profit than a 250% ROAS on a 50% margin product. ROAS ranks products correctly only when their margins are equal, which across a real catalogue they never are.

What ROAS do I need to break even?

It depends entirely on margin. Break-even ROAS is roughly 1 ÷ gross margin. At 25% margin you need 400% ROAS just to break even on ad spend; at 60% margin you break even at about 167%. That's the whole point, one target can't fit both.

Do I need POAS to run Shopping well?

You can run without it, but you'll systematically over-invest in high-revenue, low-margin products and under-invest in profitable ones. Even rough margin bands (high/medium/low) applied to your targets beat a single revenue-ROAS target across a mixed catalogue.

Put this into practice. /tools rebuilds messy product data into Merchant Center-ready feeds. Connect a store and see your Feed Health Score in minutes.
Try /tools →