WhatIsPOASinGoogleAds?ProfitonAdSpendExplained
POAS (Profit on Ad Spend) is the contribution margin generated per pound of Google Ads spend. The formula is (Revenue − COGS − Shipping − Payment Fees − Returns) ÷ Ad Spend. A POAS above 1.0x means the campaign is contributing margin after variable costs; below 1.0x means it is losing money. POAS replaces ROAS for campaign-level commercial decisions because ROAS ignores every cost below the revenue line.
The definition, in one paragraph
POAS stands for Profit on Ad Spend. It is a campaign-level metric that divides contribution margin by ad spend, where contribution margin is revenue minus cost-of-goods, shipping, payment processing fees, discounts and the cost of returns. POAS is a registered trademark of ProfitMetrics; the term has been adopted across the UK ecommerce industry as the standard shorthand for profit-first measurement. JudeLuxe uses the term in this sense throughout.
The formula
The numerator is what finance teams call contribution margin: revenue minus direct variable costs, before overheads. The denominator is the ad spend that drove that revenue. The output is expressed as a multiple — 1.5x POAS means £1.50 of contribution margin per £1 spent on advertising.
Worked example: where ROAS and POAS diverge
A real example, anonymised. A skincare brand running Performance Max on Google Ads, spending £8,000 a month. The campaign reported a 4.2x ROAS — comfortably above the agency's 3.5x target. The CFO was happy.
| Line item | Value |
|---|---|
| Ad spend | £8,000 |
| Attributed revenue | £33,600 |
| ROAS | 4.2x |
| COGS (38%) | −£12,768 |
| Shipping & fulfilment | −£3,360 |
| Payment fees (2.4%) | −£806 |
| Returns & refunds (11%) | −£3,696 |
| Discount codes used | −£2,150 |
| Contribution margin | £10,820 |
| POAS | 1.35x |
The 4.2x ROAS was real. The 1.35x POAS was also real. The campaign was contributing margin, but only £1.35 per ad pound — half of what the headline ROAS suggested. When we then split that POAS by asset group, two of the four groups were sub-1.0x. The campaign was being held up by one strong group while two weaker ones quietly destroyed margin.
Why Google Ads reports ROAS by default
Google Ads measures what it can see. It sees clicks, conversions and the revenue value passed into the conversion tag. It does not see your cost-of-goods, your warehouse picking cost, your payment processor's blended rate, or your refund rate by SKU. None of that lives in Google Ads unless you put it there.
This is not a Google failing — it is a data-pipeline question. The brands tracking POAS reliably have invested in either a conversion value rule that adjusts revenue by margin band, an offline conversion import that overwrites the revenue value with the profit value, or a server-side feed that ships per-SKU margin into the conversion stream.
When POAS is the wrong metric
POAS belongs at the campaign and SKU level. It is not the right metric for every question:
- Platform diagnostics: use ROAS. POAS is too lagged to spot a bid strategy failing in real time.
- Business-wide marketing efficiency: use MER (Marketing Efficiency Ratio). POAS is too granular for the cross-channel question.
- Net profitability of the business: use the P&L. POAS does not deduct overheads, salaries or finance costs.
We covered the full mapping in POAS vs MER vs ROAS: Which Metric for Which Decision.
How JudeLuxe applies POAS
POAS sits inside our BOI™ (Bid On Intent) framework. Every SKU is assigned one of five commercial jobs — Scale, Profit, Protect, Recovery or Gateway — and the POAS target for that SKU is set by its job, not by a blended campaign average. A Scale SKU may run at 1.2x POAS deliberately because it is feeding a strong LTV cohort. A Profit SKU may need 2.5x POAS to justify shelf space. A Recovery SKU may be capped at break-even while inventory health is restored.
The point is not that POAS replaces every other metric. It is that POAS, applied per SKU and per job, produces commercial decisions that survive a CFO's scrutiny in a way that blended ROAS rarely does.
Related reading