WhatsApp Business Platform
COD Order Confirmation on WhatsApp for Shopify (RTO Playbook)
How Indian Shopify brands confirm cash-on-delivery orders on official WhatsApp before dispatch: timing, template outlines, confirm/cancel replies, and an RTO workflow without invented recovery percentages.
Join the beta waitlist See pricing Explore features Blog Resources
Why WhatsApp COD confirmation is an RTO control, not a growth hack
Searching WhatsApp COD confirmation Shopify usually means reverse logistics is eating margin: fake pin codes, “just browsing” cash-on-delivery, and couriers returning boxes.
RTO (return to origin) is what happens when a COD shipment is refused, fake, or undeliverable. Confirmation on official WhatsApp does not magically delete RTO. It gives ops a yes / no / silence before pickup.
This playbook is not abandoned cart recovery. Recovery asks them to finish checkout. Confirmation starts after Shopify has a COD order. Wire both, or a clever recovery sequence just manufactures more junk CODs.
We will not publish a “typical India RTO drop” or recovery percentage. Those numbers depend on pin-code policy, courier, AOV, and whether you actually hold dispatch. Measure your own pending → confirmed → cancelled → expired counts.
WatsBerry order & shipping alerts plus a COD Confirm desk are the shipped path. Features cover templates and the shared inbox. Invite-only beta — join the waitlist.
Timing: send before pick/pack, not after the bag is sealed
Simple rule: the message must beat the courier pickup.
| When | What to send | Why |
|---|---|---|
Minutes after orders/create (COD, pending, unfulfilled) |
Confirm / cancel template | Matches WatsBerry’s COD Confirmation preset on order placed |
| Same day, if they opened but did not tap | Optional human inbox follow-up inside the care window | Do not stack a second marketing blast |
| Before handover to the DSP | Internal hold if still pending | Default pending window is 72 hours — shorten ops SLA if you ship next-day |
| After they confirm | Normal shipped / tracking alerts | Confirmation is not a licence to skip shipping updates |
| After they cancel | Stop fulfilment; optional prepaid save | Offer a Razorpay pay link only if they still want the goods |
Do not wait until “tomorrow morning” if Dark Store / same-day partners pick up in two hours. Do not fire at checkout second 5 — they are still entering the address.
WatsBerry defaults: confirm tokens confirm, yes, y (and quick-reply ids); cancel tokens cancel, no, n; expiry 72 hours; Shopify tags cod-pending, cod-confirmed, cod-cancelled when order write access exists.
Setup on WatsBerry (product-real)
1. Shopify webhooks. Integrations must show webhooks active. The preset listens to orders/create with conditions: financial status pending, fulfilment unfulfilled, gateway in COD / cash_on_delivery / manual.
2. Template. Create a Meta template with a short body (order name, total, SKU) and two quick replies (Confirm / Cancel). Hindi–English mix is fine if it matches the storefront. Sync it under Templates, then attach it on the alert.
3. COD Confirmation alert. Enable the system preset, or turn COD confirmation on an Order Placed alert (tokens, expiry hours). Quick-reply ids should match the token list so a tap classifies even when the title is localised.
4. Do not double-send. If a campaign flow also fires on the same order event, customers get both. Prefer the one-shot alert for confirm; use flows for later journeys.
5. Shopify tags. Reconnect Shopify so the token includes write_orders if you want tags and a timeline note. Without it, the WhatsApp thread still classifies; Admin may not show cod-confirmed.
6. Inbox. A “Where is my pin code?” reply is not always yes/no. The shared inbox should take over; confirmation handling skips the usual bot auto-reply when a token matches.
Abandoned-cart recovery stays on Pro and Growth. Order alerts sit on the commerce plans in the public pricing table — confirm entitlements at invite.
Template outlines (not ready-to-spam copy)
These are outlines for Meta submission. Variables must match Shopify (order name, total, item, address snippet). Do not bulk-paste unapproved text.
Template A — confirm or cancel (usually utility)
Body: Hi {{1}}, we have COD order {{2}} for {{3}} ({{4}}). Reply YES to confirm dispatch or NO to cancel. We will not ship until you reply.
Buttons: quick reply Confirm / Cancel (ids that match your token list).
Template B — address check (utility if Meta agrees)
Ask them to confirm the pin code / house number only. One question. Bad addresses are a top RTO cause; a discount will not fix a fake landmark.
Template C — prepaid save after they cancel (usually marketing)
Only if they still want the product. One Pay now or Shopify invoice link. This is a different category job from Template A.
Keep ALL-CAPS and fake scarcity out. Pair opt-out language with any marketing follow-up. Category rules: marketing vs utility in India.
RTO operating loop (measure statuses, not a slogan percent)
Run this weekly with ops — not marketing:
- Pending — do not manifest. If pickup is sooner than expiry, treat silence as a hold or a call, not as a yes.
- Confirmed — pack. Phone-scoped order status still helps after ship.
- Cancelled — do not dispatch. Decide in Shopify whether to cancel the order.
- Expired — your policy: cancel, call, or prepaid-only for that pin code next time.
Finance should see orders you did not ship because of a No / silence — that is the RTO you avoided. Opens on a template are not savings.
Upstream: if recovery copy only screams COMPLETE YOUR ORDER, you will confirm garbage. Fix the cart sequence and pin-code blocks on the store.
Next: solutions for alerts next to recovery, features for inbox and flows. Ready to run this on official API? Join the beta waitlist.
Frequently asked questions
Is COD confirmation the same as abandoned cart recovery?
No. Cart recovery nudges an unpaid Shopify checkout. COD confirmation asks a customer who already placed a cash-on-delivery order to confirm or cancel before you dispatch. See /resources/shopify-cart-recovery and /solutions.
Should the confirm message be marketing or utility?
A confirm/cancel ping on an order that already exists is usually submitted as utility. Meta decides. If it is recategorised to marketing, budget that band — see /resources/whatsapp-marketing-vs-utility-message-india. Do not dress a promo as an order update.
Will WatsBerry auto-cancel the Shopify order if they reply No?
Not by default. A cancel reply is classified, the order can be tagged cod-cancelled, and a note is appended when write_orders is present. Your ops team (or a later automation) decides whether to cancel in Shopify Admin.
Does this work for WooCommerce?
Order Alerts can fire on WooCommerce order events. Shopify tag/note write-back is Shopify-specific. This playbook is for Shopify COD. Abandoned-cart recovery remains Shopify-only.