Order confirmation messages that stay free to send
Most order confirmations waste the most valuable message a store sends. Here is what to put in one.
An order confirmation is the first message a store sends after a purchase, and on WhatsApp it is the single most valuable one you will send. It is opened, it is expected, and — if you write it correctly — it is free and it opens a day of free conversation behind it.
Most stores waste it. They send a statement, the customer reads it, and the conversation ends. The version that works asks something.
What belongs in it
- The order number. The customer will quote it back to you later, so make it easy to find.
- The total. Especially for cash on delivery, where knowing the amount is what gets it ready at the door.
- What happens next, with a timeframe. "We'll message you when it ships, usually within two days" prevents the "any update?" message.
- A question. The most important element, for reasons below.
That is the whole message. Four elements, three or four lines.
What to leave out, and why it matters
| Do not include | Consequence |
|---|---|
| A discount code for the next order | Reclassifies the template as marketing — charged always, capped, undeliverable to US numbers |
| "Check out our new arrivals" | Same |
| A full itemised list | Names products in a message Meta reviews; can push a sensitive category into scrutiny |
| Your returns policy in full | Length. The body caps at 1,024 characters and long messages read badly on a phone |
| Social media links | Promotional, and nobody taps them here |
The first row is the expensive one. A utility template is free when sent inside an open conversation window, per Meta's pricing documentation. Add one promotional line and it becomes marketing: charged in both directions, subject to per-user limits, and blocked to US phone numbers entirely. On every order, permanently. See utility versus marketing templates.
Why the question matters more than the content
A confirmation that states a fact ends the conversation. A confirmation that asks something gets a tap — and a tap is a message from the customer, which opens a 24-hour customer service window in which everything you send is free text with no template and no charge.
Meta's sending messages documentation confirms the window opens on any customer message and resets each time. So one charged template buys a full day of unrestricted conversation — during which you can check the address, answer questions, send photographs, or offer prepaid payment, all free.
This is the highest-leverage sentence on this page. "Your order is confirmed" costs the same as "Please confirm your order — Confirm / Cancel" and returns nothing. The second version catches bad orders before you ship and opens the free window. There is no reason to send the first.
Three versions, by what you sell
Cash on delivery. Ask them to confirm or cancel, state the amount due, and write the answer back as an order tag. This is the highest-value flow in cash-on-delivery markets — the full build is in confirming COD orders on WhatsApp.
Prepaid, physical goods. Confirm the order, give a dispatch timeframe, and ask a light question — "anything we should know before we pack this?" Fewer taps than a COD confirmation, but still a doorway.
Made to order or personalised. Confirm and ask them to check the detail that is expensive to get wrong: the spelling of a name, a size, a date. This is the one case where the confirmation genuinely prevents a remake.
Timing
Immediately, in almost every case. The confirmation competes with the customer's memory of placing the order, and that fades within the hour.
Two reasons to add a short delay, both operational rather than psychological: to let a payment-success event arrive first so you can skip confirmation on prepaid orders, and to avoid two near-identical messages when a customer places two orders in a row.
What does not work is confirming the next morning. An unexpected message asking someone to confirm something they have half-forgotten reads as a scam attempt, which produces blocks — and blocks move your quality rating.
Getting the template approved
- Submit it as utility, which is what it is — a message about a transaction that already exists.
- Give every variable a realistic example. "Sarah" and "#1042", not "name" and "xxx".
- Anchor variables in fixed text. A template that starts or ends with a placeholder is commonly rejected as unreviewable.
- Add quick-reply buttons if you want the confirmation to be a question — the button titles must match your flow's options character for character.
- Keep it under 1,024 characters.
Rejection causes are covered in why your template was rejected.
The variables you actually have
The order event carries the customer's name, order number, order total, currency, a line-item summary, the shipping address and city, and the order status URL. That is more than enough for a good confirmation without adding anything custom.
One warning that applies to every template: a variable resolving to an empty string makes Meta reject the whole message and the customer receives nothing. If any field can legitimately be blank in your checkout, write the message so it still reads correctly without it.
What to do with the answer
Write it back to the order as a tag, so your operations can act without opening a chat. "Confirmed" builds today's packing list; "pending" builds today's call list; "cancelled" needs nobody. That workflow change is the actual value — the message is just the mechanism that produces it.
Measuring it
- Response rate. Low means the copy or the timing is wrong, not that customers are ignoring you.
- Cancellations caught before dispatch. Each one is shipping you did not pay for.
- Follow-up questions avoided. Compare "any update?" volume before and after adding a dispatch timeframe.
The wider RTO picture is in reducing RTO with WhatsApp.
Three versions you can copy
All three are utility, all three are under the 1,024-character body limit, and none contains anything promotional.
| Situation | Message |
|---|---|
| Cash on delivery | "Hi {{1}}, we've got your order {{2}} — total {{3}}, payable on delivery. Please confirm so we can pack it." Buttons: Confirm order / Cancel order |
| Prepaid | "Hi {{1}}, order {{2}} is confirmed — {{3}} paid. We'll message you when it ships, usually within 2 days. Anything we should know before we pack it?" |
| Made to order | "Hi {{1}}, order {{2}} is in. Before we start: we have this down as {{3}}. Is that right?" Buttons: Yes, correct / Something's wrong |
Each ends with a question, which is the whole design. A tap opens a 24-hour window, and Meta's sending messages documentation confirms that window resets on every customer message — so a conversation that stays alive keeps renewing itself.
How many confirmation templates you need
One, in most cases. Variables cover the name, order number and total, so the same template serves every product you sell. Two if you take both cash on delivery and prepaid and want different wording; three at most.
Resist one per product category. Meta caps templates at 250 per WhatsApp Business Account for an unverified business portfolio and 6,000 once verified, per its template documentation, and stores reach that ceiling by duplicating rather than by building genuinely different messages.
What it counts against
Each confirmation sent to a cold chat counts against your messaging tier, which starts at 250 unique recipients per rolling 24 hours and rises through 2,000, 10,000 and 100,000 per Meta's messaging limits documentation.
Two practical consequences. Verify your business early, because that is the fastest route from 250 to 2,000. And be careful about campaigns consuming the tier your order confirmations need — an unconfirmed order because a broadcast used the day's allowance is a genuinely bad outcome.
What happens after the tap
This is where the value is realised, and most stores stop too early. Inside the free window that the confirmation earned, you can:
- Show the delivery address back and ask them to check it, free — address verification.
- Offer prepaid payment with a small incentive — converting COD to prepaid.
- Answer any question they raise, in plain text, for as long as the conversation lasts.
All of it free, none of it needing a template. One charged message, a day of open channel.
Common mistakes
- Sending a statement instead of a question. The most expensive one, because it wastes the whole opportunity.
- Adding a discount code. Converts a free utility message into a charged marketing one, permanently, on every order.
- Confirming the next morning. An unexpected confirmation request reads as a scam and produces blocks.
- Itemising the full order. Adds length, adds review risk, and tells the customer nothing they do not know.
- Not writing the answer back to the order. A confirmation nobody in operations can filter on has changed nothing.
- Building one template per product. Variables exist precisely so you do not have to.
If you only change one thing
Turn the statement into a question. It costs nothing, it catches bad orders before you ship them, and it converts every subsequent message in that conversation from charged to free. No other single edit on this site has that return.
Frequently asked questions
What should a WhatsApp order confirmation contain?
The order number, the total, what happens next with a timeframe, and a question. Four elements in three or four lines — the question is what opens a free 24-hour conversation window.
Can I put a discount code in my order confirmation?
You can, but it reclassifies the template from utility to marketing — charged in both directions, subject to per-user limits, and undeliverable to US numbers, on every order permanently.
When should the confirmation be sent?
Immediately in almost every case. A short delay is only worth adding to let a payment event arrive first, or to avoid duplicate messages when someone orders twice in a row.
Why does my confirmation template keep getting rejected?
Most often missing or unrealistic variable examples, or a message that starts or ends with a placeholder so the reviewer cannot tell what will be sent.