What is POAS?
POAS, profit on ad spend, divides the gross profit on the sales your ads are credited with by what the ads cost. A POAS of 1 means the ads paid for themselves and nothing more. It puts your margin into the ratio, but it keeps the same sales credit ROAS uses.
By Joris van Huët, Founder & CEOUpdated 7 min read
Run the numbers for your store: the free profit margin and markup calculator.
POAS, profit on ad spend, is usually the gross profit on ad-credited sales divided by what the ads cost. A POAS of 1 means the ads paid for themselves and nothing more; above 1, they left profit. It is ROAS with your margin inside, so it fixes the margin blind spot, not the credit problem.
The usual answer stops at the formula and crowns POAS the grown-up ROAS. Switch metrics, the story goes, and you finally optimise for profit. That is half right. POAS changes the ruler, but it never asks who earned the sale.
The sum is short. For illustration, €4,000 of credited sales at a 40% margin leaves €1,600 of gross profit. If the ads cost €1,000, that is a ROAS of 4x and a POAS of 1.6. In other words, POAS is ROAS multiplied by your margin, and its break-even line sits at 1 whatever you sell.
What one store's data shows
One store's anonymised GA4 export, 1 January 2024 to 21 August 2026. It holds shares of revenue only: no ad spend, no order counts.
| What the export shows | Value | Source cell |
|---|---|---|
| Break-even ROAS at a 40% margin (1 divided by 0.40) | 2.5x | Break-even sheet, 40% margin row |
| Journeys with 2 to 3 touches (12.5 days to buy) | 12.2% of revenue | Journeys sheet, 2-3 touches row |
| Journeys with 4 to 9 touches (16.9 days to buy) | 5.4% of revenue | Journeys sheet, 4-9 touches row |
| Journeys with 10 or more touches (16.0 days to buy) | 3.0% of revenue | Journeys sheet, 10+ touches row |
Start with the arithmetic row. On the Break-even sheet, a 40% margin puts break-even ROAS at 2.5x, because 1 divided by 0.40 is 2.5. Multiply 2.5 by 0.40 and you get 1, which is break-even POAS. Same line, two rulers. It is a sum, not a result: the export holds no spend, so it yields neither ratio.
Now the journeys. Add the three Journeys rows and 20.6% of revenue came through journeys of 2 or more touches, about a fifth (Journeys sheet). The remaining revenue came through a single touch, so any attribution model hands it to the same channel. A per-channel POAS therefore swings with your model choice on about a fifth of this store's revenue, and not at all on the rest.
Then the clock. On the Journeys sheet, journeys of 4 to 9 touches took 16.9 days to buy, and journeys of 10 or more took 16.0 days. A monthly POAS sets this month's profit against this month's spend, though last month's ads may have started some of those journeys. On long journeys, the month you judge is not the month that paid.
What the export cannot show is POAS itself. It has no spend, no product costs and no test. It shows who collected the credit, and when, not what any ad earned.
Why does POAS mislead when you treat it as the answer?
With one margin, it changes nothing. POAS is ROAS times margin. If every product earns the same margin, ranking campaigns by POAS gives exactly the order ROAS gave. It earns its keep only when margins differ. For illustration, two campaigns each turn €1,000 of ads into €4,000 of sales, a 4x ROAS apiece. If the first sells products with a 50% margin and the second 25%, their POAS are 2.0 and 1.0.
Nobody agrees on the profit. Some teams take off product cost only. Others also take off the shipping they pay, card fees and returns, which is closer to contribution margin. A few subtract the ad spend as well, which moves break-even from 1 to 0. So a POAS of 1.2 can mean three different things in three spreadsheets.
The cost side can be rough. Google Ads takes product costs from the cost of goods sold in your Merchant Center feed. Google's Merchant Center help says that cost is for reporting and need not be exact. Items with no cost simply drop out. In Google's own example, a $10 hat costing $3 plus a $20 shirt with no cost shows a gross profit of $7. Gaps in your feed make POAS look worse, not better.
The revenue side can carry tax. Meta calculates Purchase ROAS as purchase conversion value divided by amount spent. On Shopify, the Facebook & Instagram app reports an order's total price to Meta, duties and taxes included. Multiply that by your margin and you have booked the tax office's money as your profit.
What can POAS not tell you?
Whether the ad caused the sale. POAS divides profit on credited sales, and credit is not cause. Retargeting and brand-name search stand next to buyers who were already on their way back. They collect those sales and the margin that comes with them, so their POAS glows. Only a holdout test, with some buyers kept away from the ads, separates the two.
What happens after the first order. A first-order POAS below 1 can still pay off if buyers come back. One above 1 can hide customers who never return. Neither shows up in the ratio.
What is left for the business. Even a POAS built on contribution margin stops before wages, rent and software. Above 1 means the ads paid for themselves, not that the month made money.
What to do this week
- Write down your POAS recipe. One line: which costs come off, which platform's sales you start from, and whether 1 or 0 is break-even. Pass: anyone on the team can rebuild last month's figure from that line. Fail: two people get two different numbers from the same month.
- Re-rank last month's campaigns. Multiply each campaign's ROAS by the gross margin of what it advertises. Shopify's Gross profit by product, under Analytics > Reports > Category filter > Profit Margin, gives the margins. Pass: the order barely moves, so your margins are alike and ROAS was ranking fine. Fail: a campaign jumps or drops several places, so margin was hiding inside your ROAS.
- Book a test for your best POAS campaign. Plan a geo holdout that pauses it in a few regions. After a few weeks, compare total sales there with the rest. Pass: regions and a start date are written down. Fail: its budget grows on POAS alone, which still counts sales that were coming anyway.
Check the homework. Your GA4 Attribution paths export already holds the evidence. Causality Engine reads that one file and shows what each channel caused next to what last-click gave it, in 1 to 2 minutes, for €99 once (excluding VAT), refundable within 30 days. Check the homework
Sources, 1 October 2026: Profit reports (Shopify Help Center); About conversions with cart data (Google Ads Help); Cost of goods sold [cost_of_goods_sold] (Google Merchant Center Help); Metrics available with conversions with cart data (Google Ads Help); Purchase ROAS (return on ad spend) (Meta Business Help Center); Facebook data sharing (Shopify Help Center).
Related answers
Frequently asked questions
Is POAS the same as ROI?
Close, but the break-even point differs. POAS divides gross profit by ad spend, so 1 is break-even. Ad ROI takes the spend off first, so 0 is break-even. For illustration, a POAS of 1.5 is an ad ROI of 50%.What is a good POAS?
Anything above 1 pays for the ads, but a good POAS depends on what your recipe leaves out. Built on gross profit, it still has to cover shipping, fees, returns and fixed costs. Built on contribution margin, the same number sits closer to real profit. Set the bar from your own costs.How do I work out POAS for Meta ads?
Start from Meta's Purchase ROAS, which is purchase conversion value divided by amount spent. If Shopify's Facebook & Instagram app sends that value, it includes taxes, so take them out first. Then multiply by your margin. The result is your Meta POAS.
Go deeper: Causal attribution, explained.
Sixty-second versions of these ideas: Causality Engine on YouTube Shorts.
Keep reading
Terms in this article
- AttributionAttribution identifies user actions that contribute to a desired outcome and assigns value to each. It reveals which marketing touchpoints drive conversions.
- Attribution ModelAn Attribution Model defines how credit for conversions is assigned to marketing touchpoints. It dictates how marketing channels receive credit for sales.
- ConversionConversion is a specific, desired action a user takes in response to a marketing message, such as a purchase or a sign-up.
- Holdout TestA holdout test is an experiment where a portion of the audience does not see a campaign. This measures the campaign's true incremental impact.
- IncrementalityIncrementality measures the true causal impact of a marketing campaign. It quantifies the additional conversions or revenue directly from that activity.
- Incrementality TestingIncrementality Testing measures the additional impact of a marketing campaign. It compares exposed and control groups to determine causal effect.
- Profit MarginProfit margin measures profitability, calculated as net income divided by revenue and expressed as a percentage.
- RetargetingRetargeting is online advertising that targets users who have previously interacted with your website or content. Attribution analysis shows the causal role of retargeting in driving conversions and improving ad spend.