Short answer: ROAS (return on ad spend) divides the revenue your ads bring in by what you spent. POAS (profit on ad spend) divides the profit from those sales by what you spent. A POAS above 1.0 means your ads made money, below 1.0 means they lost it. ROAS can't tell you that on its own, because it ignores what each product costs you.
The difference in one example
You spend $100 on ads and get $300 in sales.
- ROAS = $300 ÷ $100 = 3.0. Looks great.
- Those sales cost you $210 in products, shipping and fees, so they left $90 in profit.
- POAS = $90 ÷ $100 = 0.9. You lost $10.
Same campaign, same week. ROAS says scale it. POAS says it's losing money.
How to calculate POAS
POAS = profit from ad-driven sales ÷ ad spend
"Profit" here means what's left after the costs of each order: product cost, shipping you pay, payment fees, and returns. Leave out fixed overhead like rent or salaries.
| POAS | What it means |
|---|---|
| Below 1.0 | Your ads cost more than the profit they brought in |
| 1.0 | Break-even |
| Above 1.0 | Your ads made money (before overhead) |
If you only know your ROAS, you can convert it: POAS = ROAS × your margin before ads. A 3.0 ROAS at a 30% margin is a 0.9 POAS. At a 50% margin, it's 1.5. That's the same math behind break-even ROAS, which is just the ROAS where POAS equals 1.0.
Why optimizing for revenue pushes the wrong products
When you tell Meta or Google to maximize purchase value, they chase revenue. They don't know that some products make you far more money than others.
| Bundle | Hero product | |
|---|---|---|
| Price | $100 | $60 |
| Profit per sale | $30 | $42 |
| What a revenue-optimized ad platform prefers | ✓ | |
| What you actually want | ✓ |
On revenue, the bundle looks like the winner. On profit, the hero product earns 40% more per sale. A platform optimizing for revenue will keep pushing the bundle.
How to make your ads optimize for profit
This is where POAS stops being a reporting number and starts changing results.
- Add your costs to Shopify. Fill in Cost per item on your products. Shopify then knows the gross profit of every order.
- Calculate profit for each purchase as it happens. Your tracking setup takes the order, subtracts product costs, shipping and fees, and gets the real profit.
- Send that profit to your ad platforms as the purchase value, instead of the revenue. Do this server-side, so your margins never appear in the browser where anyone can see them.
- Bid on value. Use value-based bidding (Meta's highest-value or minimum ROAS options, Google's target ROAS) so the platforms chase the orders that make you the most profit.
- Keep revenue reporting separate. Your analytics (for example GA4) should still record revenue, so your sales reports stay normal.
A note on targets: once you send profit instead of revenue, the numbers in Ads Manager change meaning. A target "ROAS" of 1.2 now means 1.2 times your ad spend in profit. Set targets with that in mind.
When POAS matters most
- Your products have very different margins (bundles, discounts, multiple product lines)
- You run frequent promotions that cut margin
- Your campaigns look profitable on ROAS, but your bank balance doesn't agree
- You're ready to scale and want to know which campaigns actually earn money
If every product has roughly the same margin, break-even ROAS gets you most of the way there.
POAS only works with accurate tracking
POAS multiplies whatever your tracking reports. If a platform counts sales twice, your POAS is doubled too. If sales go missing, it's understated. Profit-based bidding on top of bad data just optimizes for the wrong thing more confidently.
That's why we fix the data feed first: one clean purchase per order, sent from the server, with good customer matching. Then add profit. Read why in Shopify's built-in tracking vs GTM server-side tracking.
how hungry is your pixel?
Find out if your ad platforms are counting sales correctly before you trust any ROAS or POAS number. The free Pixel Hunger Test takes 2 minutes.
Do this today
Fill in Cost per item for your top 10 products in Shopify. Then work out the profit per order on your best seller and your most-advertised product. If they're different, your ads may be pushing the wrong one.
FAQ
Is POAS better than ROAS? For deciding what's profitable, yes. ROAS is still handy as a quick revenue signal, and it's what most dashboards show by default. Ideally you watch both.
What's a good POAS? Anything reliably above 1.0 is making money before overhead. How far above depends on your fixed costs and growth goals.
Can I use POAS in Meta Ads Manager? Not as a built-in column. You get it by sending profit as the purchase value (so Meta's ROAS columns effectively show POAS), or by calculating it from your own profit data.
Does sending profit hurt my reporting? Only if it replaces revenue everywhere. Send profit to ad platforms for optimization, and keep revenue in your analytics for reporting.
want us to look at yours?
If you spend $5,000+ a month on ads, book a free 30-minute audit call. We'll check your tracking, show you what profit-based optimization would take for your store, and give you a fixed quote if it makes sense.
Feed your pixel. Grow your profit.
