RTO rate
The share of shipped orders that come back to you undelivered. It moves with payment method, pincode and, most importantly for marketers, with the campaign that brought the order in.
Counted on orders that have resolved. Orders still in transit are left out until they're delivered or returned.
What is RTO rate?
RTO, or return to origin, is an order that was shipped but never delivered. The customer refused it, wasn't reachable, or gave a wrong address, and the courier brought it back. You pay shipping both ways and earn nothing.
Most of it comes from cash on delivery, where the customer has nothing at stake until the parcel arrives. That's why RTO is a marketing metric too: the campaigns, offers and audiences you scale decide how many uncommitted COD orders you bring in.
How it's calculated
The formula is simple. The hard part is joining courier status back to the order, and then to the campaign that drove it.
| Input | Source | Used for |
|---|---|---|
| shipment_status | Shipping partner, by order ID | Delivered, RTO or in transit |
| payment_method | Shopify order | COD vs prepaid split |
| pincode | Shipping address | City tier and region split |
| source | Attribution data | RTO by channel, campaign and ad |
Tracking it over time
RTO arrives late. An order placed today may take days to weeks to come back. If you calculate this week's RTO rate on this week's orders, most of the RTO hasn't happened yet and the number looks far too good.
- 1Cohort by order dateAttach each RTO to the day the order was placed and the campaign that drove it.
- 2Only count resolved ordersLeave in-transit orders out of both the top and bottom of the ratio.
- 3Watch the resolved shareA day with only half its orders resolved is an early read. Show it as provisional.
BooleanMaths merges shipping partner data with Shopify orders at order ID, so every RTO can be traced back to the channel, campaign and ad that brought it in.
Worked examples
Example 1: One month, split by payment and city tier
An illustrative brand ships 10,000 orders in a month, all now resolved. The overall rate hides very different segments.
| Segment | Shipped | RTO | RTO rate |
|---|---|---|---|
| Prepaid, all cities | 4,000 | 120 | 3.0% |
| COD, tier 1 | 3,000 | 450 | 15.0% |
| COD, tier 2 | 2,000 | 440 | 22.0% |
| COD, tier 3 and beyond | 1,000 | 300 | 30.0% |
| All orders | 10,000 | 1,310 | 13.1% |
- 13.1%The overall number sounds manageable, but it blends a 3% segment with a 30% one.
- Tier 3 CODNearly one in three orders comes back. A campaign that skews towards these pincodes will look cheap per order and expensive per delivery.
Example 2: The cheaper campaign that wasn't
Two illustrative prospecting campaigns, judged once all their orders have resolved.
Using RTO rate to decide
Compare each campaign's RTO rate with your own account average rather than an industry figure. The rows below are starting points.
Common mistakes
- Reading this week's RTOMost of it hasn't come back yet. Use resolved orders only.
- Treating it as an ops problem onlyOffers, audiences and creatives drive RTO as much as couriers do.
- One brand-wide numberBreak it out by payment method, pincode tier and campaign, or you can't act on it.
- Killing COD outrightMany good customers only buy on COD. Fix the worst segments instead of removing the option for everyone.
Frequently asked questions
What is a good RTO rate?
It depends heavily on your category, price point and COD share. Benchmark against your own prepaid orders and your best campaigns, then work to bring the outliers down.
Can ad platforms see RTO?
Not by default. The purchase event fires at checkout, so Meta and Google count an RTO order as a sale and keep optimising towards people like that buyer.
Why does RTO differ so much between campaigns?
Different creatives and offers attract different intent. Heavy discounts and impulse hooks tend to bring in buyers who are more likely to refuse the parcel when it arrives.
Related metrics
See RTO by campaign, not just by courier
BooleanMaths joins your shipping partners' data to every order and the ad that drove it, so you can see which campaigns bring in orders that actually get delivered.
RTO rate
The share of shipped orders that come back to you undelivered. It moves with payment method, pincode and, most importantly for marketers, with the campaign that brought the order in.
Counted on orders that have resolved. Orders still in transit are left out until they're delivered or returned.
What is RTO rate?
RTO, or return to origin, is an order that was shipped but never delivered. The customer refused it, wasn't reachable, or gave a wrong address, and the courier brought it back. You pay shipping both ways and earn nothing.
Most of it comes from cash on delivery, where the customer has nothing at stake until the parcel arrives. That's why RTO is a marketing metric too: the campaigns, offers and audiences you scale decide how many uncommitted COD orders you bring in.
How it's calculated
The formula is simple. The hard part is joining courier status back to the order, and then to the campaign that drove it.
| Input | Source | Used for |
|---|---|---|
| shipment_status | Shipping partner, by order ID | Delivered, RTO or in transit |
| payment_method | Shopify order | COD vs prepaid split |
| pincode | Shipping address | City tier and region split |
| source | Attribution data | RTO by channel, campaign and ad |
Tracking it over time
RTO arrives late. An order placed today may take days to weeks to come back. If you calculate this week's RTO rate on this week's orders, most of the RTO hasn't happened yet and the number looks far too good.
- 1Cohort by order dateAttach each RTO to the day the order was placed and the campaign that drove it.
- 2Only count resolved ordersLeave in-transit orders out of both the top and bottom of the ratio.
- 3Watch the resolved shareA day with only half its orders resolved is an early read. Show it as provisional.
BooleanMaths merges shipping partner data with Shopify orders at order ID, so every RTO can be traced back to the channel, campaign and ad that brought it in.
Worked examples
Example 1: One month, split by payment and city tier
An illustrative brand ships 10,000 orders in a month, all now resolved. The overall rate hides very different segments.
| Segment | Shipped | RTO | RTO rate |
|---|---|---|---|
| Prepaid, all cities | 4,000 | 120 | 3.0% |
| COD, tier 1 | 3,000 | 450 | 15.0% |
| COD, tier 2 | 2,000 | 440 | 22.0% |
| COD, tier 3 and beyond | 1,000 | 300 | 30.0% |
| All orders | 10,000 | 1,310 | 13.1% |
- 13.1%The overall number sounds manageable, but it blends a 3% segment with a 30% one.
- Tier 3 CODNearly one in three orders comes back. A campaign that skews towards these pincodes will look cheap per order and expensive per delivery.
Example 2: The cheaper campaign that wasn't
Two illustrative prospecting campaigns, judged once all their orders have resolved.
Using RTO rate to decide
Compare each campaign's RTO rate with your own account average rather than an industry figure. The rows below are starting points.
Common mistakes
- Reading this week's RTOMost of it hasn't come back yet. Use resolved orders only.
- Treating it as an ops problem onlyOffers, audiences and creatives drive RTO as much as couriers do.
- One brand-wide numberBreak it out by payment method, pincode tier and campaign, or you can't act on it.
- Killing COD outrightMany good customers only buy on COD. Fix the worst segments instead of removing the option for everyone.
Frequently asked questions
What is a good RTO rate?
It depends heavily on your category, price point and COD share. Benchmark against your own prepaid orders and your best campaigns, then work to bring the outliers down.
Can ad platforms see RTO?
Not by default. The purchase event fires at checkout, so Meta and Google count an RTO order as a sale and keep optimising towards people like that buyer.
Why does RTO differ so much between campaigns?
Different creatives and offers attract different intent. Heavy discounts and impulse hooks tend to bring in buyers who are more likely to refuse the parcel when it arrives.
Related metrics
See RTO by campaign, not just by courier
BooleanMaths joins your shipping partners' data to every order and the ad that drove it, so you can see which campaigns bring in orders that actually get delivered.