Playbooks · 5 min read
COD Confirmation on WhatsApp: What the Message May Claim
Cash on delivery is the part of Indian ecommerce that does not translate. A buyer places an order having paid nothing, a courier carries the goods across the country, and at the door the whole thing can end with a shrug. The parcel comes back. The seller pays freight both ways and repacks a used box.
The pre-dispatch confirmation exists to catch that early — to find out, before a truck is involved, whether the person still wants the thing. It is one of the few automations on this channel that is genuinely worth building, and one of the easiest to word in a way that is not true.
What the message is actually doing
It has one job: to give the buyer an easy, low-shame way to say no before you spend money.
That framing matters, because it decides the tone. This is not a persuasion message. If you write it to talk people out of cancelling, you get a confirmation from someone who was going to refuse the parcel anyway, and you have paid for the truck to find out.
- State the order back, in full. Items, quantities, the amount payable at the door, the delivery address as you hold it. Most cancellations at this stage are not changes of heart; they are somebody discovering they ordered the wrong size or typed the old address.
- Ask one question, with two obvious answers. Confirm, or cancel. Not a menu of six things.
- Say what happens on each answer, truthfully. If confirming means it ships today, say that. If cancelling means it is cancelled immediately, say that. If either actually means "someone will look at this in the morning", say that instead.
- Give a way to change something. Address corrections and size swaps are the second-biggest reason people respond, and a flow that only accepts yes or no forces them into no.
What it may not claim
This is the part worth being pedantic about, because these messages get copied between brands and the dishonest phrasings spread fastest.
Fair to say
Not fair to say
Take those one at a time. A delivery date is a courier's prediction and not yours to promise, least of all before the parcel has been handed over. A consequence for cancelling — account flags, blocked COD, a note on your record — must not be implied unless it is a policy you genuinely operate and have told the customer about; inventing pressure is the oldest trick in this format and it is the one that gets a business number reported. Urgency does not belong here at all: a clock on a confirmation converts a considered cancel into a panicked confirm, which is the outcome you were trying to avoid. And a discount attached to confirming changes what the message is. It stops being a service message about an order and becomes a promotion, which is a different category on Meta's platform with different consent behind it.
If the message needs a countdown to work, it is not a confirmation. It is a sales pitch wearing one.
Silence is not a yes, and it is not a no
The hardest design question is what to do with the majority who never reply.
Non-response means nothing. The phone is off, the message is in an unread pile of two hundred, the number on the order belongs to someone's father. Treating silence as a cancellation destroys real orders. Treating it as a confirmation makes the whole exercise decorative.
The workable answer is that silence returns the order to your ordinary process — it ships as it would have, and you have simply not learned anything. One follow-up after a sensible gap is reasonable. Two is nagging, and a third is what a reported number looks like.
If you want to act on the pattern, act on it at the level of policy, not the individual message: a threshold above which an order gets a phone call from a person, decided by your own history, not by a number you read somewhere.

The operational details nobody mentions
Quiet hours. Dispatch batches run when the warehouse runs, which is often late. A confirmation landing at 1am is a message that gets muted at best.
Deduplication. Two orders from the same customer on the same day should not produce two near-identical messages that make it unclear which one they cancelled.
Reply matching. People do not type CONFIRM. They type "confirm", "ok", "haan", "yes bhejo", "theek hai", "haan ji", or a thumbs-up emoji. Harvest the real strings from a week of replies rather than guessing them, and route anything unmatched to a person instead of asking again. A photo or a voice note is unmatchable — nothing here reads images or audio — and belongs with a human immediately.
The address correction path. When somebody sends a new address, that has to reach whoever prints the label before the label prints. An automation that collects a correction nobody acts on is worse than one that never asked.

What we run today
PostEngage answers Instagram comments and DMs on the official Graph API. There is no WhatsApp in the product, on any plan. This post exists because the COD confirmation is a real problem that people search for, and it deserves an honest description rather than a pitch.
On Instagram: a comment stays answerable for seven days, a DM thread for twenty-four hours and only their own message restarts it. Templated replies are free and unlimited; a credit is spent only when the AI writes new text. Free tier is 100 credits with no card, packs from ₹499.
Next: the D2C inbox for the pre-purchase half of this, and order status done honestly for what happens after dispatch.

