WhatsApp COD Order Confirmation: Utility or Marketing?
The short answer
A WhatsApp cash-on-delivery confirmation that asks the customer to confirm or cancel one specific order matches Meta's Order Management utility examples. Add a discount for paying online and it becomes mixed content, which Meta's template guide counts as marketing. Since 1 October 2026 a utility template is charged even inside an open customer service window (checked October 2026).
Is a WhatsApp COD order confirmation a utility template?
Yes, as long as it does one job: it names a specific cash-on-delivery order and asks the customer to confirm or cancel it. That is almost word for word one of the purposes Meta lists for utility templates under Order Management:
"Confirm, update, or cancel an order or transaction with a customer, using specific order or transaction details in the body of your message." (Meta — Template categorization)
Meta's own example for that row reads "Thank you! Your order {{order_number}} is confirmed. We will let you know once your package is on its way." The same row carries the condition: "These messages should not promote, recommend, upsell, or cross-sell products; include offers; or attempt to secure renewals."
Indian stores send this message for a plain reason. A cash-on-delivery parcel that the customer refuses at the door goes back to the seller, which logistics teams call return to origin, or RTO. A confirmation before dispatch lets the customer say no before the parcel moves. If you meet an RTO-reduction percentage, ask for the study behind it; this page quotes none, because a percentage without a named study and a method is not evidence.
The trap is a variant that sounds like good service. Take a hypothetical one: "confirm your COD order, or pay online now and get 5% off." It reads like help. By Meta's rule it is a promotion attached to an order update, and the template that carries it is a marketing template.

- Is a WhatsApp COD order confirmation a utility template?
- Which COD confirmation wordings stay utility under Meta's guide?
- Can a COD confirmation offer a discount for paying online instead?
- How do you build a COD confirmation template with Confirm and Cancel buttons?
- What arrives on your webhook when the customer taps Confirm?
- What does each step of a COD confirmation cost since 1 October 2026?
- Can a promo inside a variable get a COD template recategorised?
- Why should a COD confirmation stop trying to deliver after a few hours?
- What happens to COD confirmations if Meta restricts your utility templates?
- What should you do with COD orders nobody confirms?
Which COD confirmation wordings stay utility under Meta's guide?
The ones that state facts about one order and offer the customer a decision about that order. Meta's utility criteria require a template to be non-promotional and, in addition, "either specific to or requested by the user (clearly related to their order, account, services, or transactions) OR essential or critical to the user". A COD confirmation qualifies through the first branch. Everything below is read against Meta's own examples on the categorisation page:
| What the message says | How Meta's guide reads it | Meta's basis |
|---|---|---|
| Order #1042, cash on delivery, INR 1,299. Confirm or cancel? | Utility | "Confirm, update, or cancel an order" |
| The same, plus "Pay online instead", no incentive | Not ruled on | No example either way |
| The same, plus "Save 5% if you prepay" | Marketing | "an order update with a promo" |
| The same, plus "See our new arrivals" | Marketing | Must not "cross-sell products" |
| "Sorry for the delay, a credit is in your account" | Marketing | Listed under Retargeting |
| A body that is only a variable | Marketing | "contents are unclear" |
Two rows deserve a closer look. The delay apology is the easiest to miss: Meta files "We apologize for the delay in your {{package}} delivery. We have deposited a {{credit}} to your account, available immediately." under marketing, in its Retargeting examples, a row Meta describes as messages that "Promote or recommend offers, products, or services". A goodwill credit is an offer. And the "{{1}}" row matters to anyone tempted to build one flexible template whose whole body arrives at send time; Meta lists "Templates where contents are unclear (for example, where contents are only “{{1}}” or “Congratulations!”)" as marketing.
Note that Meta adds a caveat beside its examples: "Examples are illustrative only. Templates that contain similar content, or the example text above, might be categorized differently based on the exact content." The table above is a reading, not a guarantee.
Can a COD confirmation offer a discount for paying online instead?
Not inside a utility template. Meta's guide lists, among templates "also considered marketing":
"Templates with mixed content (for example, both utility and marketing, such as an order update with a promo or a feedback survey with promotional content)." (Meta — Template categorization)
Meta's utility page states the consequence without hedging: "If you attempt to create or update a utility template with marketing material, the template will automatically be re-categorized as a marketing template." (Meta — Utility templates)
That leaves two honest designs.
The first keeps the confirmation factual and sends any prepaid offer as its own marketing template, as a separate decision with its own cost and its own consent question, covered in what WhatsApp requires from an opt-in. Mixing them saves one message and reprices every confirmation you send.
The second offers the switch to prepaid with no incentive at all, as an option on the same order. Meta's categorisation page has no example of that wording; searching it on 17 October 2026 for pay online, prepaid and cash on delivery found nothing, so nobody can promise how it will be read. The nearest precedents point the same way: Meta's backorder example under Order Management ends "If you wish to cancel and receive a refund, please click below", so an action on the order is allowed, and Meta files its own order details template, a message whose whole purpose is asking for payment for an order, as utility. A discount, a cashback or "free shipping if you prepay" is an offer, and an offer is the line.
How do you build a COD confirmation template with Confirm and Cancel buttons?
Create a utility template whose body carries the order's specifics and whose two quick-reply buttons carry the decision. Quick-reply buttons are, in Meta's words, "custom text-only buttons that immediately message you with the specified text string when tapped by the app user." (Meta — Template components). A utility template may carry up to 10 buttons, and a quick-reply label may run to 25 characters.
Send it to POST /<WHATSAPP_BUSINESS_ACCOUNT_ID>/message_templates:
{
"name": "cod_order_confirm",
"language": "en_US",
"category": "UTILITY",
"message_send_ttl_seconds": 21600,
"components": [
{
"type": "BODY",
"text": "Hi {{1}}, your cash-on-delivery order {{2}} for {{3}} will be delivered to {{4}}. Please confirm so we can dispatch it, or cancel if you no longer want it.",
"example": { "body_text": [["Asha", "#1042", "INR 1,299", "12 MG Road, Bengaluru 560001"]] }
},
{
"type": "BUTTONS",
"buttons": [
{ "type": "QUICK_REPLY", "text": "Confirm order" },
{ "type": "QUICK_REPLY", "text": "Cancel order" }
]
}
]
}
Meta requires the sample values: its components reference marks each parameter's example value "Required if using a parameter." (Meta — Template components) Every one of the four variables is a fact about the order, which is the property that keeps the template utility.
One design choice has a cost on the customer's side. It is tempting to add a "Track order" or "Change address" link next to the two quick replies. Meta's components page warns that "templates composed of 4 or more buttons, or a quick reply button and one or more buttons of another type, cannot be viewed on WhatsApp desktop clients. WhatsApp users who receive one of these template messages will be prompted to view the message on a phone instead." Keep the confirmation to quick replies only, and put links in a later message.
What arrives on your webhook when the customer taps Confirm?
A message of type button, on the same messages webhook field as any other incoming message, triggered when "A WhatsApp user taps a quick-reply button in a template message." (Meta — Button messages webhook reference). The parts that matter look like this:
{
"context": {
"from": "<BUSINESS_DISPLAY_PHONE_NUMBER>",
"id": "<CONTEXTUAL_WHATSAPP_MESSAGE_ID>"
},
"from": "<WHATSAPP_USER_PHONE_NUMBER>",
"id": "<WHATSAPP_MESSAGE_ID>",
"timestamp": "<WEBHOOK_TRIGGER_TIMESTAMP>",
"type": "button",
"button": {
"payload": "<BUTTON_LABEL_TEXT>",
"text": "<BUTTON_LABEL_TEXT>"
}
}
The join back to the order is context.id, which Meta defines as the "WhatsApp message ID of the message containing the button the WhatsApp user tapped." Save the message ID returned when you sent each confirmation against its order number, and a tap resolves to exactly one order even when the same customer has three open. Matching on phone number alone confirms the wrong parcel the day a customer orders twice.
The tap also changes what you may send next. A quick reply messages you, and Meta's pricing page says: "When a WhatsApp user messages you or calls you, a 24-hour timer called a customer service window starts." So the reply to "Confirm order" can be free-form text rather than another template. In WabaCRM the tap lands in the shared inbox as the customer's own message, showing the button's text, next to anything they typed afterwards, such as a corrected landmark.
What does each step of a COD confirmation cost since 1 October 2026?
The confirmation is a charged utility template; the tap is free; a free-form reply is a service message; a second template is charged again. Meta charges per delivered message, and only in one direction: "Meta does not charge for messages from users to businesses." (Meta — Pricing on the WhatsApp Business Platform)
| Step | What Meta counts it as | Charged? |
|---|---|---|
| Confirmation template delivered | Utility template | Yes, per delivered message |
| Customer taps Confirm or Cancel | Message from the user | No |
| Your free-form reply in the window | Service message | From the 1,001st a month per number |
| A second template in the window | Utility template | Yes, since 1 October 2026 |
The bottom row is the one that changed. Until 30 September 2026 a utility template sent inside an open window was free; Meta's page now records that for those messages the pricing type "changed from free_customer_service to regular as of October 1, 2026." The detail is in what changed in service message pricing.
So the cheap way to answer a tap is a plain text reply, not a second "order confirmed" template. Service messages carry an allowance: "Each business phone number has one free tier of 1,000 delivered service messages per month." A store answering thousands of taps a day will use that allowance early in the month, but each reply is still a service message rather than a second utility template. The one case where none of this is charged is the free entry point window that follows a Click-to-WhatsApp ad, set out in the free entry point window rules; an order placed on your website does not open one. To put rupee figures on your own volumes, use the WhatsApp pricing calculator.
Can a promo inside a variable get a COD template recategorised?
Yes. Approval reviews the template you submitted, but Meta keeps reviewing what it sends:
"Automatic category updates can apply to any approved template that does not meet the template category guidelines — either because the template was not initially approved per those guidelines, or because the messages the template sends do not meet them. This includes templates whose category was previously confirmed by a review." (Meta — Template categorization)
That sentence closes an obvious loophole. A body like "Order {{2}} is ready to ship. {{5}}" passes review with a harmless sample, and then the store fills {{5}} with "Prepay now and save 5%" on every send. The template text is utility; the messages it sends are mixed content. The same applies to a festive line slipped into the name or address variable.
When it happens the template keeps working at the marketing price, which is why it can go unnoticed. The notice, the webhook and the 60-day appeal are covered in why WhatsApp changed a utility template to marketing. For a COD confirmation there is one extra cost that page does not cover: the template's delivery window.
Why should a COD confirmation stop trying to deliver after a few hours?
Because a confirmation that reaches the customer after the parcel has left is worse than none. WhatsApp keeps retrying an undelivered message for a period Meta calls time-to-live, and for a utility template the default is 30 days. Meta lets you shorten it: "Utility templates: 30 to 43200 seconds (30 seconds to 12 hours)". (Meta — Configure message time-to-live)
Set it to the gap between order and dispatch. Six hours is 21600, as in the template above. Then treat silence as an answer: "If you do not receive a delivered message webhook before the TTL is exceeded, assume the message was dropped." A dropped confirmation is not billed, because Meta charges only for delivered messages, and it tells you something useful: this customer was unreachable on WhatsApp, so call them or hold the parcel.

WabaCRM's template builder offers this as a "Stop trying to deliver after" field, in minutes, when the category is utility, with quick-reply buttons available on the same form. The note under that field repeats a rule of Meta's that matters more for COD than for almost any other utility message:
"If a template is reclassified by an automatic category update, the system clears the TTL value by setting it to a null value." (Meta — Configure message time-to-live)
A recategorised COD template therefore silently goes back to retrying for 30 days. Worse, it cannot be shortened again where it is sent from: Meta allows a custom validity period on marketing templates only "for marketing templates sent via Marketing Messages API for WhatsApp", with a minimum of 12 hours. A confirmation that slips into marketing loses its short delivery window as well as its price.
What happens to COD confirmations if Meta restricts your utility templates?
They can stop or be repriced along with every other utility message on the account. Meta's guide sets out escalating restrictions: "If a business is detected to be consistently misclassifying marketing templates as utility, WhatsApp may apply escalating restrictions." Two of the levels land directly on an order pipeline:
"Utility message volume on the Messaging account is capped within a 24-hour rolling window. Messages exceeding the cap are rejected. Marketing and authentication messages are not affected."
and, at the next level, "All approved utility templates on the Messaging account are recategorized to MARKETING. New utility template creation and category reviews are disabled."
For a cash-on-delivery store this is the real risk of the "save 5% if you prepay" line. It is not one template moving to a higher price. It is shipping updates, delivery-failure notices and confirmations being rejected or repriced together, at the moment a festive sale needs them most. The full set of levels and their durations is in how a template category change cut a messaging limit.
What should you do with COD orders nobody confirms?
Decide in advance and encode it in the order system, because none of the Meta pages cited here gives a figure for how many customers answer a confirmation, and no vendor's number is a substitute for your own. A workable sequence, using only the signals Meta actually sends:
- No delivered status before the TTL runs out. The message was dropped and nobody saw it. Call, or hold the parcel.
- Delivered, no tap or reply by your cut-off. You may send one reminder, but it is another utility template, charged again, so keep it as factual as the first: the order, the amount, the address, the two buttons.
- Cancel tapped. Cancel the order and acknowledge with a free-form reply inside the window, which is a service message.
- A typed reply arrives. Give it to a person. Address corrections and delivery-time requests are exactly what the confirmation exists to catch.
Measure the outcome yourself: confirmed, cancelled and silent orders against what was later refused at the door. That comparison, from your own orders, is the only RTO figure worth trusting. How the rest of an online shop's WhatsApp traffic fits together, from order updates to festive campaigns, is on the ecommerce use case.
Every Meta quotation on this page was read from Meta's own documentation on 17 October 2026. Meta changes that documentation without notice; the linked pages are authoritative and this one is not.
Questions people also ask
Can the COD confirmation go out automatically the moment an order is placed?
What if the customer types a reply instead of tapping a button?
Should a COD confirmation include the delivery address?
Can one template serve both prepaid and cash-on-delivery orders?
Is a COD confirmation the same as WhatsApp's order details payment message?
- whatsapp cod order confirmation
- cod verification whatsapp template
- whatsapp order confirmation template utility
- cod to prepaid whatsapp message
- whatsapp quick reply buttons