Confirming cash-on-delivery orders on WhatsApp
The highest-value automation in cash-on-delivery markets, because it acts before the shipping cost is spent.
A cash-on-delivery confirmation flow messages the customer the moment Shopify records an order, asks them to tap Confirm or Cancel, and writes the answer back onto the Shopify order as a tag. Its value is entirely in the timing: it acts before you pay a courier to carry a parcel to someone who was never going to accept it.
In markets where cash on delivery dominates, this single flow does more for margin than any marketing automation. Cash on delivery accounts for 60–65% of ecommerce orders in India according to ET Prime Research figures published by Razorpay, and it remains the default across much of Pakistan, Bangladesh, Egypt, Indonesia and Nigeria.
What it costs when an order fails at the door
A refused delivery is not a lost sale — it is a sale that cost you money. Forward shipping, return shipping and handling are all spent, with no revenue against them.
GoKwik, which processes orders across a network it describes as 180 million-plus Indian shoppers, publishes an average return-to-origin rate of 23.18% from its own data, rising to around 40% in some segments and reaching 34.06% in Bihar, the highest state in its figures. Those are one company's numbers from one market, not an industry constant — but they are attributable, which most figures circulating on this topic are not.
Be sceptical of the numbers you will see elsewhere. Widely-quoted figures such as "RTO is 25–35%" or "each RTO costs ₹150–300" appear across dozens of blogs with no traceable source. We checked. Use your own courier's data — you have it, and it is the only figure that describes your business.
The flow
Confirm before you ship
Free text — their tap opened the window.
Install this flow
You'll need Shopify connected and an approved two-button template. The blueprint leaves the template blank for you to select — we cannot guess its name.
Add this automation to my account It installs as a draft. Nothing is switched on and no customer is messaged until you press Publish.The template you need
Create it under Settings → WhatsApp Templates with:
- Category: utility. This is a message about a transaction that already exists, so it qualifies — and utility templates are free inside an open window and deliverable everywhere.
- Two quick-reply buttons titled exactly "Confirm order" and "Cancel order". The titles must match the flow's options character for character, or the tap resolves to nothing.
- Variables for name, order number and total, each with a realistic example value at submission.
- No discount code. One promotional line turns this into a marketing template — charged, capped, and undeliverable to US numbers. See utility versus marketing.
Why the tap matters beyond the answer
The confirmation is the obvious value. The second, less obvious one is that the customer's tap opens a 24-hour conversation window — so every message after it is free text at no cost. Address corrections, delivery timing, photographs, a payment link: all free, no template needed.
This is why the flow asks a question rather than announcing "your order is confirmed". A statement ends the conversation; a question buys you a day of open channel. The mechanic is explained in the 24-hour window.
Accepting the answers customers actually send
Buttons produce a clean tap, but a share of customers will type instead. In South Asian and Gulf markets they will type "haan", "ji", "theek hai" or "ok" — none of which is the word "yes".
If you add a typed fallback path, make its keyword list generous. A confirmation flow that only recognises "yes" is invisible to a large fraction of the people confirming, and every one of those is a parcel shipped unconfirmed. Handling Roman Urdu and Hinglish covers the lists.
What to do about no reply
Many customers never answer. Two honest options:
- Treat silence as unconfirmed and let the "Pending Confirmation" tag hold the order for your team to call.
- Send one reminder using a Wait Before Next Step followed by a Has the Customer Replied? branch, nudging only the silent ones.
What you cannot do is chase indefinitely. Each reminder is another template on a cold chat, which is charged, and repeated unwanted messages damage the quality rating your account depends on. One reminder is usually the right number.
Making the tags useful
The tags are the operational half. Filter Shopify orders by "confirm order" to build today's packing list, and by "Pending Confirmation" to build today's call list. That is the whole workflow change, and it does not require anyone to open WhatsApp.
| Tag | Meaning | Who acts |
|---|---|---|
| Pending Confirmation | Asked, no answer yet | Call team |
| confirm order | Customer tapped Confirm | Packing |
| cancel order | Customer tapped Cancel; order cancelled | Nobody |
Before you publish
- Shopify connected, with the write permission if you want auto-cancellation.
- Template approved, buttons titled exactly as the flow expects.
- Variables have example values, and none of them can resolve empty.
- Tested with a real order to your own number, then cancelled.
- Your packing team knows what the tags mean.
That last one is not a technical step and it is the one most often skipped. An automation that tags orders nobody filters on has changed nothing.
Frequently asked questions
How do I confirm cash-on-delivery orders on WhatsApp?
A flow triggered by Shopify's order-placed event sends an approved utility template with Confirm and Cancel quick-reply buttons, then writes the answer back as a Shopify order tag and cancels the order if they decline.
What is a realistic return-to-origin rate?
It varies by market and category. GoKwik publishes an average of 23.18% from its own Indian network data, rising to around 40% in some segments. Widely-quoted ranges like 25–35% have no traceable source — use your own courier's figures.
What if the customer never answers the confirmation?
Leave the order tagged Pending Confirmation for your team to call, or send one reminder using a wait step followed by a Has the Customer Replied? branch. Do not chase repeatedly — each attempt is charged and damages quality rating.
Can I put a discount in the confirmation message?
You can, but it turns a utility template into a marketing one — charged, subject to per-user limits, and undeliverable to US numbers.