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 types and what Beacon Messenger does
OrderOrder confirmationNotes
Online store checkoutSentThe standard case. Phone comes from the checkout form; consent flag from the SMS marketing checkbox if you use it.
Shopify POS saleSent if a phone is on the orderWalk-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 paidSent if a phone is on the orderDraft 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 marketplaceSent if a phone is on the orderMarketplace 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)SentShopify 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 paymentDepends on Skip CODSee the next section.
Cancelled orderQueued message removedIf the confirmation has not yet been sent, cancellation deletes it. A message already delivered cannot be recalled.
Edited orderNothingThe 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

  1. 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.
  2. 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.
  3. 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.
  4. 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