In short
- An NDR is raised each time a courier fails to deliver, and couriers typically make up to three attempts before a parcel is returned to origin.
- Speed decides outcomes: the buyer's answer needs to reach the courier before the next delivery run, ideally within a few hours.
- Each NDR reason needs its own automated response, from a simple reattempt request to an address correction or a new delivery date.
- Courier APIs such as Delhivery's NDR API allow reattempts, detail edits and deferred delivery to be triggered automatically.
- Track NDR response rate and NDR-to-delivered conversion by courier, reason and pincode to find where orders are being lost.
NDR management in ecommerce means responding to every failed delivery attempt quickly enough to get the parcel delivered on the next attempt instead of returned. The most effective setups automate it: the courier's NDR event triggers a WhatsApp message to the buyer, the buyer picks an option, and that choice is pushed back to the courier through its API or panel, all within hours.
This guide walks through how to set that up, reason by reason, and how to measure whether it is working.
- Capture NDR events in near real time through courier or aggregator webhooks.
- Send a reason-specific WhatsApp message with clear options.
- Push the buyer's answer to the courier before the next run.
- Escalate high-value and unresponsive cases to a human.
Why NDRs deserve their own workflow
Every NDR is a customer who ordered and has not yet received the product. Some changed their mind, but many simply missed the delivery agent, gave an incomplete address or were travelling. Shiprocket notes that couriers make up to three attempts before marking a shipment RTO (Shiprocket). That gives you a narrow window. If the buyer's response reaches the courier after the next attempt has already failed, you have wasted one of those chances.
COD orders are most exposed, because the buyer has no money at stake. If you are also working on COD verification and prepaid nudges, our companion guide on reducing RTO covers the before-dispatch side.
Step 1: Capture NDR events as they happen
Manual NDR handling usually means someone downloading a report from the courier panel each morning. By then, the day's delivery runs have started. Instead:
- Subscribe to tracking webhooks from your aggregator or courier. Shiprocket supports a callback URL that receives a POST request for every new tracking event (Shiprocket API).
- Normalise the reason codes from different couriers into your own short list.
- Look up the Shopify order to get the buyer's phone number, order value, payment method and history.
- Create an NDR record with a status (new, contacted, responded, actioned, delivered or RTO).
Step 2: Respond by reason, not with one generic message
| NDR reason | Automated first response | Action sent to courier |
|---|---|---|
| Buyer not reachable | WhatsApp: "We tried to deliver today. When should we come back?" with Today, Tomorrow and Pick a date buttons | Reattempt or deferred delivery |
| Premises closed | Ask for a preferred date and time window, and an alternate phone number | Deferred delivery with updated phone |
| Address incomplete or wrong | Ask the buyer to reply with full address and landmark, or share location | Edit details, then reattempt |
| Buyer refused | Short message asking if there was a problem, offering prepaid conversion or help | Reattempt only if buyer confirms; otherwise allow RTO |
| Cash not ready (COD) | Send a UPI payment link so the order becomes prepaid | Reattempt as prepaid if supported |
| Out of delivery area or courier issue | Apologise and give a new expected date | Escalate with courier or reroute |
Keep messages short and in the buyer's language where possible. Hindi and English versions cover much of India; add regional languages for your top states. On WhatsApp, a message that opens a conversation is billed as a template; utility templates sent within an open customer service window are free, per Meta's pricing rules. Classify NDR messages as utility and keep marketing content out of them.
Step 3: Push the buyer's answer back to the courier
This is the step most brands leave manual, and it is where speed is lost. Courier APIs make it automatic. Delhivery's NDR API, for example, supports three actions (Delhivery API reference):
- Re-attempt, as per NDR instructions, for packages in pending status with eligible status codes.
- Edit details, to update consignee name, phone or address while the package is pending.
- Deferred delivery, to a date up to six days from the first pending date.
The API is asynchronous and returns an ID you can use to check whether the action succeeded, so your workflow should confirm the result rather than assume it. If you ship through an aggregator, use its NDR actions instead. In Shiprocket's panel, NDRs are tracked under action required, action requested and RTO tabs, and Shiprocket already sends automated SMS and IVR follow-ups for reasons like buyer not contactable.
Step 4: Escalate the right cases to people
Automation should do the first touch for everyone, but some cases deserve a human:
- Orders above a value threshold (for example ₹3,000) with no reply after two to three hours.
- Second NDR on the same shipment.
- Buyer says no delivery attempt was made.
- Address problems the buyer cannot fix in text, such as rural addresses without house numbers.
Give your support team a simple queue sorted by order value and time since NDR, with one-click actions that call the same courier APIs. That keeps the process consistent whether a person or the workflow acts.
Step 5: Handle suspected fake attempts
Buyers sometimes report that nobody tried to deliver, even though the courier recorded an attempt. When your WhatsApp flow gets that answer, log it against the AWB, courier and pincode, trigger an escalation and request a same-day or next-day reattempt. Over a few weeks, this data shows which courier and region combinations have a problem, which is far more useful in courier reviews than anecdotes.
Worked example
Suppose a brand ships 6,000 orders a month and sees NDRs on 12% of them, which is 720 NDRs. Before automation, the team reaches about half of these buyers, usually the next day. After automation, every buyer gets a WhatsApp message within an hour of the NDR, and high-value cases get a call. If the share of NDRs that end up delivered rises from 40% to 55%, that is 108 more delivered orders a month. At an average order value of ₹1,100, that is roughly ₹1.19 lakh of revenue that would otherwise have come back as RTO, before counting saved return shipping. These figures are illustrative; measure your own baseline first.
Metrics for NDR management
| Metric | Definition |
|---|---|
| NDR rate | Shipments with at least one NDR divided by shipments dispatched |
| Time to first contact | Minutes from NDR event to first message sent |
| Response rate | NDRs where the buyer replied or picked an option |
| Action time | Time from buyer response to courier action confirmed |
| NDR-to-delivered rate | NDR shipments that were eventually delivered |
Slice each metric by courier, reason, pincode, payment method and campaign. If one ad campaign drives unusually high refusals, fix the targeting; our guide to building a full-funnel ad strategy covers how to optimise for quality buyers rather than cheap orders.
Prevent NDRs before they happen
The cheapest NDR is the one that never occurs. Use what you learn from NDR reasons to improve the order journey:
- Address validation at checkout: require a house or flat number, suggest landmarks and check that the pincode matches the city and state.
- Phone number checks: flag obviously invalid numbers and confirm the number during COD verification.
- Delivery expectations: send an "out for delivery today" WhatsApp message in the morning so buyers know to be available or arrange someone to receive the parcel.
- Courier allocation: route pincodes with high NDR rates to the courier with the best first-attempt record there.
Common mistakes
- Handling NDRs once a day from a downloaded report.
- Sending the same message for every reason code.
- Collecting buyer responses but updating the courier manually hours later.
- Not verifying that the courier accepted the action.
- Never feeding NDR data back into courier allocation and address validation at checkout.
Save more orders with automated NDR management
NDR automation connects your courier events, Shopify data, WhatsApp and courier APIs into one loop that runs in minutes instead of days. TNM designs and builds these workflows for Indian D2C brands, including reason-specific messaging, human escalation queues and NDR dashboards. Find out more about our AI workflow automation service.
Frequently asked questions
NDR stands for non-delivery report. The courier raises it when a delivery attempt fails, for reasons such as the buyer not answering, the premises being closed, an incomplete address or the buyer refusing the parcel. Each NDR is a chance to fix the problem before the next attempt. If it is ignored, the shipment eventually becomes an RTO.
Shiprocket states that courier partners make a maximum of three attempts before marking a shipment as RTO. The exact policy can vary by courier and contract, and some shipments are returned sooner, for example after an outright refusal. Check your courier agreements and design your follow-up timing around the first failed attempt rather than the last.
If a buyer says nobody came to the door, record it with the AWB, NDR reason and timestamp, then escalate to the courier or aggregator with evidence. Most aggregators have an escalation route for disputed attempts, so use it consistently. Over time, compare these complaints by courier and pincode and shift allocation away from repeat offenders.
Use both. WhatsApp is fast, cheap and lets buyers tap a button or share a location, so it should be the first touch. A call works better for high-value orders and buyers who do not reply within a few hours. Automated IVR calls sit in between and are already used by some shipping platforms for common NDR reasons.