A D2C brand ships 40 cash-on-delivery orders on a Saturday. By the following Friday, a handful of parcels are back at the warehouse. One address was incomplete. One customer was “just checking the price.” One order was placed by someone who never intended to be home. Each of those parcels cost you the product margin, the outbound shipping, the return shipping and the packaging. Nobody in the team can say with certainty whether anyone ever tried to confirm the order before it left.
That is the real shape of return-to-origin (RTO) for most Indian online sellers. It is rarely one big failure. It is a steady leak of small ones, and almost all of them were visible before dispatch, if someone had asked the customer one simple question. A WhatsApp confirmation is the cheapest place to ask it. If you sell online and want a structure around this, our WhatsApp setup for e-commerce and D2C sellers is built around exactly this workflow.
The real-world breakdown: where COD orders go wrong
Most refused or fake COD orders fall into the same few buckets.
Impulse and curiosity orders. The buyer clicked “Cash on Delivery” because it felt risk-free. By the time the parcel arrives, the urge has passed.
Wrong or incomplete addresses. A missing landmark, a wrong pincode or a flat number that does not exist. The courier makes two attempts and returns it.
Unreachable customers. The number on the order is a secondary SIM, a family member’s phone or a typo. The courier cannot get through and marks it undelivered.
Price or delivery surprises. The customer assumed free shipping, or expected delivery in two days and was told a week. They decide not to accept.
Deliberate fake orders. Less common, but they exist: competitors, pranksters, or people testing your process.
What these have in common is that a short, structured message sent before dispatch would have surfaced the problem. The customer would have corrected the address, confirmed the amount, cancelled politely, or not replied at all, which is also useful information.
Why the usual hacks fail
Many sellers already “confirm” orders. The way they do it is what breaks.
A personal phone call. It works for ten orders a day. At a hundred, someone spends their whole shift dialling, many calls go unanswered, and nothing is recorded about who called whom or what was said.
A staff member’s personal WhatsApp. Messages go out from a number that is not the business number, with no template, no record and no handover when that person is on leave. The customer has no reason to trust a message from an unknown number asking them to confirm a payment.
An SMS blast. Often filtered, rarely read, and impossible to answer with a single tap.
A WhatsApp group for the day’s orders. Staff paste order details and ask each other whether anyone confirmed it. Within a week nobody can tell which orders are confirmed, which are pending and which were quietly dropped.
None of these give you a clear answer to the one question that matters: for each order sitting in the packing queue, has a human customer said “yes, send it”?
The operational SOP: a COD confirmation workflow you can run this week
Step 1: Decide what counts as “confirmed”
Write it down. A reasonable rule for most sellers: an order is confirmed when the customer taps Confirm or replies with a clear yes. An order is on hold when there is no reply within a time window you choose, and cancelled when the customer says so.
Step 2: Send the confirmation as a utility template
A confirmation about an order the customer just placed is a transactional message, so it is normally submitted to Meta as a utility template. Meta reviews every template and decides the category, so submit it with accurate content and check the category it is approved under.
Here is a template you can adapt. Meta numbers variables in order, so the placeholders below are {{1}}, {{2}} and so on:
Hi {{1}}, thanks for your order of {{2}} from {{3}}.
Amount to pay on delivery: ₹{{4}}.
Delivery to: {{5}}.
Please confirm so we can ship it today.[Confirm order] [Cancel order]
Notes on the template:
– Use quick reply buttons for Confirm and Cancel, so the customer answers with one tap.
– Include the amount and the address in the message. Most problems are corrected right there.
– Provide a real sample value for each variable when you submit. Meta reviews with those samples.
Step 3: Send it at the right moment
Send it as soon as the order is placed, while the purchase is fresh. If your store can call an API when an order is created, a developer can trigger the send automatically. If not, upload the day’s COD orders as a CSV and schedule the send as a campaign, mapping each column to a template variable.
Step 4: Route every reply to a person
The reply lands in your team inbox. Assign it. A simple rule that works: whoever packs the order owns the confirmation for that order. If the customer says “change the address to…”, the owner updates the order and replies. If the customer asks a question, the same person answers it.
Step 5: Handle the silent ones
Silence is not a yes. Set a rule such as: no reply in a few hours, send one follow-up. No reply after that, hold the order until the next working day, then decide whether to ship. Treat repeat non-responders from the same pincode or number as a pattern worth noting.
Step 6: Keep a record
For every order, the inbox should show who messaged the customer, what they said, and who handled it. When a parcel does come back, you can look at the conversation and see whether it was confirmed, which tells you whether your problem is confirmation or something else, like courier performance.
Routing rules at a glance
| Customer response | Owner | Next action |
|---|---|---|
| Taps Confirm | Order packer | Release to dispatch |
| Taps Cancel | Order packer | Cancel and restock |
| Asks a question | Order packer | Answer in chat, then re-confirm |
| Corrects the address | Order packer | Update order, confirm again |
| No reply after follow-up | Team lead | Hold, then decide |
How WaSparks fits into this
This workflow only works if the messages come from your own verified business number, replies are visible to the whole team, and no order is left sitting with one person who has gone home. That is what the WaSparks team inbox is for.
Every customer chat sits in one shared inbox on a single number. You can assign a chat to a teammate, or transfer it with the reason noted, so the person who confirmed the order is on record. Quick replies let your team answer the common questions (delivery time, return policy, how to change an address) as saved text, images or documents. If you use the catalog, orders arrive in the inbox as items your team can pick up, rather than buried in a thread.
On the sending side, you build the template in WaSparks, submit it to Meta, and watch its status update. Sent, delivered, read and failed are shown for each recipient when you send in bulk. Meta’s messaging limits and quality rating are shown in the app so you can see your number’s standing. If a customer replies STOP, they are left out of future campaigns automatically.
One more practical point: Meta charges per delivered template message, based on the category and the recipient’s country. WaSparks shows an estimate before you send a campaign and the actual spend afterwards, so you can compare the cost of confirmation messages with the cost of one returned parcel.
You can see the full list of tools on the WaSparks features page.
FAQ
Will asking customers to confirm COD orders put off genuine buyers?
A one-tap message that restates the item, amount and address usually reads as careful service rather than friction. Genuine buyers confirm in seconds, and the ones who do not reply tell you something useful before you spend on shipping.
Do I need the WhatsApp Business API to send COD confirmations at scale?
For templates, buttons, bulk sends and a shared inbox for your team, yes. These run on Meta’s official WhatsApp Business Platform, which is what WaSparks is built on. The regular WhatsApp Business app is designed for one phone and does not offer the same team workflow.
Which template category should a COD confirmation use?
An order confirmation sent after a customer places an order is typically treated as a utility message. Meta makes the final decision during review, and charges are based on the category applied when the template is used, so check the approved category in your account.
Start confirming before you ship
Try this workflow on your own number: connect it, build the confirmation template, and see how many of tomorrow’s COD orders get a clear answer before they leave your warehouse. Start free or see the pricing first. If you are building this for an online store, the e-commerce and D2C guide walks through the rest of the workflow.
See how it works for e-commerce → ecommerce.wasparks.com
Found this useful? Share it with your team.