WooCommerce WhatsApp Order Notification Setup That Holds Up

A customer gets "Your order has shipped," replies "it's been a week," and nobody on the team ever sees it, because the plugin that sent the message only fires outbound. A WooCommerce WhatsApp order notification is not a plugin problem.
A plugin takes an afternoon to install, and the real work starts when the customer answers the message. My argument is that you should build a post-purchase system instead: proactive Meta-approved updates, verified answers when customers reply, a human for the exceptions, and a way to see failures.
The shape matters because a store's tracking message is rarely the end of the conversation. "It's late" and "this arrived broken" come back on the same thread. A system plans for those replies before the first message goes out.
Table of Contents
- Which Updates Your Store Actually Sends
- Why the Official API Beats WhatsApp Web Hacks
- Set Up WooCommerce WhatsApp Order Notification Through the Plugin
- When a Notification Is Not Enough
- Why Do Messages Get Accepted but Never Arrive?
- Choose Between Plugin, Shared Inbox or AI Agent
- Frequently Asked Questions
Which Updates Your Store Actually Sends
Customers ask "where is my order?" because checkout ends in silence. The customer pays, sees a thank-you page, and hears nothing until the parcel turns up. Every update below exists to fill that gap.

The five messages
We send five updates for WooCommerce stores:
- Order confirmed. Sent once the order is placed and moves to Processing.
- COD confirmation. Cash-on-delivery orders get a message with confirm and cancel buttons.
- Shipped. Sent when a tracking number is added to the order, with the tracking link if the store entered one.
- Out for delivery. Sent when the order moves to an Out for delivery status (a custom WooCommerce status with the slug out-for-delivery).
- Delivered. Sent when the order moves to a Delivered status (a custom status with the slug delivered). Completed alone never sends it.
Proactive messages versus inbound conversation
Can WooCommerce send a confirmation without the customer messaging first? Yes, but only through an approved template and only with opt-in. When the store speaks first, WhatsApp requires a Meta-approved Utility template. Order updates fit that category.
When the customer writes first, a service window opens and the conversation is free-form. Replies from the customer keep that window going. That split matters later, because the template is for the store's announcements and the open window is where support happens.
How COD confirmation works
The customer taps confirm or cancel, and that tap goes back to the store as a clear signal. Nobody on your team has to phone to ask "did you really order this?" A cancel tap before dispatch also means you don't pay outbound shipping and return freight on a parcel the customer would have refused at the door.
What the tracking link is
The link comes from the store's own order data. We do not track carriers or print labels. A shipped message carries a tracking link only if the store has already entered one on the order.
Why the Official API Beats WhatsApp Web Hacks
There are three routes to sending these messages.
- The official WhatsApp Business Platform Cloud API. Meta hosts it, and you send approved templates through it.
- A business solution provider such as Twilio. It sits in front of the same official API and adds its own layer and billing.
- Unofficial WhatsApp Web automation. It scans a QR code and drives a browser session as if a person were typing.
Do you need Cloud API, Twilio or a third party? You need route one or two. Both are official, and the plugin you use will pick the connection for you. Route three is the one to refuse.
Why the Web hack gets numbers banned
Web automation breaks Meta's terms. It has no template approval, so nothing checks what you send. It keeps no opt-in record, so you cannot show consent when someone complains. A banned number also takes your main customer line down with it, including the chats your team still has open.
How templates work
You can use the store's own wording. Meta reviews the template, and the Utility category fits order updates. Rejections are usually fixed by removing promotional language: a discount code or a "shop again" line pushes a message toward Marketing, which is also the more expensive category.
Meta charges per template message, and the category decides how much. Under Meta's published rules, a Utility template sent inside an open 24-hour customer service window is free. Sent outside that window, it is billed per message at the rate for the customer's country. Marketing templates cost more than Utility and are billed even when a window is open. Check the current rates on Meta's pricing page before you budget.
For Utility templates, the window rule decides your bill. Only Utility sends outside an open 24-hour window are charged, and Utility sends that follow a customer's own message within the window come free. Most proactive order updates go out when the customer has not written in the last day, so expect them to be billed at the Utility rate. Our WhatsApp Business API pricing post goes further on rates by region.
Opt-in, done properly
Add a checkout checkbox that says, in plain words, that the customer will get order updates on WhatsApp. Store a record for each customer:
- the timestamp
- the exact wording shown
- the phone number
That record is how you prove opt-in if anyone asks. When a customer replies STOP, mark them opted out immediately and make sure no status hook can message them again.
Set Up WooCommerce WhatsApp Order Notification Through the Plugin
For comparison, WooCommerce's own guide walks through creating a Meta developer app, collecting a Phone Number ID and WABA ID, generating a permanent System User token and creating templates by hand. That route works. The Tendabot WordPress plugin shortens it.

- Install the plugin and connect your WooCommerce store (details on the WooCommerce integration).
- Link your WhatsApp number. Coexistence means the number keeps working on the owner's phone, so the team keeps its existing chats.
- Switch on the updates you want and approve the wording (how the order updates feature works).
Keep template variables small
Order number, first name, total, tracking URL and a support link are enough. Resist adding full addresses or item lists. Every variable is personal data sitting in a WhatsApp thread and in Meta's logs, and a shipped message does not need the street name to be useful.
Fix phone numbers before they fail
Store numbers in international format with the country code, with no spaces and no leading zero after it. A free-text checkout field will produce "0712 345 678" sooner or later. Use a phone field with a country selector, or normalise on save.
Multilingual names also need thought. A template is approved in a specific language, so the greeting and the customer's name should match what a customer in that language expects.
Know which status sends which message
Statuses are where false messages come from. Tendabot reads your WooCommerce statuses like this:
- Processing triggers order confirmed, or COD confirmation for cash-on-delivery orders.
- Adding a tracking number triggers shipped.
- A custom out-for-delivery status triggers out for delivery.
- A custom delivered status triggers delivered.
- Completed is the trap. In WooCommerce it means the store finished its work, not that the parcel reached anyone's door.
Completed fires when an admin ticks the order off, often at handover to the courier, which can be days before anyone scans the parcel at the customer's door. Any tool that treats Completed as Delivered tells a customer "Your order was delivered" while the box is still in transit. Tendabot does not.
That customer's next message is "where is it?", sent to a store that just told them it arrived. Add a dedicated delivered status that you or your shipping tool sets. Cancelled, refunded and failed should not trigger any of the five messages unless you design a separate template for them.
When a Notification Is Not Enough
A notification plugin fires on a state change and then goes quiet. The customer gets "Your order has shipped" and replies "it's been a week." Nothing is listening. The message sits in a thread until someone notices it on a phone.
How the follow-up should work
When the customer writes first, the AI agent answers "where is my order?" Before it reveals anything, it asks for the order number plus the checkout email or phone. Only then does it show status, items, address or tracking. This identity-verified order lookup is available on Pro and Scale.
The reason for the double check is that order numbers are sequential and guessable. A bot that answers on order number alone lets anyone type 1041, then 1042, and read other customers' names and addresses.
The rule that prevents this is simple: the order number and a matching email or phone on that order must both match before any field is shown. On a mismatch, the bot says it can't find an order with those details.
It does not say which part failed or whether the order exists.
Buyers rightly ask where that order data goes. The lookup reads from your WooCommerce order data and passes only the fields needed to answer that one question, such as status, items and tracking link, into the model's prompt for that reply.
Whether a model provider retains prompt text depends on that provider's own terms, so check them for the model you pick. Meta's logs hold the template variables and message content you send through WhatsApp, which is another reason to keep the variable list short.
If the order has no tracking link, the agent says so. It does not guess. "Your order is marked shipped, but no tracking link has been added yet" is a better answer than an invented delivery date.
Pro Tip: Test the lookup with a wrong email on a real order number. If the bot reveals even the order status, or tells you the order exists, your verification is too loose.
Exceptions go to a person
Late, missing and damaged cases land in the shared inbox. A human takes over, and the thread can be handed back to the AI afterwards. Our post on human takeover in a shared inbox AI chatbot covers the mechanics in depth.
The deliberate limits
Refunds, address changes and cancellations are collected as structured requests for your team to approve. The bot does not execute them on its own. That means a wrong decision costs you a review step, not a refund you did not mean to give.
Why Do Messages Get Accepted but Never Arrive?
An accepted API call only means Meta took the message for processing. Delivery or failure arrives later through status webhooks. A store that only checks the send response cannot see failures, so it believes everything went out.
Diagnosis checklist
Work through these in order:
- Expired access token. Temporary tokens expire. Use a permanent System User token.
- Bad country code. Missing prefix, stray spaces or a leading zero.
- Template paused or rejected. Check its status in Meta's template manager.
- Recipient problems. The number is not on WhatsApp, or the customer opted out.
- Missing opt-in. No consent record means the message should not have been sent.
- Tracking link absent. A shipped message with an empty variable can fail or look broken.
- Duplicate triggers. The same status was saved twice.
Stop double messages
Editing an order in the WooCommerce admin can re-fire a status hook. The customer then gets "Your order is confirmed" twice. Tendabot guards against it by recording which message went out for which order and status, and skipping a repeat. If you build your own sender, add the same check before launch, not after the first complaint.
Test before launch
Keep it short and checkable:
- Use a test number, with the template approved before go-live.
- Walk one order through every status.
- Run one COD confirm and one COD cancel.
- Send STOP and confirm nothing else goes out.
- Reply as a customer and test a human takeover.
Choose Between Plugin, Shared Inbox or AI Agent
Dedicated notification tools fit a very small store that only needs status messages and has someone free to answer replies on a phone. WANotifier is a subscription service, so you pay its plan on top of Meta's per-message fees. NotifyStore is a WooCommerce plugin built around status messages.
Plugins in the wpnotif style are a fair choice here: they are cheaper and simpler than the system I have described because they have fewer parts. Plan prices change, so read them on each vendor's own site.
Two questions decide whether any of them is safe to buy. First, does it send through Meta's Cloud API or through a QR-code session? A QR session is the ban risk described earlier, so refuse it. Second, what happens when a customer replies?
Send a test reply and see whether it lands in an inbox, gets forwarded to a phone, or goes nowhere. If your volume is low and one person reads every reply, buy the plugin and stop reading.
A shared human inbox fits when replies come often enough that two or three people need to see the same threads. An AI agent fits when the same questions repeat daily and the team answers them by hand.
What it costs
Your cost has two parts. Meta charges per template message, so a store sending the confirmed, shipped, out for delivery and delivered messages (plus COD where it applies) pays Meta for each one sent outside an open service window. The agent's replies draw on credits at the provider's real token cost with no markup, on a choice of models. Your own team's replies are always free and never metered.
Take your own month's order volume, multiply by the messages per order, apply Meta's published rate for your country, and add the credits the agent's replies use. The pricing page lists those credit figures. When a plan's replies run out, the bot pauses politely instead of generating an overage bill.
Who this is not for
- Stores with a handful of orders a week.
- Stores that want carrier-level tracking or label printing.
- Anyone who wants unofficial QR-code sending.
Before you buy anything, write down the three questions your team types most often. If all three are status announcements, a notification plugin covers you. If they are "where is my order?" replies that need a verified lookup, set up the five messages from WhatsApp order updates, then start with the 300 free credits (no card needed) and run a few real orders through the test list above.
Frequently Asked Questions
Can WooCommerce send an order confirmation on WhatsApp without the customer messaging first?
Yes. You send it through a Meta-approved Utility template, and the customer must have opted in. Without both, the message should not go out.
Do I need WhatsApp Cloud API, Twilio, or a third-party provider?
You need an official route. That is the Cloud API directly or a provider such as Twilio sitting in front of it. Avoid unofficial QR-code tools, which break Meta's terms and risk your number.
How do I prove a customer opted in to WhatsApp order updates?
Keep a record for each customer: the timestamp, the exact checkbox wording shown and the phone number. Store it with the order, and mark customers opted out when they reply STOP.
Why was my message accepted by the API but never delivered?
Acceptance only means Meta took the message for processing. Failure arrives later through webhooks. Common causes are an expired token, a bad country code, a paused template, a recipient not on WhatsApp, or an opt-out.
Can WhatsApp look up a WooCommerce order by order number and phone number?
Yes, on Pro and Scale. The agent asks for the order number plus the checkout email or phone, and only reveals order details once they match. If no tracking link exists on the order, it says so.
Put an AI agent on your site in minutes.
300 free credits. No card. Cancel whenever.