Split shipments on Shopify: how many WhatsApp updates to send

Two parcels, tracking that arrives a day late, a pickup order with no tracking. How a WhatsApp shipping update should behave in each case, and how Beacon Messenger decides.

The order confirmation is the easy message. One order, one event, one WhatsApp. Shipping is where it gets untidy, because a Shopify order does not ship once. It ships in fulfillments, and a fulfillment can be created without a tracking number, have one added the next morning, have a second one added when the warehouse splits the box, or never get one because the customer is collecting in store. Each of those is a decision about whether a message should go out, and most WhatsApp apps make the decision badly in one of two directions: silence, or a message per edit.

This post walks through the cases, explains what Shopify itself does for email in each one, and then shows the rule Beacon Messenger follows so you can decide if it matches how your store ships. If it does not, the end of the post covers the two settings that change it.

Fulfillments, not orders, are the unit

Shopify's help page on fulfilling orders is explicit: “each fulfillment in an order is fulfilled separately, so a customer can receive more than one shipping confirmation email for an order that has multiple fulfillments” (Fulfilling your own orders). The same page notes that you can add a tracking number during fulfillment or after it, that a fulfilled order can carry several tracking numbers, and that for a carrier Shopify does not recognise you type the tracking URL yourself.

Apps see the same structure through webhooks. Shopify fires fulfillments/create when a fulfillment is made and fulfillments/update whenever one changes, which includes tracking being added or edited later (WebhookSubscriptionTopic). An app that treats fulfillments/create as “order shipped” will message the customer about a parcel with no tracking; an app that treats every fulfillments/update as news will message them three times for one correction. The right behaviour sits between those, and it depends on what your message says.

Four cases and what should happen

How a shipping update should behave by fulfillment event
What happened in ShopifyWhat the customer should getWhy
One fulfillment, tracking entered at the same timeOne message, immediatelyThe common case. Nothing to wait for.
Fulfillment created, tracking added the next dayOne message, when the tracking arrivesA “shipped” message with no way to track it generates a support ticket, not reassurance.
Order split into two fulfillments on different daysTwo messages, each naming its own itemsThe customer has two parcels to watch. One message about “your order” leaves them wondering where the rest is.
Tracking number corrected or a second number added to the same fulfillmentNo new messageThe customer already has a link; the order status page shows the current numbers. A second WhatsApp for the same parcel reads as spam.

Then there is the fifth case: a fulfillment that will never have tracking, such as local delivery, in-store pickup or a digital item. Whether to message depends entirely on whether your template promises a tracking link. If it does, there is nothing to fill in; if it does not, the “it is ready” message is worth sending.

The rule Beacon Messenger applies

Beacon Messenger sends at most one shipping update per fulfillment, and it decides when by looking at your template. If the template uses any of the tracking merge fields (carrier, tracking number, tracking URL), the message is queued the first time that fulfillment carries a tracking number, whether that is on creation or on a later update. If the template uses none of them, the message is queued when the fulfillment is created. Either way the fulfillment's id is the deduplication key, so every later fulfillments/update for the same parcel is a no-op: a corrected number does not trigger a second message, and Shopify redelivering a webhook does not either.

Three details fall out of that rule which are worth knowing before you write the template:

  • Items are per parcel. The items_summary, item_count and first_item_title merge fields are filled from the fulfillment's own line items, so a split order produces “2× Linen shirt” in the first message and “1× Belt” in the second, not the whole order twice. The summary lists up to three lines and then “+N more”.
  • The order name is the order's, not the fulfillment's. Shopify names fulfillments #1001.1 and #1001.2 internally; the message says #1001, which is the number on the customer's receipt.
  • One tracking number per message. If a fulfillment carries several, the first one is used. The order status page link, available as the order_status_url merge field, lists all of them, which is one reason to include it even when you also send the carrier link.

Only fulfillments with a success status are considered. A fulfillment service that creates fulfillments in a pending or open state while it prepares the shipment will not trigger a message until Shopify marks it successful, which is normally when the carrier scan or tracking arrives.

Writing a template that survives a split

A WhatsApp template cannot branch, so one body has to read well for a single parcel and for the second of three. The trick is to talk about the parcel and its contents rather than “your order”. Compare:

  • Weak: “Good news {{1}}, your order {{2}} has shipped! Track it: {{3}}”. On a split order the second message claims the order shipped again.
  • Better: “Hi {{1}}, a parcel from order {{2}} is on its way with {{3}}. It contains: {{4}}. Track it: {{5}}”. Works for one parcel or five, and the item list tells the customer which one this is.

Map {{3}} to the carrier, {{4}} to items_summary and {{5}} to the tracking URL. The template rejection guide covers the formatting rules that make Meta reject a body like this (a body that ends on a bare placeholder, for example), and why it should stay in the Utility category.

If you ship from several locations or through a 3PL that adds tracking hours after it creates the fulfillment, keep the tracking fields in the template. The message will simply wait. Stores that send the tracking-free “your order is on its way” version because their carrier never provides numbers should know the trade: the customer gets the message sooner, and nothing follows if a number appears later.

The pickup and local delivery problem

Beacon Messenger has one shipping update automation per store, so the same template serves every fulfillment. A store that ships most orders with tracking but also offers pickup faces a choice. Keep the tracking fields and pickup customers get no WhatsApp when their order is ready, which Shopify's own “Ready for pickup” email covers; or drop the tracking fields so everyone is messaged on fulfillment, and point parcel customers at the order status page for their tracking link. Neither is wrong. The first is better when most of your volume ships; the second when most of it is collected or delivered locally.

What a split shipment costs

Each shipping update is a utility message that Meta bills to your WhatsApp Business Account, and since the October 2026 change it is billed per message rather than per 24-hour conversation (the pricing change, explained). Two parcels means two charges, and two messages against your plan's monthly cap. For most stores the second message is cheaper than the “where is the rest of my order” conversation it prevents; if you split a large share of orders, factor it into the plan you pick, because messages over the cap are logged as skipped rather than sent.

Checking it on a real order

  1. Place a test order with two items and fulfill one of them without a tracking number. If your template uses tracking fields, nothing should be sent yet; the Messages page shows no row for the fulfillment.
  2. Add a tracking number to that fulfillment. One shipping update should arrive within a minute, naming only the item you fulfilled.
  3. Edit the tracking number. No second message. The order status page link shows the new number.
  4. Fulfill the second item with tracking. A second message arrives, naming the second item, with the same order number.
  5. Open the Messages page: two rows for the order, one per fulfillment, each with its own delivered and read status. If you see one row with a skipped status, read the reason; a missing phone number or a reached monthly cap are the usual ones.

If your store needs something the rule above does not do, such as a message on every tracking change, tell us from the Help page in the app; the behaviour was chosen to keep customers' WhatsApp quiet, not because the alternative is hard. Beacon Messenger's free plan includes the shipping update automation, so you can run the five steps above before committing to anything.

Frequently asked questions

Does Shopify send a shipping confirmation for each fulfillment?

Yes. Shopify fulfills each fulfillment separately, and its help centre says a customer can receive more than one shipping confirmation email for an order with multiple fulfillments. A WhatsApp app that follows Shopify's structure behaves the same way: one update per parcel.

What happens on WhatsApp if I add the tracking number after fulfilling the order?

In Beacon Messenger, if your template uses a tracking field the message waits and is sent the first time the fulfillment carries a tracking number, which Shopify delivers through a fulfillments/update webhook. If the template has no tracking fields, the message was already sent when the fulfillment was created and nothing more is sent.

Will my customer get a second WhatsApp if I correct a tracking number?

No. The fulfillment's id is the deduplication key, so later edits to the same fulfillment do not produce another message. The order status page linked from the message shows the current tracking numbers, so include that link in the template if corrections are common in your operation.

How do I word a WhatsApp shipping template for split shipments?

Talk about the parcel rather than the order: “a parcel from order #1001 is on its way, containing 2× Linen shirt”. Map a placeholder to the items_summary merge field so each message names what is in that box, and keep the order number so the customer can match it to their receipt.

Can I send a WhatsApp message for in-store pickup or local delivery orders?

Only if your shipping update template does not use tracking fields, because those fulfillments never get a tracking number. Then every fulfillment triggers the message when it is created. If most of your orders ship with tracking, keep the tracking fields and let Shopify's ready-for-pickup email handle collection orders.

More guides