ROAS looks good, but profit is negative
A campaign can show a healthy ROAS while the order still loses money once COGS, shipping, fees and discounts are counted.
In real life: Meta reports 4x ROAS, but the product is heavy, shipping is under-recovered and the margin is thin, so the net order is a loss.
Data you need
- requiredAd spend by campaign or SKU. Attributed spend, not just account total.
- requiredCOGS. To know real margin per order.
- requiredShipping and fees. Often the gap between ROAS and POAS.
Formula
(Revenue - COGS - Shipping - Fees - Discounts) / Ad SpendROAS uses revenue; POAS uses profit. Only POAS tells you if the ad made money.
Key insight
- ROAS above 3 can still be a loss when the denominator ignores costs.
- One SKU often carries most of the spend but the least margin.
Action checklist
- 1Switch the scoreboard from ROAS to POAS · medium · 1 hour
Judge campaigns by profit per ad dollar. - 2Pull the highest-spend SKU in the campaign · easy · 15 min
Check its margin alone. - 3Recover shipping or raise price on thin SKUs · medium · 1 day
Close the gap before scaling spend. - 4Pause campaigns with POAS under 1 · easy · 30 min
Below 1 means the ad loses money after costs.
Money impact · Cut a loss
Stops spend that converts but loses money after the full cost stack.
Loss avoided = Ad Spend x (1 - POAS) on campaigns with POAS < 1POAS needs real ad-spend data. With no ad data, Okiela shows AOV instead of a fabricated POAS.
Worked example — your numbers will differA 3× ROAS campaign that spends $2,000 drives $6,000 of sales; on a thin product margin that is about $1,500 gross — a roughly $500 loss after the ad spend.
Common mistakes
- Scaling a campaign on ROAS without checking margin.
- Blending all SKUs into one campaign average.
How Okiela helps
POAS in the 5D waterfalllive
Okiela places ad spend as the final deduction so you see profit before and after ads.
Trust & sources
- Community signalPOAS vs ROAS is a documented DTC operator gap
Last reviewed 2026-06-22 · Confidence 4/5