Resources Playbook E-commerce & D2C
COD confirmation on WhatsApp: a playbook to cut returns to origin before the parcel ships
A cash-on-delivery order costs the shopper nothing to place and nothing to refuse. A confirmation message with three buttons, sent before anyone prints a label, finds the orders that were never going to be accepted. It costs 11.5 paise.
The short version
- Send a utility template with Confirm, Cancel and Change address buttons within minutes of a COD order, and hold the parcel until one is tapped.
- A COD confirmation is usually a utility template: ₹0.115 per delivered message to an Indian number, before GST. Add a discount for paying online and Meta treats it as marketing at ₹0.8631.
- Remind once after about two hours. Then a person calls or messages the unconfirmed orders above a value you set. Only a person cancels the order in Shopify.
- In our worked example, the whole flow for 1,000 COD orders costs about ₹550 in Meta charges. The volumes are illustrative; the rates are Meta's.
- Measure your own return-to-origin rate before you start, split by first-time and repeat buyers, and keep a group of orders that skip the flow for the first month.
Yashwant Solanki sells men’s kurtas and Nehru jackets from Indore through a Shopify store. Seven people, about 2,200 orders a month, and close to half of them cash on delivery. Every evening a few parcels come back up the stairs with “refused” or “address not found” written on the courier’s slip. He has paid to send each one out and paid again to bring it back, and the kurta inside has to be pressed and repacked.
COD confirmation on WhatsApp is the cheapest fix he hasn’t tried: ask the shopper to confirm the order before it’s packed, and hold the ones nobody confirms. This playbook covers the flow, the template wording, what Meta charges for it, and how to tell whether it’s working.
It assumes your number is on the WhatsApp Business Platform. If it isn’t, start with our Shopify WhatsApp integration guide.
How much RTO will this cut?
We don’t know, and you should be wary of anyone who gives you a percentage. We couldn’t find a primary published source for return-to-origin rates in India that shows its method, so this article quotes none. The number that matters is yours, and you can work it out in an afternoon.
- In Shopify, export the last 90 days of orders and filter to cash on delivery.
- From your courier’s panel or remittance report, mark each shipped COD order as delivered or returned undelivered.
- RTO rate = COD orders returned undelivered ÷ COD orders shipped.
- Split it three ways: first-time against repeat buyers, by order value band, and by the pincodes you ship to most.
- Write down what one return costs you: forward freight, return freight, packing, and any COD handling fee your courier charges on the attempt.
The split tells you where a person’s phone call is worth the time. If repeat buyers rarely refuse and two pincodes account for much of the pile on the stairs, that’s where step 3 goes.
The COD confirmation flow at a glance
Six steps, two of them done by a person. Each step’s detail follows the table.
| Step | When | What goes out | Meta category | India rate per delivered message |
|---|---|---|---|---|
| 1. Confirmation | Within 5 minutes of the order | Template with three buttons | Utility | ₹0.115 |
| 2. Reminder | About 2 hours later, if no button was tapped | Template | Utility | ₹0.115 |
| 3. Person follows up | Same day, for unconfirmed orders above your threshold | Phone call, or a message typed by staff | Not a template if the chat is open | Reply: first 1,000 a month per number free, then ₹0.115 |
| 4. Pay-online option | Right after a Confirm tap | Message in the open chat, or a template | Marketing if it’s a template with a discount | ₹0.8631 as a marketing template |
| 5. Address fix | When “Change address” is tapped | Typed reply from staff | Not a template | Reply rate as above |
| 6. Dispatch updates | Shipped, out for delivery, failed attempt | Templates | Utility | ₹0.115 |
Rates are Meta’s for Indian numbers, before GST, on the rate card effective 1 July 2026 and unchanged on 1 October 2026. The categories are our reading of Meta’s rules. Meta decides the category of every template, and can change it later if the messages sent don’t match.
Step 1: Ask for confirmation within five minutes
Send the confirmation while the shopper still has the store open on their phone. An hour later they’ve moved on, and by tomorrow some have forgotten they ordered at all.
Hi {{1}}, we've received your cash-on-delivery order #{{2}} for ₹{{3}}. It will be delivered to: {{4}}. Please confirm so we can pack it.
Buttons: Confirm order, Cancel order, Change address.
Category: utility. Meta’s rules describe the order-management use of a utility template as “Confirm, update, or cancel an order or transaction with a customer”, and this message does only that. It also carries the address, which is how most wrong-flat-number mistakes get caught before the label is printed.
Keep every offer out of it, because Meta’s guardrail says these messages “should not promote, recommend, upsell, or cross-sell products”. Keep fixed text at the start and the end, since templates that open or close with a variable get rejected. And send it only to shoppers who ticked an opt-in for order updates on the order page; a phone number alone isn’t permission. Our opt-in guide has the wording.
Then the rule that makes the flow worth having: don’t pack a COD order until a button is tapped or a person has cleared it. If unconfirmed orders ship anyway, you’ve added a message and changed nothing.
- COD order placed at 9:12 pm
- Solanki Kurta House: Template · utility Hi Rehana, we've received your cash-on-delivery order #4471 for ₹1,890. It will be delivered to: 14 Rose Villa, Juhapura, Ahmedabad 380055. Please confirm so we can pack it. 9:14 pm
- Confirm order
- Cancel order
- Change address
- Rehana Mirza: Change address 9:20 pm
- Rehana Mirza: its flat 41 not 14. gift for my brother, pls deliver before friday 9:21 pm
- Tagged "address change" and picked up by Kunal on the evening shift
- Solanki Kurta House: Hi Rehana, Kunal here. Changed to flat 41. It ships tomorrow morning and should reach by Thursday. 9:26 pm
Step 2: Remind once, about two hours later
One reminder is enough, and it goes only to shoppers who haven’t tapped anything. Two hours is our starting point, not a tested figure: long enough that it isn’t nagging, short enough to catch the same evening.
Hi {{1}}, your cash-on-delivery order #{{2}} for ₹{{3}} is still waiting for your confirmation. We'll hold it until {{4}}. Tap below to confirm or cancel.
Buttons: Confirm order, Cancel order.
Category: utility, for the same reason as step 1. It costs another ₹0.115 when delivered. Since 1 October 2026 a utility template is charged whether or not a chat is open, so there’s no free version of this step.
Orders placed after about 10 pm are the exception. Hold the reminder until 9 the next morning.
Step 3: A person takes the unconfirmed high-value orders
After the hold time passes, someone on your team works through the orders with no tap.
Set a value threshold from your own split in the measuring exercise. Yashwant’s is ₹1,500. Above it, Kunal calls the number on the order. Below it, the order waits until the next morning and is then cancelled with a short note to the shopper.
The person who cancels or releases the order does it in Shopify, by hand, after looking at it. The outcome goes on the contact as a tag: confirmed by call, no answer, wrong number, cancelled.
If the shopper had replied at any point in the last 24 hours, the follow-up can be an ordinary typed message instead of a template. Typed replies are free for the first 1,000 per number each month, then ₹0.115 each.
Step 4: Is the prepaid nudge utility or marketing?
It’s marketing as soon as it promotes a discount. Meta’s rules say a utility template must be “non-promotional, not containing any promotional or persuasive intent”, and they list “an order update with a promo” as mixed content, which is classed as marketing.
So this template is a marketing one, at ₹0.8631 per delivered message, and it should go only to shoppers who opted in to offers:
Hi {{1}}, pay online for order #{{2}} before {{3}} and we'll take ₹{{4}} off. Your order ships on the same day either way.
Buttons: Pay now.
There’s a cheaper way to offer online payment. When a shopper taps Confirm order, the tap opens a 24-hour chat, and messages inside an open chat don’t need a template. A short follow-up there, with a payment link, is billed as a reply:
Thanks, your order is confirmed. If you'd rather pay now by UPI or card, here is the link. Cash at the door is fine too.
That reaches the shoppers who just engaged and costs ₹0.115 or nothing. Could a no-discount “pay online” template pass as utility? Possibly, since it concerns the shopper’s own order, but persuading someone to change payment method is close to the line and Meta makes the call. Budget it as marketing.
Marketing templates also fall under WhatsApp’s per-person cap on marketing from all businesses, so some prepaid nudges sent as templates won’t be delivered. Utility templates aren’t affected.
Step 5: Fix the address before dispatch
A tap on Change address should land with a person the same day. The shopper types the correction, your team edits the order in Shopify, and a typed reply confirms it, as in the chat above. No second template is needed, because the tap opened a chat. What you do need is a rule that an order tagged “address change” doesn’t ship until someone clears the tag.
Step 6: Keep talking after dispatch
Three more utility templates do the rest: shipped with a tracking link, out for delivery with the cash amount to keep ready, and delivery attempt failed with a request for a landmark or a better time. The wording for all three is in our Shopify WhatsApp templates set, numbers 4 to 6.
Prioritise the failed-attempt message. The shopper’s reply gives your team something to pass to the courier before the parcel turns round.
What does the flow cost per 1,000 COD orders?
About ₹550 in Meta charges in the example below, or roughly 55 paise an order. The volumes are made up to show the sum; the rates are Meta’s, before GST.
| Line | Messages | Rate | Cost |
|---|---|---|---|
| Confirmation template | 1,000 | ₹0.115 | ₹115.00 |
| Reminder to the 400 who hadn’t tapped | 400 | ₹0.115 | ₹46.00 |
| Replies in open chats: thanks, payment link, address fixes | 1,500 | ₹0.115 | ₹172.50 |
| Shipped and out-for-delivery on 880 orders that ship | 1,760 | ₹0.115 | ₹202.40 |
| Failed-attempt message | 120 | ₹0.115 | ₹13.80 |
| Total | 4,780 | ₹549.70 |
The replies line is priced at the full rate to be safe. The first 1,000 replies per number each month are free, so a store whose team types little else will pay less.
Add the marketing template from step 4, sent to 300 shoppers: 300 × ₹0.8631 = ₹258.93, which takes the total to ₹808.63. That one line would be a third of the bill, which is why we’d use the in-chat version first.
Now set it against a return. Suppose one RTO costs Yashwant ₹140 in freight both ways (his figure will be on the courier invoice; use yours). ₹549.70 ÷ ₹140 is about 4. If the flow stops four parcels in a thousand from making the round trip, Meta’s charges are covered. Your tool’s monthly fee and Kunal’s time on the phone are extra, and they belong in the sum too.
What you can build in Conecxt, and what you can’t
There is no ready-made COD flow in Conecxt, and it doesn’t cancel orders in Shopify. If you want confirmation switched on in an afternoon with nothing to build, pick a tool that lists it; our comparison of WhatsApp tools for Shopify shows which ones do.
How to tell whether it worked
Run it for four weeks with a held-back group: let one COD order in ten skip the flow and ship as before, then compare the RTO rate of the two groups. If you can’t split orders that way, compare the four weeks after with the four weeks before, and remember that a sale or a festival in either period will distort it.
Each week, note the share of COD orders confirmed, cancelled, changed and unanswered, and how many step 3 calls ended in a delivered order.
Expect one trade-off. Some shoppers who never tap a button would have accepted the parcel, and holding their orders costs you a few sales. The step 3 phone call exists to win those back. If the call list is longer than your team can finish in a day, raise the threshold; don’t start shipping unconfirmed orders again.
If COD is a small share of your orders, cart reminders may pay back sooner, and the abandoned cart playbook covers those. Terms such as template, utility and service message are defined in the glossary.
Before you switch it on
- Your own COD RTO rate for the last 90 days, and the cost of one return
- An opt-in tick for order updates on the order page, separate from offers
- Two approved utility templates: confirmation and reminder
- A packing rule: no COD parcel leaves without a tap or a person’s sign-off
- A named person and a value threshold for same-day calls
- One order in ten held back from the flow
- A test COD order placed to your own number, with each button tapped once
Common questions
How do I send a COD confirmation on WhatsApp?
Send a Meta-approved utility template within minutes of the cash-on-delivery order, naming the order number, amount and delivery address, with Confirm order, Cancel order and Change address buttons. Hold the parcel until the shopper taps one. It needs a number on the WhatsApp Business Platform and an opt-in for order updates.
What does a WhatsApp COD confirmation message cost in India?
A COD confirmation is usually a utility template, which costs ₹0.115 per delivered message to an Indian number before GST, on Meta's rate card effective 1 July 2026 and unchanged on 1 October 2026. In our worked example, confirmation, one reminder, replies and dispatch updates for 1,000 COD orders come to about ₹550.
Is a 'pay online and get a discount' message utility or marketing?
Expect marketing, at ₹0.8631 per delivered message to an Indian number. Meta's category rules require utility templates to carry no promotional or persuasive intent and list an order update with a promo as mixed content, which is marketing. Keep the discount out of the confirmation template and send it separately to shoppers who opted in to offers.
How do I reduce RTO with WhatsApp?
Confirm every COD order on WhatsApp before packing, remind once, and have a person call unconfirmed high-value orders. Show the delivery address in the message so mistakes are fixed before dispatch, and send shipped, out-for-delivery and failed-attempt updates afterwards. Measure your own return-to-origin rate before and after to see what changed.
Can a WhatsApp tool cancel a Shopify COD order automatically?
Not in Conecxt. It has no ready-made COD flow and doesn't cancel orders in Shopify. A journey can send your approved template, wait for the button tap and tag the contact; a person then cancels or edits the order in Shopify. Other tools list ready-made COD flows, so ask each vendor what theirs does.
Sources
- Template categorization (Meta for Developers) · Read 9 Oct 2026
- Pricing on the WhatsApp Business Platform (Meta for Developers) · India rates effective 1 Jul 2026, unchanged on the 1 Oct 2026 card; service rates effective 1 Oct 2026
- Template review (Meta for Developers) · Updated 17 Jun 2026
- Getting opt-in for WhatsApp (Meta for Developers) · Updated 16 Jun 2026
- Per-user marketing template limits (Meta for Developers) · Updated 17 Jun 2026
Run this on your own number
Create an account, connect your WhatsApp number, and invite your team.