Glossary

What is POAS? Profit on ad spend: formula, break-even and examples

POAS (profit on ad spend) is the gross profit an advert's sales left after cost of goods, divided by the ad spend: POAS = (revenue − cost of goods) ÷ ad spend. Its break-even is 1.00× for every product. Above it, the advertising paid for itself once the goods were paid for. Below it, the advertised sales lost money.

Last checked · More glossary

POAS in one line, and the formulas around it

POAS measures whether advertising paid for itself once the goods were paid for. ROAS divides revenue by ad spend. POAS divides gross profit (revenue minus cost of goods) by the same spend.

  • POAS = (revenue − cost of goods) ÷ ad spend
  • ROAS = revenue ÷ ad spend
  • Gross margin = (revenue − cost of goods) ÷ revenue
  • POAS = ROAS × gross margin
  • Net profit after advertising = revenue − cost of goods − ad spend = ad spend × (POAS − 1)

Here gross margin is the period's gross profit as a share of revenue. Opteno's Gross Margin column is something else: a per-unit amount from the product's lowest-margin variant. ROAS × that column does not give POAS.

POAS is usually written as a multiple, such as 1.33×. Some sources multiply it by 100 and write 133%. The ratio is the same, and break-even then becomes 100%.

Why break-even is 1.00× for every product

POAS breaks even at 1.00× whatever the product's margin, because cost of goods is already inside the numerator. At 1.00× the gross profit exactly equals the ad spend, so the net profit after advertising is zero.

ROAS has no fixed break-even. Its numerator is revenue, which still includes the cost of the goods, so the ROAS a product needs depends on its margin. On gross margin alone, the ROAS at which POAS reaches 1.00× is 1 ÷ gross margin: 2.50× at 40%, 4.00× at 25%. The break-even ROAS page also takes off shipping, payment fees and returns, so its figure for the same product is higher.

One line for the whole catalogue

A catalogue with hundreds of different margins has hundreds of gross-margin break-even ROAS figures but only one break-even POAS. That is the practical reason to read POAS beside ROAS. A product below 1.00× is losing money on its advertised sales whatever its ROAS looks like, and there is no per-product target to look up.

Worked example: the same ROAS, opposite results

The two products below have the same revenue, the same ad spend and so the same ROAS. One makes money and the other loses it. The figures are an example and work in any currency.

  1. Step 1: Product A: revenue 1,000, cost of goods 600, ad spend 300

    ROAS = 1,000 ÷ 300 = 3.33×. Gross profit = 1,000 − 600 = 400. POAS = 400 ÷ 300 = 1.33×. Net profit after advertising = 400 − 300 = 100, which is 300 × (1.333… − 1). The gross margin is 40%, so POAS reaches 1.00× at a ROAS of 2.50×, and 3.33× clears it.

  2. Step 2: Product B: revenue 1,000, cost of goods 750, ad spend 300

    ROAS is still 3.33×. Gross profit = 1,000 − 750 = 250. POAS = 250 ÷ 300 = 0.83×. Net profit after advertising = 250 − 300 = −50. The gross margin is 25%, so POAS reaches 1.00× only at a ROAS of 4.00×, and 3.33× falls short.

Added together, as they would be in one campaign, the two products show a ROAS of 3.33× and a POAS of 1.08× (650 of gross profit on 600 of spend). The total is profitable, and you cannot see Product B's loss of 50 until you measure each product on its own.

POAS vs ROAS

ROAS tells you how the advert performed on revenue. POAS tells you whether the sale was worth making. They answer different questions, so read them together.

  • Numerator

    ROAS uses revenue. POAS uses revenue minus cost of goods, which is gross profit.

  • What it answers

    ROAS: how much revenue each unit of ad spend brought in. POAS: once the goods were paid for, did the advertising pay for itself?

  • Break-even

    ROAS: POAS reaches 1.00× at a ROAS of 1 ÷ gross margin, which changes with each product's margin (2.50× at 40%, 4.00× at 25%). POAS: 1.00× for every product.

  • Where it is shown

    ROAS: in Google Ads as conversion value per cost (Conv. value / cost). POAS: calculated from gross profit. Opteno shows it on every product row, alongside ROAS and net profit.

  • What it needs

    ROAS: revenue and ad spend. POAS: the cost of the goods sold as well. Without it you have revenue but no gross profit.

What counts as revenue and cost of goods in Opteno

By default, POAS in Opteno is (revenue after refunds − cost of goods) ÷ ad spend, and it breaks even at 1.00×. A store can switch to a True Profit setting, which also subtracts ad spend and breaks even at 0, and can choose to leave refunds out. It is worked out for each product. When costs are tracked per variant and a sold variant has no cost-per-item, or a day with ad activity has no usable exchange rate, Opteno shows it as unavailable and names the reason.

  • Revenue = the product's gross sales − refunds from all its Shopify orders in the window, not only the orders Google credits to an ad
  • Cost of goods = each variant's cost-per-item × the units sold, added up, or a store-wide percentage if you set one. Cost-of-goods tracking is off by default in the store settings, and while it is off cost of goods counts as zero
  • Ad spend = Google Ads spend per product offer. Each day's spend is converted at that day's rate, then the days are added up
  • Break-even = 1.00× in the default POAS setting. Sort the POAS column, or set a minimum or maximum on it in the filters, to find the products below it
  • Windows = rolling 7, 14, 30 and 60 days ending yesterday, with variant, country and market breakdowns

POAS cannot be calculated when a product had no ad spend in the window, because there is nothing to divide by. The honest answer is 'not computable', not zero.

In the default setting, a product that had ad spend and zero gross profit shows 0.00×, a real figure far below break-even, not a gap.

Opteno's formula subtracts refunds and cost of goods and nothing else. You can include shipping and packaging you pay for in each variant's cost-per-item. Payment fees are not in the formula, and neither is VAT if your prices include it, so a product just above 1.00× may still lose money once they are paid.

Other definitions you will meet

The three definitions below all divide a profit figure by ad spend, but they differ on which costs that profit has already paid for, and one writes the result as a percentage. Only compare two POAS figures when you know what each numerator includes.

ProfitMetrics defines POAS as the gross profit of your ads after all your variable order costs, divided by ad spend, and says break-even is always 1. (ProfitMetrics says it holds a registered trademark on POAS®.) AdLibrary's explainer subtracts returns, payment processing, platform fees and fulfilment as well as cost of goods. ClickGuard's glossary subtracts cost of goods only and multiplies the ratio by 100 to give a percentage.

The more costs a definition subtracts, the lower the POAS for the same sales, and the closer 1.00× gets to your true break-even. For any definition written as a ratio that breaks even at 1, ad spend × (POAS − 1) is what remains after the costs that definition subtracts and the ad spend itself. Once you know which costs another tool has already subtracted, you can compare its figure with this one.

Questions about POAS

What is a good POAS?

Anything above 1.00× means the advertising paid for itself after cost of goods. Below 1.00×, the advertised sales lost money. How far above 1.00× you need to be depends on the costs your numerator leaves out, such as fees and overheads, and on the profit you want to keep. Each 0.10 above 1.00× keeps 10% of the ad spend as profit: as an example, 1.25× on 1,000 of spend leaves 250 after goods and advertising.

What is the difference between POAS and ROAS?

ROAS divides revenue by ad spend. POAS divides revenue minus cost of goods by the same spend. On gross margin, POAS reaches 1.00× at a ROAS of 1 ÷ gross margin, which changes with each product's margin, while POAS breaks even at 1.00× for every product. The two are linked: POAS = ROAS × gross margin.

Does Google Ads show POAS?

Google Ads shows ROAS as conversion value per cost. It can report gross profit if you use conversions with cart data and provide cost of goods sold in your Merchant Center feed. Dividing that gross profit by cost gives POAS for the campaigns it covers. Opteno works out POAS from Shopify orders and costs instead.

POAS or ROAS: which should drive decisions?

Judge products on POAS, because it has a fixed break-even: a product below 1.00× is losing money whatever its ROAS. Google's Target ROAS bidding aims for a ratio of conversion value to ad spend. If you bid on ROAS, put products with similar margins in their own campaigns so that each target can come from its margin band (on gross margin, POAS reaches 1.00× at a ROAS of 1 ÷ gross margin), rather than one target for the whole account. Then check each product against POAS.

When can POAS not be calculated?

When there was no ad spend in the period, because there is nothing to divide by. The answer is 'not computable', not zero. POAS also needs a cost for the goods sold. When Opteno tracks cost per variant and a sold variant has no cost-per-item, it shows POAS as unavailable and names the reason. If cost-of-goods tracking is off in the store settings, which is the default, cost of goods counts as zero until you switch it on.

See which products are losing you money

Connect Shopify and Google Ads in under five minutes. From $14.99 a month, cancel whenever you want, and no change to your store or your campaigns without your approval.

support@opteno.app