Which Shopify orders trigger a WhatsApp message?
POS sales, draft orders, test orders, cancellations and edits: which ones Beacon Messenger messages, which it skips, and the checks it runs first.
The first surprise most stores get from an order-notification app is not a message that failed. It is a message that went out when nobody expected it: a WhatsApp confirmation to a customer whose order was rung up at the counter, or to the owner's own phone after a test checkout, or to someone whose order was cancelled four minutes after it was placed. None of those are bugs. They follow from one fact about Shopify, which is that an order is an order wherever it came from, and from a few deliberate choices in how Beacon Messenger decides to send.
This post lists the kinds of orders a Shopify store produces, says for each whether a WhatsApp message goes out, and explains the checks that run before any message is queued. If you only read one section, read the one on cash on delivery, because the rule there is broader than its name.
What Shopify tells the app
Beacon Messenger subscribes to a small set of Shopify webhooks: orders/create and orders/cancelled, fulfillments/create and fulfillments/update, and the checkouts topics for abandoned checkout recovery. Shopify's webhooks documentation describes these as events about the store, not about a sales channel. orders/create fires when any order is created, whether a customer paid online, a staff member completed a sale in Shopify POS, a draft order was marked paid, or an app created the order through the API. The payload carries the channel name and a flag saying whether the order is a test, but a webhook is a webhook.
Beacon Messenger does not filter on channel. The reasoning is simple: a POS customer who gave their phone number at the till and a web customer who typed it at checkout have both told you how to reach them, and the shipping update for a POS order that is being posted is just as useful as one for a web order. What the app does filter on is listed next.
The checks that run before anything is queued
When an order webhook arrives, the app looks up every enabled automation for the store and, for each one, decides whether this order qualifies. The decision is recorded in the delivery log as a skip reason when the answer is no, so you can always see why a given order produced no message:
- Automation disabled: the trigger is switched off.
- Not connected: the WhatsApp account is not linked yet, or the connection has been removed.
- No template: the automation has no approved template selected, or the template named in the settings no longer exists in Meta's account.
- No phone: the order has no usable phone number on the order, shipping address, customer record or billing address, in that order. This is the most common skip and is covered in detail in Why a Shopify order with no phone number is skipped.
- No consent: only when the automation's Require consent setting is on and the customer did not opt in to SMS marketing at checkout. Order and shipping updates usually leave this off; see WhatsApp marketing consent at Shopify checkout.
- Quota exceeded: the store's plan allowance for the month is used up.
- Duplicate: the same message for the same order has already been queued or sent. Every message carries a key made of the store, the trigger and the order, so a webhook Shopify delivers twice, which it does when a previous delivery timed out, cannot produce two confirmations.
Order by order
| Order | Order confirmation | Notes |
|---|---|---|
| Online store checkout | Sent | The standard case. Phone comes from the checkout form; consent flag from the SMS marketing checkbox if you use it. |
| Shopify POS sale | Sent if a phone is on the order | Walk-in sales with no customer attached have no phone and are skipped. Sales where staff added a customer with a mobile number are messaged like any other. |
| Draft order marked paid | Sent if a phone is on the order | Draft orders become real orders when completed, and orders/create fires then. Phone numbers typed by staff are often in local format; see the no-phone post for why that matters. |
| Order created by an app or marketplace | Sent if a phone is on the order | Marketplace channels frequently supply no phone or a masked one, in which case the message is skipped for no phone. |
| Test order (Bogus Gateway or test mode) | Sent | Shopify marks the order as a test, but the app treats it like any other. Use your own number and you have a free end-to-end check, at the cost of one conversation. |
| Cash on delivery or manual payment | Depends on Skip COD | See the next section. |
| Cancelled order | Queued message removed | If the confirmation has not yet been sent, cancellation deletes it. A message already delivered cannot be recalled. |
| Edited order | Nothing | The app does not subscribe to order edits. Changing items or quantities after the fact sends no new message. |
Cash on delivery is wider than you think
The cash-on-delivery confirmation automation exists for stores where the customer pays the courier, and the point of it is to get a yes before shipping, as described in COD confirmation on WhatsApp for Shopify. The app decides an order is COD by looking at the payment gateway names Shopify attaches to it and matching them against a list of phrases: cash on delivery, COD, the Spanish and Portuguese equivalents such as contra entrega, contra reembolso, pago en efectivo and pagamento na entrega, and the word manual.
That last entry is the one to know about. Shopify often reports manual payment methods, bank deposit, money order, pay in store, under a gateway simply called manual rather than under the name you gave the method. When it does, an order paid by bank transfer is treated as COD by Beacon Messenger. For many stores that is right: a bank transfer order also needs a nudge before you ship. If it is wrong for yours, either leave the COD automation off or word its template so that it reads correctly for both cases, for example asking the customer to confirm the order rather than to have cash ready.
The order confirmation automation has a setting called Skip cash-on-delivery orders. With it on, a COD order gets the COD confirmation only; with it off, a COD customer receives two messages within a minute, a confirmation and a request to confirm, which reads as a mistake. If you run both automations, turn it on.
Cancellations and the thirty-second window
When Shopify sends orders/cancelled, the app deletes any order confirmation or COD confirmation for that order that is still waiting in the queue. Shopify's own guide to cancelling orders covers what cancellation does to payment and stock; the WhatsApp side is only ever about what has not yet been sent.
What determines whether the message is still waiting is timing. The order confirmation has no delay option: it is queued the moment the webhook arrives and picked up by the next queue run, which happens about every thirty seconds. A cancellation that lands inside that window stops the message; one that lands later finds it already sent, and WhatsApp has no recall. The COD confirmation does support a delay, and a short one, ten or fifteen minutes, is worth setting precisely because it creates a window in which an immediately cancelled or duplicated order never bothers the customer. Fraud-flagged orders that your team cancels on sight are the main beneficiary.
A shipping update is different again: it is sent when a fulfillment gets a tracking number, so it cannot precede the decision to ship, and cancelling an order after shipping is a refund conversation, not a notification problem.
Testing without surprising a customer
- Create a test order through your own checkout with Shopify's Bogus Gateway or your payment provider's test mode, using your own mobile number. Expect a real WhatsApp message; that is the test working.
- If you have the COD automation on, place a second test order with a manual payment method and check you receive one message, not two. If you get two, turn on Skip cash-on-delivery orders in the order confirmation automation.
- Cancel a test order immediately after placing it and watch the delivery log. If the row disappears, the cancellation arrived in time; if the message was already sent, you have measured your window.
- Ring up a POS sale against a customer record that has your number and confirm you receive the confirmation, then one with no customer attached and confirm the log shows a no-phone skip.
Each of those costs at most one WhatsApp conversation, and together they tell you more than any amount of reading the settings. What they do not test is what happens when Meta or Shopify is down, which has its own post: What happens to order notifications during a WhatsApp outage.
Frequently asked questions
Do Shopify POS orders trigger WhatsApp notifications?
Yes, when the order has a phone number. Shopify fires the same orders/create webhook for POS sales as for online orders, and Beacon Messenger does not filter by channel. A walk-in sale with no customer attached has no phone and is skipped, with the reason shown in the delivery log.
Will a Shopify test order send a real WhatsApp message?
Yes. The order payload marks it as a test, but the app treats it like any other order, so a test order with your own number is the simplest end-to-end check. It uses one conversation from your allowance like any other message.
If I cancel a Shopify order, is the WhatsApp confirmation stopped?
If it has not been sent yet. On orders/cancelled the app deletes any queued order confirmation or COD confirmation for that order. The queue runs about every thirty seconds, so a confirmation with no delay is usually already gone; a COD confirmation with a delay set is reliably stopped.
Why did a bank transfer order get the cash-on-delivery message?
Shopify often reports manual payment methods under a gateway called manual rather than by name, and Beacon Messenger treats manual as cash on delivery because most stores using both want a confirmation before shipping either. If that does not suit your store, disable the COD automation or write its template to fit both cases.
Does editing an order send another WhatsApp message?
No. Beacon Messenger does not subscribe to order edit events, so changing quantities, items or the address after the order exists produces no new message. The shipping update still goes out when a fulfillment gets a tracking number.
More guides
- How to add a WhatsApp chat button to your Shopify store (2026)
- How to send Shopify order confirmations and shipping updates over WhatsApp with the official Cloud API
- Cash on delivery on Shopify: confirm orders over WhatsApp before you ship
- Recovering abandoned checkouts on Shopify with WhatsApp, the compliant way
- Why WhatsApp apps get your number banned: linked device vs API
- How a "free" WhatsApp app for Shopify ends up charging you
- Por qué una app de WhatsApp "gratis" para Shopify te cobra
- Pushdaddy or SuperLemon alternative: WhatsApp apps compared
- How to verify Shopify WhatsApp notifications were delivered
- Chat button still on your store after uninstalling the app?
- WhatsApp API pricing changes on Oct 1, 2026: Shopify impact
- Setting up the WhatsApp Cloud API with Meta's MCP and an AI agent
- WhatsApp chat outside business hours: what shoppers should see
- WhatsApp product sharing on Shopify: tracking dark social
- WhatsApp template rejected? Fixing Shopify order templates
- One WhatsApp number or two? Shopify notifications & support
- Shopify Canvas and Beacon Messenger: what works today
- Shopify now collects WhatsApp marketing consent at checkout. Here is what it changes
- Split shipments on Shopify: how many WhatsApp updates to send
- WhatsApp's 250-a-day messaging limit and your Shopify store
- WhatsApp, SMS or email for Shopify order notifications?
- WhatsApp is down: what happens to your Shopify order notifications
- Shopify orders with no phone number: why WhatsApp messages get skipped
- Shopify rollout discounts and WhatsApp order messages
- Add a Track order button to WhatsApp order messages