WhatsApp Order Tracking for D2C Stores
- 03 Oct, 2026
WhatsApp Order Tracking for Indian D2C Stores: Setup Guide
WhatsApp order tracking means sending the customer one short, pre-approved message each time their order changes state: confirmed, shipped, out for delivery, delivered or failed. Nearly all of these are utility templates, which Meta prices well below marketing messages, and they are triggered automatically by webhooks from your store (Shopify or WooCommerce) and your courier or shipping aggregator (Shiprocket, Delhivery and the like). Set up properly, the sequence answers “where is my order” before the customer asks, and two of its messages — COD confirmation and failed-delivery recovery — directly cut return-to-origin (RTO) losses.
This guide covers the full sequence, which messages count as utility, how the triggers are wired and where stores usually get it wrong. Winning back shoppers before an order exists is a different job, covered in our guide to WhatsApp abandoned cart recovery.
The message sequence, stage by stage
Every message below goes to one customer about one order. None of them is a broadcast.
| Stage | Trigger | Category | What the message says | Reply needed? |
|---|---|---|---|---|
| 1. Order confirmed (prepaid) | Store: new paid order | Utility | Order number, items, amount paid, expected delivery date range | No |
| 2. COD confirmation | Store: new cash-on-delivery order | Utility | Order summary, amount payable on delivery, Confirm and Cancel buttons | Yes |
| 3. COD reminder | No reply to stage 2 after a few hours | Utility | One polite reminder that dispatch is on hold until confirmed | Yes |
| 4. Shipped | Store or aggregator: AWB generated, fulfilment created | Utility | Courier name, AWB number, tracking link button | No |
| 5. Delay notice | No courier scan for 48 hours, or promised date missed | Utility | Honest status and a new expected date | Optional |
| 6. Out for delivery | Courier: out for delivery | Utility | Arriving today, keep your phone reachable, COD amount to keep ready | No |
| 7. Delivery failed (NDR) | Courier: undelivered | Utility | Reason the courier gave, buttons to re-attempt, update address or return | Yes |
| 8. Delivered | Courier: delivered | Utility | Delivery confirmed, how to report a problem | Only if there is an issue |
| 9. Reorder or offer | Days after delivery | Marketing | Discounts, new launches, “buy again” | No |
Most stores need stages 1 to 4, 6 and 7 on day one. Stage 5 is often skipped, which is a mistake: a delay the customer hears about from you first is far easier to handle than one they discover on the tracking page. Stage 9 is listed only to show where the line falls. It is marketing, it is billed as marketing, and it should go only to customers who agreed to promotional messages.
Which messages are utility, and which are not
Meta sorts every WhatsApp template into marketing, utility or authentication. A utility template has to relate to a specific transaction the customer started — an order, a payment, a delivery — and must not carry promotional content. Order confirmations, COD confirmations, shipping, out-for-delivery, delivered and failed-delivery messages all fit, as long as they are written plainly.
The common mistake is adding a line such as “Use code NEXT10 on your next order” to a shipping update. Meta checks the category when it reviews a template and can move it to marketing if it finds promotional content. A reclassified template is charged at the marketing rate, and because Meta also limits how many marketing messages a person receives, your shipping update may simply not arrive. Keep offers in separate marketing templates. Our guide to WhatsApp utility messages goes through the wording rules in detail.
On cost: as of 2026, Meta charges per template message, with the rate set by the template’s category and the recipient’s country, and utility sits well below marketing in India. Utility templates sent while a customer service window is open — within 24 hours of the customer messaging you — are not charged. Rates and rules are revised from time to time, so check the current position in our WhatsApp Cloud API pricing breakdown before you budget.
Wiring the triggers: store, courier, WhatsApp
Three systems are involved. Your store knows about the order, your courier knows about the parcel, and the WhatsApp Business Platform sends the message. Webhooks connect them: each system posts an event to a URL you control the moment something changes.
Shopify
Use the orders/create webhook for stages 1 and 2; the payment gateway on the order tells you whether it is prepaid or cash on delivery. Use fulfillments/create for stage 4, since the fulfilment carries the tracking number and courier. fulfillments/update reports later shipment status changes, but only if your shipping app writes those statuses back to Shopify. Not every app does this consistently, so take out-for-delivery and failed-delivery events from the courier side.
WooCommerce
Webhooks live under WooCommerce > Settings > Advanced > Webhooks. Create one for Order created and one for Order updated. The update webhook fires every time the order is saved, not only when its status changes, so your receiver must read the status field and remember what it has already sent. Without that check, customers get the same “shipped” message three times. Tracking numbers usually come from your shipping plugin and are stored on the order.
Shiprocket, Delhivery and other couriers
Shiprocket lets you register a webhook URL for tracking updates in its API settings, and it posts the AWB number and current status as the parcel moves. On a direct Delhivery account, status push is usually arranged with their integration team; if it is not available, poll the tracking API every few hours for open shipments. If you ship through an aggregator, take every courier event from the aggregator rather than from each courier separately. Either way, map the status wording to your own stages, because every courier phrases “out for delivery” and “undelivered” differently.
The receiver in the middle
Something has to receive these events and send the messages. It can be your own small server, an automation tool, or a WhatsApp CRM with an API. Whatever you use, it should verify the webhook signature (Shopify and WooCommerce both sign theirs), map the event to a stage, check it has not already sent that stage for that order, fill the template variables, send, and log the result. For the tracking button, use a URL button with a fixed base and a variable at the end — your tracking page followed by the AWB — so one approved template works for every order.
In ZupiChat, for example, the developer API and webhooks can play this role, and customer replies land in a shared team inbox rather than on one person’s phone.
How to cut “where is my order” tickets
Where-is-my-order (WISMO) tickets come from silence and uncertainty. A tracking page alone does not fix them. These do:
- A date range, not a count of days. “Expected 14–16 March” raises fewer questions than “5–7 business days”, which customers count in their own way.
- A same-day dispatch message. Send stage 4 when the AWB is generated, linking to a page that shows the latest status in plain words, not a raw list of courier scans.
- Delays announced by you. A parcel with no scan for two days is tomorrow’s ticket. A short message with a new date turns it into a non-event.
- Replies that reach a person. When updates come from a number nobody answers, customers switch to calls, email and Instagram DMs, and you handle the same question on three channels.
- Self-service. A “track my order” option in your WhatsApp auto-reply can look up the latest status by the customer’s phone number and answer at any hour.
One honest limit: messages make lateness visible early; they do not make parcels faster. If a courier is consistently slow on certain pincodes, the fix is a different courier for those pincodes.
COD confirmation: the message that pays for the rest
For stores with a large share of cash-on-delivery orders, stage 2 is usually the most valuable message in the sequence. An unconfirmed COD parcel that comes back costs forward and return shipping plus packaging, and the stock is stuck in transit for days or weeks. An order cancelled before dispatch costs almost nothing.
The pattern: send the confirmation within minutes of the order, with Confirm and Cancel buttons; hold dispatch until the customer confirms or a set cut-off passes; send one reminder; then call high-value or first-time customers who still have not replied. Keep the template strictly transactional. If you want to offer a switch to prepaid, send that as a separate message. The full playbook, including what to do with orders that never reply, is in our post on reducing COD RTO with WhatsApp confirmation.
Delivery-failure recovery
When a courier marks a parcel undelivered — customer not available, address incomplete, phone unreachable, refused — the aggregator raises a non-delivery report (NDR) and gives you a short window to request a re-attempt or accept the return. The window and the number of attempts depend on the aggregator and courier. If nobody acts, the parcel usually heads back.
Send stage 7 as soon as the NDR event arrives. State the reason the courier gave and offer three buttons: deliver again tomorrow, update address or phone, return it. Because the customer’s tap opens a 24-hour customer service window, your team can then ask for the corrected address in a normal message, without another template. Whoever handles NDR records the customer’s choice in the aggregator panel, or your receiver does it through the aggregator’s API where that is supported.
Two practical points. First, customers often reply that nobody came to the door. Save those replies against the AWB; they are your evidence when you raise the matter with the courier. Second, “refused” often means the customer genuinely does not want the order. One message is enough; chasing a refusal rarely ends in a delivery.
Setup checklist
- Add a clear line near the phone field at checkout saying order updates will come on WhatsApp. Meta requires that customers agree to receive your messages; confirm your wider data-protection obligations with a lawyer.
- Validate phone numbers as 10-digit Indian mobiles and store them with the 91 country code.
- Write templates for stages 1, 2, 4, 6, 7 and 8 with no offers inside, and submit them for approval.
- Register webhooks on your store and on your aggregator or courier.
- Build de-duplication: one message per stage per order, however many times the event arrives.
- Switch off overlapping notifications from your aggregator or store apps, or customers will get two versions of every update.
- Decide who answers replies, and in which hours.
- Place test orders to your own number, prepaid and COD, on every courier you use, and force one failed delivery.
- Each week, review failed sends (numbers not on WhatsApp), the NDR reply rate and your WISMO ticket count.
When you do not need a separate tool
If you ship a handful of orders a day, the free WhatsApp Business app and a copied tracking link are fine. If your shipping aggregator’s own WhatsApp notifications cover confirmation and tracking, and one person handles all the replies, paying for that add-on may be all you need.
A WhatsApp CRM earns its cost when several people answer replies, when COD confirmations and NDR responses have to be tracked against orders, and when the same number also runs support and opted-in campaigns. That is the gap ZupiChat is built for; see the current plans and compare them honestly with what your aggregator charges.
The short version
- Order confirmation, COD confirmation, shipping, out-for-delivery, delivered and failed-delivery messages are utility templates, as long as they carry no offers.
- Trigger them from store webhooks (orders, fulfilments) and courier or aggregator webhooks (tracking status), through a receiver that blocks duplicates.
- Delay notices and replies that reach a person cut more WISMO tickets than any tracking page.
- COD confirmation before dispatch and a fast NDR message are where the money is saved.
Frequently Asked Questions
Are WhatsApp order updates free to send?
Not usually. As of 2026, Meta charges per template message, with the rate depending on the category and the recipient’s country, and utility templates such as shipping updates cost well below marketing ones in India. Utility templates sent within 24 hours of the customer messaging you are not charged. Your WhatsApp software provider may also charge for the platform itself. Check current Meta rates before you budget, because they are revised from time to time.
Can I send order updates from the normal WhatsApp Business app?
Yes, but only by hand. The app has no webhooks or API, so someone has to copy each order number and tracking link and send it manually. That is workable for a few orders a day. Once you dispatch dozens of orders daily, or need COD confirmations and failed-delivery messages to go out within minutes, you need the WhatsApp Business Platform through an API provider.
What happens if the customer’s number is not on WhatsApp?
The message is not delivered, and the API returns a failed status you can act on. For routine updates, an SMS fallback works, though SMS in India needs DLT-registered sender IDs and templates. For COD confirmation, a failed WhatsApp send should trigger a phone call before dispatch, because an unconfirmed COD order to a number you cannot reach carries a high RTO risk.
Will Meta approve my shipping update as a utility template?
A plain, transactional template with clear variables and sample values is normally approved as utility. Problems start when it includes discounts, product recommendations or “shop again” lines, which can get it categorised as marketing. Very generic templates, where almost the whole message is a variable, are also often rejected. Write one specific template per stage rather than one flexible template for everything.
Should I cancel COD orders that are never confirmed?
Not automatically at the first silence. Many genuine buyers simply do not open WhatsApp for a few hours. Send one reminder, call high-value or first-time customers, and set a clear cut-off after which unconfirmed orders are cancelled or held. How strict to be depends on your margins and your RTO history by pincode, so review the numbers monthly and adjust.
ZupiChat is built and maintained by Codelith Lab, a software company in Pune building websites, mobile apps and AI automation for Indian businesses.