Stop Losing COD Deliveries: A Practical Guide to WhatsApp Tracking for Courier Teams

Your delivery riders are wasting fuel. In Karachi, Mumbai, Lahore, or Delhi, Cash on Delivery (COD) accounts for the vast majority of e-commerce orders. When a rider arrives at a doorstep unannounced, the customer is often not home, does not have the exact cash ready, or has simply forgotten they ordered anything. The rider makes three phone calls, gets no response, and returns the package to your hub. This is a failed delivery, or Return to Origin (RTO), and it eats your profit margins.
Traditional SMS updates do not solve this anymore. Telecom spam filters block them, customers ignore them, and you cannot build interactive buttons into a standard text message. WhatsApp is the obvious alternative, but setting it up for a high-volume logistics company requires navigating strict technical constraints, API limits, and specific cost structures. If you set it up incorrectly, Meta will block your sender number within 48 hours.
How the Technical Pipeline Actually Works
To send automated tracking updates, you cannot use the standard WhatsApp Business app on a mobile phone. You will hit rate limits and face an immediate ban for automated sending. You must use the WhatsApp Business API (also known as the Cloud API).
The process starts in your logistics management system (LMS) or courier ERP. When a package status changes in your database—for example, from "In Transit" to "Out for Delivery"—your system must trigger an API call. This call goes to your WhatsApp integration provider, which routes it to Meta's servers, delivering the message to the customer's phone.
To trigger a message, your ERP sends a POST request to the API endpoint. The request must contain specific parameters:
- The recipient's phone number with the country code (e.g., 923001234567 for Pakistan or 919876543210 for India).
- The template name as registered and approved in your Meta Business Manager.
- The language code (such as en_US or ur_PK).
- The parameter values for your variables, such as the tracking number, the rider's name, the cash amount due, and the tracking link.
Every message you initiate must use a pre-approved template. You cannot type free-text messages to start a conversation. Meta's automated systems review these templates to ensure they fit into specific categories. For tracking updates, you must use the Utility category.
The Financials: What This Actually Costs
Meta charges for WhatsApp Business API messages based on 24-hour conversation windows. You do not pay per individual message. Instead, you pay for a 24-hour conversation that starts the moment your template message is delivered to the user.
Tracking updates fall strictly under the Utility category. The rates vary by the recipient's country code. Let's look at the actual baseline costs charged by Meta:
- India (country code +91): A Utility conversation costs about ₹0.112 per 24-hour window.
- Pakistan (country code +92): Utility conversations are billed in USD, costing about $0.0073 per 24-hour window (which is roughly 2.05 PKR depending on the daily exchange rate).
These are the raw costs from Meta. Your Business Solution Provider (BSP) will usually add a small markup per message or charge a flat monthly fee for access to their gateway. At WA Link, we provide the API routing and delivery dashboards, but you still need to link your own payment method to your Meta Business Manager to cover these raw conversation fees directly.
To understand how this works in practice, let us look at a worked example for a courier company handling 10,000 shipments a month in Pakistan. We will assume a realistic delivery cycle of two days per package.
| Event Trigger | Timing | Conversation Window Status | Cost (PKR) |
|---|---|---|---|
| 1. Package Dispatched | Day 1, 10:00 AM | Opens Window 1 (Utility) | 2.05 |
| 2. Arrived at Hub | Day 1, 8:00 PM | Inside Window 1 (Free) | 0.00 |
| 3. Out for Delivery | Day 2, 9:00 AM | Inside Window 1 (Free) | 0.00 |
| 4. Delivery Delayed / Rescheduled | Day 2, 4:00 PM | Inside Window 1 (Free) | 0.00 |
| 5. Second Delivery Attempt | Day 3, 11:00 AM | Opens Window 2 (Utility) | 2.05 |
In this scenario, because the delivery stretched into Day 3, it crossed the 24-hour mark from the first message. The total cost to update this customer five times across three days was 4.10 PKR. If you complete the delivery within 24 hours, all updates cost you a total of just 2.05 PKR.
What Will Get Your WhatsApp Number Banned
Meta monitors user feedback metrics constantly. If customers click "Block" or "Report Spam" when they receive your tracking updates, your phone number's quality rating will drop from Green to Yellow, and then to Red. Once it hits Red, Meta will restrict your messaging limits or suspend your account entirely.
Here is what you should avoid if you want to keep your account active:
1. Mixing Marketing with Utility
Do not try to sneak promotional offers into your tracking updates. Writing "Your package is out for delivery! Use coupon code SAVE10 for your next order" is a bad idea. While Meta's automated system might approve the template initially, customers who are already annoyed by a late delivery will report the message as spam. Keep your utility templates clean and focused solely on the delivery details.
2. Sending Updates at Bad Times
Do not configure your system to send automated alerts the second a status changes in your database if that change happens at 3:00 AM. If your night shift team scans a batch of packages at a regional sorting hub, your system should queue those notifications and send them after 8:00 AM. Receiving a loud WhatsApp ping in the middle of the night leads to instant blocks.
3. No Clear Way to Stop Messages
You must give users a way to opt out. Even though these are transaction updates, some users prefer not to get them on WhatsApp. If you do not provide a clear "Stop updates" quick-reply button, they will use WhatsApp's native "Block" button instead. A block hurts your quality score; an API-based opt-out does not.
We built WA Link to manage API routing and webhook delivery, but we do not bypass Meta's compliance guidelines. If you send spammy templates that trigger high user block rates, your number will get flagged regardless of the API provider you use.
Building a Resilient Flow: The "Out for Delivery" Trigger
The "Out for Delivery" message is the most critical touchpoint in the delivery cycle. This is where you can actively prevent RTOs by using interactive quick-reply buttons. A flat text message does not help a rider who is already on the road, but a message with quick-replies does.
Your "Out for Delivery" template should look like this:
"Hi [Customer Name], our rider [Rider Name] is on the way to deliver your order [Order Number] from [Merchant Name]. Please have [Amount] PKR ready. Click a button below to confirm your availability."
Below this text, you should attach three quick-reply buttons:
- I am at home
- Reschedule to tomorrow
- Leave with security/neighbor
When the customer clicks "Reschedule to tomorrow", WhatsApp sends a webhook payload back to your logistics software. Your system must immediately update the rider's digital run sheet, showing them not to waste time driving to that address today. This simple automation can reduce your fuel costs and rider fatigue significantly.
Frequently Asked Questions
Can we use our existing landline or virtual number for the WhatsApp API?
Yes. You can register a landline number for the WhatsApp Business API, provided you can receive a voice call to verify the ownership code during setup. This is often better than using a mobile number because it matches your official customer support hotline.
What happens if the customer's phone is switched off or offline?
Meta will attempt to deliver the message for up to 30 days. However, for time-sensitive alerts like "Out for Delivery," you should configure your system to check the delivery status via webhooks. If the message status does not change to "delivered" within 30 minutes, your system should fall back to a standard SMS to ensure the customer sees the alert before the rider arrives.
What is the exact error code when a template fails to send?
If your message fails due to an issue with Meta's servers or an inactive number, the API will return error code 131026 (Cloud API Message Undeliverable). If you try to send a template that has not been approved yet, you will receive error code 132001 (Template does not exist).
Do we get charged for messages that are not delivered?
No. Meta only charges for delivered conversations. If you send a message to a number that does not have a WhatsApp account, or if the phone has been disconnected, you will not be charged for that conversation window.
Can we send PDF invoices or delivery receipts via WhatsApp?
Yes. You can use media templates to send PDFs, images, or document files. Keep the file size under 5MB to ensure quick download speeds on mobile networks in areas with poor coverage.
Your Next Step
Before you write any code or buy API credits, map out your current delivery statuses on paper. Identify the three most critical points where your riders face delivery failures. For most couriers, this is "Order Dispatched," "Out for Delivery," and "Failed Delivery Attempt." Write down the exact text you want to send for these three statuses, keeping them strictly focused on delivery details with no marketing fluff, and submit them as Utility templates in your Meta Business Manager dashboard.