India-specific metric

Delivered ROAS

ROAS counted only on orders that actually reached the customer. It takes out cancellations and RTO, and it often reorders which campaigns look best.

Source: Ad platforms, Shopify, shipping partnersComputed: Daily, per campaign and adBetter when: HigherAlso called: RTO-adjusted ROAS
Formula
Delivered ROAS =
Revenue from delivered orders
รท Ad spend

For recent days where orders are still in transit, delivered revenue is estimated and trued up as shipments resolve.

Updated November 2026 ยท 5 min read
01

What is delivered ROAS?

Standard ROAS counts every order the moment it's placed. In markets with a lot of cash on delivery, a share of those orders never get delivered, so the revenue behind that ROAS never arrives.

Delivered ROAS only counts revenue from orders that reached the customer. Because RTO varies so much by campaign, it doesn't just shrink every ROAS by the same amount. It changes which campaigns come out on top.

Placed ROASRevenue from every order placed รท spend. What ad platforms show.
Delivered ROASRevenue from orders that arrived รท spend. What you can bank.
RTO rateThe share of shipped orders that came back. The gap between the two.
02

How it's calculated

You need three things joined on the same order: which ad gets credit for it, what it was worth, and whether it was delivered.

InputSourceWhat it gives us
spendMeta, Google and other ad platformsDenominator
attributed_ordersYour attribution model, not the platform'sWhich orders belong to which campaign
order_valueShopifyRevenue per order
delivery_statusShipping partners, by order IDDelivered, RTO, cancelled or in transit
Delivered ROASDelivered revenue รท SpendFor orders that have resolved.
Estimated delivered revenueDelivered + In transit ร— (1 โˆ’ Expected RTO)For recent days. Expected RTO comes from that campaign's or segment's history.
Why not just knock a flat RTO % off every campaign?Because the whole point is that RTO isn't flat. A brand-wide haircut keeps the ranking exactly the same and hides the campaigns that bring in orders that never arrive. Each campaign needs its own delivered revenue.
03

Handling recent days

Decisions get made on the last few days of data, and those are exactly the days where most orders are still in transit. Counting only confirmed deliveries would make every new campaign look terrible.

  1. 1Count what's resolvedDelivered revenue in full, RTO and cancellations at zero.
  2. 2Estimate what's in transitApply the expected RTO rate for that campaign, payment method and pincode mix.
  3. 3True it upReplace estimates with actuals as shipments resolve. The estimate gets better as history builds.
04

Worked examples

Example 1: Three campaigns, re-ranked

Three illustrative campaigns over a month, with all orders now resolved.

CampaignSpendPlaced revenuePlaced ROASLost to RTO and cancellationsDelivered ROAS
Sale prospectingโ‚น2,00,000โ‚น9,00,0004.50 (#1)30%3.15 (#3)
UGC prospectingโ‚น2,00,000โ‚น7,60,0003.80 (#3)10%3.42 (#2)
Retargetingโ‚น1,00,000โ‚น4,20,0004.20 (#2)8%3.86 (#1)
Placed vs delivered ROASPlacedDelivered
Sale prospectingUGC prospectingRetargeting
  • SaleTop of the table on placed ROAS, bottom on delivered. Its discount-led COD orders lose 30% before they arrive.
  • UGCLooked weakest, but delivers 3.42, ahead of the sale campaign. Moving budget towards it on placed ROAS would have gone the wrong way.

Example 2: The same week, read two ways

An illustrative campaign spent โ‚น1,20,000 last week and booked โ‚น5,00,000 of orders. So far โ‚น2,80,000 has been delivered, โ‚น40,000 has come back, and โ‚น1,80,000 is still in transit. Its usual RTO rate is 15%.

Confirmed deliveries onlyToo pessimistic
2.33โ‚น2,80,000 รท โ‚น1,20,000. Treats every parcel in transit as lost, so new campaigns get paused before they've had a fair read.
With expected RTODecision-ready
3.61(โ‚น2,80,000 + โ‚น1,80,000 ร— 85%) รท โ‚น1,20,000. Uses โ‚น4,33,000 of estimated delivered revenue, then trues up as the last โ‚น1,80,000 resolves.
05

Using delivered ROAS to decide

Read it next to placed ROAS and against your break-even ROAS. The gap between the two is as telling as either number. Treat these rows as starting points.

Healthy
You seeDelivered ROAS above break-even, with a small gap to placed ROAS.
Do thisSafe to scale. Orders are arriving as expected.
Watch
You seePlaced ROAS strong, delivered ROAS close to break-even.
Do thisDon't scale yet. Fix the RTO driver first: offer, COD share or pincode mix.
Act now
You seeDelivered ROAS below break-even on a campaign that looks good on placed ROAS.
Do thisIt's losing money while looking like a winner. Cut budget or rework the offer now.
06

Common mistakes

  • A flat haircut for every campaignKeeps the ranking unchanged and hides the real offenders.
  • Counting only confirmed deliveriesMakes every recent campaign look worse than it is. Estimate the in-transit share.
  • Starting from platform ROASPlatforms over-attribute before RTO even enters the picture. Start from true attributed orders.
  • Comparing it to placed break-evenIf the RTO shipping legs already sit in your CM1 fulfilment costs, compare delivered ROAS to that break-even, not a gross one.
07

Frequently asked questions

Is delivered ROAS the same as true ROAS?

No. True ROAS fixes who gets credit for an order. Delivered ROAS fixes whether the order turned into revenue. You want both: true attribution first, then delivery on top.

How accurate is the estimate for recent days?

It's only as good as the history behind it. Estimates by campaign, payment method and pincode tier are much closer than a single brand-wide rate, and they're corrected once shipments resolve.

Does this matter for prepaid-only brands?

Much less. Prepaid orders rarely come back undelivered, so delivered and placed ROAS stay close. It matters most where COD is a large share of orders.

Rank campaigns on what gets delivered

BooleanMaths matches shipping outcomes to every attributed order, so you can judge campaigns on revenue that actually reaches your bank account.

India-specific metric

Delivered ROAS

ROAS counted only on orders that actually reached the customer. It takes out cancellations and RTO, and it often reorders which campaigns look best.

Source: Ad platforms, Shopify, shipping partnersComputed: Daily, per campaign and adBetter when: HigherAlso called: RTO-adjusted ROAS
Formula
Delivered ROAS =
Revenue from delivered orders
รท Ad spend

For recent days where orders are still in transit, delivered revenue is estimated and trued up as shipments resolve.

Updated November 2026 ยท 5 min read
01

What is delivered ROAS?

Standard ROAS counts every order the moment it's placed. In markets with a lot of cash on delivery, a share of those orders never get delivered, so the revenue behind that ROAS never arrives.

Delivered ROAS only counts revenue from orders that reached the customer. Because RTO varies so much by campaign, it doesn't just shrink every ROAS by the same amount. It changes which campaigns come out on top.

Placed ROASRevenue from every order placed รท spend. What ad platforms show.
Delivered ROASRevenue from orders that arrived รท spend. What you can bank.
RTO rateThe share of shipped orders that came back. The gap between the two.
02

How it's calculated

You need three things joined on the same order: which ad gets credit for it, what it was worth, and whether it was delivered.

InputSourceWhat it gives us
spendMeta, Google and other ad platformsDenominator
attributed_ordersYour attribution model, not the platform'sWhich orders belong to which campaign
order_valueShopifyRevenue per order
delivery_statusShipping partners, by order IDDelivered, RTO, cancelled or in transit
Delivered ROASDelivered revenue รท SpendFor orders that have resolved.
Estimated delivered revenueDelivered + In transit ร— (1 โˆ’ Expected RTO)For recent days. Expected RTO comes from that campaign's or segment's history.
Why not just knock a flat RTO % off every campaign?Because the whole point is that RTO isn't flat. A brand-wide haircut keeps the ranking exactly the same and hides the campaigns that bring in orders that never arrive. Each campaign needs its own delivered revenue.
03

Handling recent days

Decisions get made on the last few days of data, and those are exactly the days where most orders are still in transit. Counting only confirmed deliveries would make every new campaign look terrible.

  1. 1Count what's resolvedDelivered revenue in full, RTO and cancellations at zero.
  2. 2Estimate what's in transitApply the expected RTO rate for that campaign, payment method and pincode mix.
  3. 3True it upReplace estimates with actuals as shipments resolve. The estimate gets better as history builds.
04

Worked examples

Example 1: Three campaigns, re-ranked

Three illustrative campaigns over a month, with all orders now resolved.

CampaignSpendPlaced revenuePlaced ROASLost to RTO and cancellationsDelivered ROAS
Sale prospectingโ‚น2,00,000โ‚น9,00,0004.50 (#1)30%3.15 (#3)
UGC prospectingโ‚น2,00,000โ‚น7,60,0003.80 (#3)10%3.42 (#2)
Retargetingโ‚น1,00,000โ‚น4,20,0004.20 (#2)8%3.86 (#1)
Placed vs delivered ROASPlacedDelivered
Sale prospectingUGC prospectingRetargeting
  • SaleTop of the table on placed ROAS, bottom on delivered. Its discount-led COD orders lose 30% before they arrive.
  • UGCLooked weakest, but delivers 3.42, ahead of the sale campaign. Moving budget towards it on placed ROAS would have gone the wrong way.

Example 2: The same week, read two ways

An illustrative campaign spent โ‚น1,20,000 last week and booked โ‚น5,00,000 of orders. So far โ‚น2,80,000 has been delivered, โ‚น40,000 has come back, and โ‚น1,80,000 is still in transit. Its usual RTO rate is 15%.

Confirmed deliveries onlyToo pessimistic
2.33โ‚น2,80,000 รท โ‚น1,20,000. Treats every parcel in transit as lost, so new campaigns get paused before they've had a fair read.
With expected RTODecision-ready
3.61(โ‚น2,80,000 + โ‚น1,80,000 ร— 85%) รท โ‚น1,20,000. Uses โ‚น4,33,000 of estimated delivered revenue, then trues up as the last โ‚น1,80,000 resolves.
05

Using delivered ROAS to decide

Read it next to placed ROAS and against your break-even ROAS. The gap between the two is as telling as either number. Treat these rows as starting points.

Healthy
You seeDelivered ROAS above break-even, with a small gap to placed ROAS.
Do thisSafe to scale. Orders are arriving as expected.
Watch
You seePlaced ROAS strong, delivered ROAS close to break-even.
Do thisDon't scale yet. Fix the RTO driver first: offer, COD share or pincode mix.
Act now
You seeDelivered ROAS below break-even on a campaign that looks good on placed ROAS.
Do thisIt's losing money while looking like a winner. Cut budget or rework the offer now.
06

Common mistakes

  • A flat haircut for every campaignKeeps the ranking unchanged and hides the real offenders.
  • Counting only confirmed deliveriesMakes every recent campaign look worse than it is. Estimate the in-transit share.
  • Starting from platform ROASPlatforms over-attribute before RTO even enters the picture. Start from true attributed orders.
  • Comparing it to placed break-evenIf the RTO shipping legs already sit in your CM1 fulfilment costs, compare delivered ROAS to that break-even, not a gross one.
07

Frequently asked questions

Is delivered ROAS the same as true ROAS?

No. True ROAS fixes who gets credit for an order. Delivered ROAS fixes whether the order turned into revenue. You want both: true attribution first, then delivery on top.

How accurate is the estimate for recent days?

It's only as good as the history behind it. Estimates by campaign, payment method and pincode tier are much closer than a single brand-wide rate, and they're corrected once shipments resolve.

Does this matter for prepaid-only brands?

Much less. Prepaid orders rarely come back undelivered, so delivered and placed ROAS stay close. It matters most where COD is a large share of orders.

Rank campaigns on what gets delivered

BooleanMaths matches shipping outcomes to every attributed order, so you can judge campaigns on revenue that actually reaches your bank account.