Profit metric

POAS (profit on ad spend)

The CM1 an ad brings back for every rupee it spends. Unlike ROAS, it knows which products were sold and what each one costs, so it tells you whether an ad makes money, not just revenue.

Source: Attribution + SKU-level P&LComputed: Per ad, per orderBetter when: Higher, break-even at 1Also called: Profit ROAS, contribution ROAS
Formula
POAS =
CM1 of attributed orders
รท Ad spend

CM1 is net revenue minus fulfilment costs (COGS, shipping, payment gateway fees and handling), worked out for the exact SKUs in each order. POAS above 1 means the ad leaves positive CM2.

Updated November 2026 ยท 5 min read
01

What is POAS?

ROAS treats every rupee of revenue as equal. But โ‚น1,000 of a hero serum and โ‚น1,000 of a heavily discounted combo kit leave very different amounts behind once you pay for the product, shipping and returns. An ad that sells mostly the combo can top the ROAS table and still lose money.

POAS replaces revenue with CM1, the margin left after fulfilment. It follows each attributed order down to the SKUs in it, takes out product, shipping, payment and handling costs, and divides what's left by the ad spend. The break-even is always 1, whatever your margins, which makes it easy to compare ads that sell different things.

ROASRevenue รท ad spend. Blind to what was sold.
POASCM1 รท ad spend. Above 1 leaves positive CM2.
Break-even ROASThe ROAS equivalent of POAS = 1 for a given margin.
02

How it's calculated

POAS needs attribution and a product-level P&L to meet at the order. Each attributed order brings its SKUs, and each SKU brings its costs.

InputWhere it comes fromWhat it gives us
attributed_ordersTrue attribution, per adWhich orders, and which SKUs, the ad gets credit for
net_revenueOrder line items after discounts and GSTRevenue per SKU
sku_costsCOGS per SKU, plus shipping, payment gateway fees and handlingCM1 per order line
rto_statusShipping partner dataRemoves undelivered revenue, adds return shipping cost
spendAd platformThe denominator
POASฮฃ CM1 of attributed orders รท SpendCM1 returned per rupee of spend.
ShortcutROAS ร— CM1 %Same result, if CM1 % is the blended margin of that ad's orders.
CM2 from the ad(POAS โˆ’ 1) ร— SpendWhat the ad left you in rupees after its own spend, before operational costs.
Why per order, not a brand average?Multiplying ROAS by your brand-wide margin assumes every ad sells the same mix. They don't. A sale creative pulls discounted bundles, a hero-SKU video pulls full-price units. Margin has to follow the actual orders each ad drove.
03

Getting the costs right

POAS is only as good as the cost data behind it. Three things matter most.

  1. 1Enter real COGSDefault cost assumptions get you started, but your own landed cost per SKU is what makes POAS trustworthy.
  2. 2Wait for deliveryAn order that goes RTO turns from profit into a loss. Recent days will move until shipments settle.
  3. 3Update on price changesNew supplier rates, courier contracts or gateway fees all shift CM1. Keep the cost table current.
04

Worked examples

Example 1: One ad, three SKUs

An illustrative skincare ad spends โ‚น2,00,000 in a week. True attribution credits it with โ‚น6,50,000 of delivered revenue across three products.

SKUAttributed revenueCM1 %CM1
Face serumโ‚น3,00,00058%โ‚น1,74,000
Sunscreenโ‚น1,50,00045%โ‚น67,500
Combo kit (discounted)โ‚น2,00,00020%โ‚น40,000
Totalโ‚น6,50,00043%โ‚น2,81,500
Ad spend โ‚น2,00,000ROAS 3.25POAS 1.41
Revenue vs CM1 by SKURevenueCM1
Bar length relative to โ‚น3,00,000.
  • OverallPOAS of 1.41 means the ad returned โ‚น1.41 of CM1 per rupee, leaving โ‚น81,500 of CM2 after spend.
  • Combo kitIt drives 31% of the ad's revenue but only 14% of its CM1. Shifting the creative toward the serum would lift POAS without changing spend.

Example 2: The higher ROAS ad is the worse ad

Two illustrative ads each spend โ‚น1,00,000. Ranked by ROAS, A wins. Ranked by POAS, B does.

Ad A ยท Bundle offerLosing money
ROAS3.20
CM128%
POAS0.90
โ‚น3,20,000 of revenue, but only โ‚น89,600 of CM1. CM2 is โˆ’โ‚น10,400: it costs more than it returns.
Ad B ยท Hero SKU demoProfitable
ROAS2.40
CM152%
POAS1.25
Less revenue, but โ‚น1,24,800 of CM1. It leaves โ‚น24,800 of CM2 after spend.
05

Using POAS to decide

POAS of 1 means CM2 is exactly zero. These bands are a starting point. Raise the bar if ads also need to cover operational costs for CM3, or lower it for prospecting you've priced in with LTV.

Healthy
You seePOAS well above 1, steady as orders settle.
Do thisScale it, checking marginal returns as you go.
Mix problem
You seeHigh ROAS, POAS near or below 1.
Do thisThe ad sells, but the wrong things. Change the products it features or the offer, not the budget.
Losing money
You seePOAS below 1 after RTO has settled.
Do thisPause or fix it, unless it's a new-customer play whose payback you've already modelled.
Too early
You seePOAS on the last few days, with many COD orders still in transit.
Do thisExpect it to drop as RTOs land. Decide on settled weeks.
06

Common mistakes

  • One margin for every adROAS ร— brand margin hides exactly the mix differences POAS is meant to show.
  • Gross margin instead of CM1Leaving out shipping, payment and handling costs, including the return leg on RTO, flatters every ad, most of all COD-heavy ones.
  • Platform-attributed ordersAccurate costs on over-counted orders still give the wrong answer. Start from true attribution.
  • Subtracting operational costsSalaries, warehouses and software belong in CM3, not in an ad's POAS. Keep them out, or every ad looks worse than it is.
07

Frequently asked questions

What is a good POAS?

Anything above 1 means the ad leaves positive CM2. How far above you need depends on how much of your operational costs and profit target marketing is expected to carry.

How is POAS different from ROAS?

ROAS uses revenue, POAS uses CM1. POAS equals ROAS multiplied by the CM1 margin of the orders the ad drove, so it changes whenever the product mix changes.

Can I optimise ad platforms on POAS?

Ad platforms optimise on the conversion value you send them. Sending profit instead of revenue as that value is one way to do it, but it depends on reliable SKU costs and how your Conversions API is set up.

What if I haven't entered my costs?

Default cost assumptions give you a directional POAS from day one. Treat it as a rough guide until your own COGS and shipping rates are in.

See profit, not just revenue, for every ad

BooleanMaths joins true attribution with SKU-level CM1, so every ad's orders carry their real costs. It starts with default costs and gets sharper as you add your own.

Profit metric

POAS (profit on ad spend)

The CM1 an ad brings back for every rupee it spends. Unlike ROAS, it knows which products were sold and what each one costs, so it tells you whether an ad makes money, not just revenue.

Source: Attribution + SKU-level P&LComputed: Per ad, per orderBetter when: Higher, break-even at 1Also called: Profit ROAS, contribution ROAS
Formula
POAS =
CM1 of attributed orders
รท Ad spend

CM1 is net revenue minus fulfilment costs (COGS, shipping, payment gateway fees and handling), worked out for the exact SKUs in each order. POAS above 1 means the ad leaves positive CM2.

Updated November 2026 ยท 5 min read
01

What is POAS?

ROAS treats every rupee of revenue as equal. But โ‚น1,000 of a hero serum and โ‚น1,000 of a heavily discounted combo kit leave very different amounts behind once you pay for the product, shipping and returns. An ad that sells mostly the combo can top the ROAS table and still lose money.

POAS replaces revenue with CM1, the margin left after fulfilment. It follows each attributed order down to the SKUs in it, takes out product, shipping, payment and handling costs, and divides what's left by the ad spend. The break-even is always 1, whatever your margins, which makes it easy to compare ads that sell different things.

ROASRevenue รท ad spend. Blind to what was sold.
POASCM1 รท ad spend. Above 1 leaves positive CM2.
Break-even ROASThe ROAS equivalent of POAS = 1 for a given margin.
02

How it's calculated

POAS needs attribution and a product-level P&L to meet at the order. Each attributed order brings its SKUs, and each SKU brings its costs.

InputWhere it comes fromWhat it gives us
attributed_ordersTrue attribution, per adWhich orders, and which SKUs, the ad gets credit for
net_revenueOrder line items after discounts and GSTRevenue per SKU
sku_costsCOGS per SKU, plus shipping, payment gateway fees and handlingCM1 per order line
rto_statusShipping partner dataRemoves undelivered revenue, adds return shipping cost
spendAd platformThe denominator
POASฮฃ CM1 of attributed orders รท SpendCM1 returned per rupee of spend.
ShortcutROAS ร— CM1 %Same result, if CM1 % is the blended margin of that ad's orders.
CM2 from the ad(POAS โˆ’ 1) ร— SpendWhat the ad left you in rupees after its own spend, before operational costs.
Why per order, not a brand average?Multiplying ROAS by your brand-wide margin assumes every ad sells the same mix. They don't. A sale creative pulls discounted bundles, a hero-SKU video pulls full-price units. Margin has to follow the actual orders each ad drove.
03

Getting the costs right

POAS is only as good as the cost data behind it. Three things matter most.

  1. 1Enter real COGSDefault cost assumptions get you started, but your own landed cost per SKU is what makes POAS trustworthy.
  2. 2Wait for deliveryAn order that goes RTO turns from profit into a loss. Recent days will move until shipments settle.
  3. 3Update on price changesNew supplier rates, courier contracts or gateway fees all shift CM1. Keep the cost table current.
04

Worked examples

Example 1: One ad, three SKUs

An illustrative skincare ad spends โ‚น2,00,000 in a week. True attribution credits it with โ‚น6,50,000 of delivered revenue across three products.

SKUAttributed revenueCM1 %CM1
Face serumโ‚น3,00,00058%โ‚น1,74,000
Sunscreenโ‚น1,50,00045%โ‚น67,500
Combo kit (discounted)โ‚น2,00,00020%โ‚น40,000
Totalโ‚น6,50,00043%โ‚น2,81,500
Ad spend โ‚น2,00,000ROAS 3.25POAS 1.41
Revenue vs CM1 by SKURevenueCM1
Bar length relative to โ‚น3,00,000.
  • OverallPOAS of 1.41 means the ad returned โ‚น1.41 of CM1 per rupee, leaving โ‚น81,500 of CM2 after spend.
  • Combo kitIt drives 31% of the ad's revenue but only 14% of its CM1. Shifting the creative toward the serum would lift POAS without changing spend.

Example 2: The higher ROAS ad is the worse ad

Two illustrative ads each spend โ‚น1,00,000. Ranked by ROAS, A wins. Ranked by POAS, B does.

Ad A ยท Bundle offerLosing money
ROAS3.20
CM128%
POAS0.90
โ‚น3,20,000 of revenue, but only โ‚น89,600 of CM1. CM2 is โˆ’โ‚น10,400: it costs more than it returns.
Ad B ยท Hero SKU demoProfitable
ROAS2.40
CM152%
POAS1.25
Less revenue, but โ‚น1,24,800 of CM1. It leaves โ‚น24,800 of CM2 after spend.
05

Using POAS to decide

POAS of 1 means CM2 is exactly zero. These bands are a starting point. Raise the bar if ads also need to cover operational costs for CM3, or lower it for prospecting you've priced in with LTV.

Healthy
You seePOAS well above 1, steady as orders settle.
Do thisScale it, checking marginal returns as you go.
Mix problem
You seeHigh ROAS, POAS near or below 1.
Do thisThe ad sells, but the wrong things. Change the products it features or the offer, not the budget.
Losing money
You seePOAS below 1 after RTO has settled.
Do thisPause or fix it, unless it's a new-customer play whose payback you've already modelled.
Too early
You seePOAS on the last few days, with many COD orders still in transit.
Do thisExpect it to drop as RTOs land. Decide on settled weeks.
06

Common mistakes

  • One margin for every adROAS ร— brand margin hides exactly the mix differences POAS is meant to show.
  • Gross margin instead of CM1Leaving out shipping, payment and handling costs, including the return leg on RTO, flatters every ad, most of all COD-heavy ones.
  • Platform-attributed ordersAccurate costs on over-counted orders still give the wrong answer. Start from true attribution.
  • Subtracting operational costsSalaries, warehouses and software belong in CM3, not in an ad's POAS. Keep them out, or every ad looks worse than it is.
07

Frequently asked questions

What is a good POAS?

Anything above 1 means the ad leaves positive CM2. How far above you need depends on how much of your operational costs and profit target marketing is expected to carry.

How is POAS different from ROAS?

ROAS uses revenue, POAS uses CM1. POAS equals ROAS multiplied by the CM1 margin of the orders the ad drove, so it changes whenever the product mix changes.

Can I optimise ad platforms on POAS?

Ad platforms optimise on the conversion value you send them. Sending profit instead of revenue as that value is one way to do it, but it depends on reliable SKU costs and how your Conversions API is set up.

What if I haven't entered my costs?

Default cost assumptions give you a directional POAS from day one. Treat it as a rough guide until your own COGS and shipping rates are in.

See profit, not just revenue, for every ad

BooleanMaths joins true attribution with SKU-level CM1, so every ad's orders carry their real costs. It starts with default costs and gets sharper as you add your own.