Shopify orders with no phone number: why WhatsApp messages get skipped

Where WhatsApp apps find phone numbers on Shopify orders, why messages get skipped, and which checkout settings can reduce missing numbers.

The order is real, the customer paid, and your WhatsApp automation is switched on. Yet the confirmation never went out. In Beacon Messenger, open Messages and filter by Skipped. If the reason is no phone number, the app had nowhere to send it.

Changing the WhatsApp template will not fix a missing recipient. Start with the order data and checkout settings: Shopify allows email-only orders, including on new stores with the default configuration. This post covers where the app looks for a number, when checkout collects one, what a missing country code changes, and which settings to review.

Where the number comes from

A Shopify order can carry a phone number in four places, and they are not the same field. There is the order's own phone, filled when the customer chose phone as their contact method at checkout. There is the phone on the shipping address. There is the phone saved on the customer record, which Shopify's Customer API documentation describes as E.164 format, meaning it always includes the country code. And there is the phone on the billing address.

For an order confirmation or a cash on delivery confirmation, Beacon Messenger reads them in that order: order phone, shipping address phone, customer phone, billing address phone. The first one that cleans up into a plausible number becomes the recipient. If all four are empty, the message is written to the log as skipped with the reason no phone number and nothing is sent to Meta. Skipped rows do not count towards your monthly cap; only sent messages do.

Shipping updates work slightly differently. Their recipient is captured when the shipping notification is queued: on fulfillment creation, or when tracking becomes available if the template needs it. The app checks the fulfillment destination phone first, then the order phone and address fallback. Add a missing number before that event; an existing destination phone still takes priority.

Abandoned checkout reminders are stricter still. A checkout without any phone is never queued, so there is no skipped row to find. The abandoned checkout guide explains why the phone tends to arrive late in that flow and what it means for recovery.

Why the default checkout produces orders with no phone

Review two settings under Settings > Checkout in the Shopify admin: Customer contact method, and Shipping address phone number in Customer information.

  • Customer contact method. The choices are Email, or Phone number or email. New stores default to Email. Even with Phone number or email selected, the shopper picks one of the two; Shopify's checkout form documentation says plainly that there is no option to require both.
  • Shipping address phone number. The choices are Don't include, Optional and Required. The default is Optional, so a shopper can leave it blank.

So on an untouched store, a shopper who types an email and ignores the optional phone box has placed a perfectly normal order with no phone anywhere on it. Shopify's own order confirmation goes out by email. Yours does not go out at all.

There is a further catch. Shopify documents it under the heading phone number requirement skipped at checkout: Required only applies when the checkout has a shipping step, and the shipping step only appears when at least one item in the cart needs shipping. Digital products, gift cards, services and local pickup orders can go through with no phone no matter what the setting says. Shopify states that requiring a phone number for orders without a shipping address is not supported.

Express wallets add one more gap. Shopify's PayPal Express Checkout page notes that the phone number may be missing from order details, because the wallet supplies the address and the shopper never sees your shipping phone field. Other accelerated checkouts fill the form from whatever the customer has saved with that wallet. Test them rather than assume.

The two settings to review

  1. Settings > Checkout > Customer contact method: keep Email if you need an email address on every order. Choose Phone number or email only if you want shoppers to choose either. That choice alone does not require a phone. Shopify's SMS notifications page explains how a contact phone is saved to the customer record and used as the default shipping phone.
  2. Settings > Checkout > Customer information > Shipping address phone number: Required. This requires the field when Shopify presents the shipping address step. It can collect a phone alongside the Email contact method; test accelerated wallets and other sales channels separately.
  3. Check which products are marked as requiring shipping. If your pickup or digital orders have no shipping step, no Shopify setting will force a phone for them, and you need to decide whether email is acceptable for those orders.

Required has a cost. The same PayPal documentation warns that requiring a phone number might discourage some customers from completing their purchases. If your carrier needs a number, there is a practical reason to collect it. For downloads, demanding a phone the product does not need is harder to justify, and email-only notifications may be the right answer. A phone number is not itself permission to send WhatsApp messages: collect the appropriate opt-in as well. The WhatsApp vs SMS vs email comparison weighs that trade-off in more detail.

Two hypothetical stores show the range. A furniture shop in Spain that sells on cash on delivery ships every order, the courier phones before delivering, and the COD confirmation is the one message it cannot afford to lose. Required is the obvious choice. A print shop that sells PDF sewing patterns and the occasional printed kit is different: only the kit orders have a shipping step, so Required covers the kits and the pattern buyers still get email. That is fine, as long as nobody expects WhatsApp confirmations for the downloads.

A number without a country code is a different problem

The skipped row is the honest failure. The quieter one is a number that is present but local. A shopper in Madrid types a nine-digit mobile number starting with 6 into the optional shipping phone field. Nothing stops them. The order now has a phone, the app finds it, and the question becomes what to send to Meta.

The WhatsApp Cloud API expects an international number including its country code. Beacon Messenger's cleanup is deliberately limited. It strips formatting, removes a leading plus or 00 prefix and remaining leading zeros, and checks that seven to fifteen digits remain. It never adds a missing country code. Passing that length check does not prove the number is valid or belongs to the intended customer.

An invalid recipient can produce a failed row, including Meta error 131026, Unable to deliver message. Meta's Cloud API error reference lists multiple causes for that error, so it is not proof of a missing country code. Check the actual number and collect it in international format. Pay particular attention to address phones arriving through imports, draft orders or a third-party sales channel.

Fixing an order that already has no number

Retry on the Messages page re-sends from a snapshot of the order taken when the message was queued. That is the right behaviour for an expired token or a paused template, and the delivery status guide walks through those cases. It does nothing for a skipped no phone number row, because the snapshot has no number either. Adding a phone to the order in Shopify and pressing Retry will skip again.

For a future shipping update, add the missing phone to the order's shipping address before the notification is queued, and check that the fulfillment destination does not contain a different number. That gives the new notification a usable fallback; templates, permissions and delivery still need to be valid. For the skipped confirmation, use email or another channel the customer agreed to. If they opted in to WhatsApp support, a manual follow-up may be appropriate. The one number or two post explains how support and API numbers differ.

Ten minutes on your own store

  1. Open Beacon Messenger, go to Messages and filter Status to Skipped. Separate the no phone number rows from no consent and quota exceeded; only the first group is this problem. The consent post deals with the second.
  2. In Shopify, open two or three of those orders. Look at the contact information block, both addresses and the sales channel. If they came through your online checkout, review its phone settings first.
  3. Choose the contact method and shipping phone requirement as described above. Decide deliberately about any products that do not ship.
  4. Place a test order through the normal checkout and through each express wallet your customers actually use, with a number you control written with its country code. Check that the row shows sent and then delivered.
  5. Over the following week, compare the share skipped for no phone number. If it does not improve, check the sources of those orders: marketplace channels, POS sales and staff-created draft orders do not necessarily use your online checkout's form.

Beacon Messenger lists every skipped order with its reason on the Messages page, so you can see the size of this problem before changing anything and confirm the change worked afterwards. The free plan's 50 messages a month are enough for the test orders.

Frequently asked questions

Why does my Shopify order have no phone number?

One explanation is the default checkout configuration: Customer contact method is Email and Shipping address phone number is Optional, so the shopper can give an email and skip the phone. Orders without a shipping address step and some express wallet payments can also arrive without one. Check both the order's fields and its sales channel.

Can I require both an email and a phone number at Shopify checkout?

For checkout flows with a shipping address step, use Email as the contact method and set Shipping address phone number to Required. Shopify does not offer both as a single contact-method option, but these separate fields can collect both. Orders without that shipping step and express wallets need separate testing.

Which phone number does Beacon Messenger use when an order has several?

For order and COD confirmations it checks the order phone, then the shipping address phone, then the customer record phone, then the billing address phone, and uses the first one that passes its basic cleanup. Shipping updates start from the fulfillment destination phone and then the order as it stands at fulfillment time.

Can the app add the missing country code to a local phone number?

No. It removes formatting characters, a leading plus and leading zeros and handles a 00 prefix, but it cannot know which country code is missing. A local number can pass its length check and still be unusable for delivery. Collect numbers with the country code instead.

Do skipped messages count against my monthly message limit?

No. A skipped message is logged with its reason but never sent to Meta, and the monthly cap counts sent messages only.

If I add a phone number to the order later, can I retry the skipped confirmation?

Retry uses the context saved when the message was queued. If that context has no number, editing the order and retrying will skip again. A future shipping update builds new context when it is queued, so adding the phone before then can help; the fulfillment destination phone takes priority over order-level fallbacks.

More guides