Navigating Multi-Carrier Shipments: Your Expert Guide to Shopify's Split Fulfillment Challenge

Hey everyone! As a Shopify migration expert and someone who spends a lot of time sifting through community discussions, I often see recurring pain points that truly resonate with store owners. One topic that recently popped up, and really struck a chord, was about handling orders that need to be split across multiple packages, especially when those packages go out with different carriers.

It’s a common headache, isn’t it? Imagine a big order with 40 items. You might need to ship it in four boxes, and sometimes, for cost or logistics, two boxes go with USPS and two with UPS. Sounds straightforward, but as RC_de_Mordaigle pointed out in a recent community thread, Shopify’s current setup doesn’t make this easy. In their words, it’s “sloppy and not how we would like to do business.” And honestly, I get it.

The Core Challenge: One Fulfillment, One Carrier

The root of the problem, as clawmama and lumine expertly explained in the discussion, is baked into Shopify's underlying data model: one fulfillment equals one shipment, with one carrier. Even if the API lets you add multiple tracking numbers to a single fulfillment, they all have to share that same carrier. This is why, for mixed-carrier multi-box orders, we’re forced to create separate fulfillments for each carrier. It adds extra admin work and, let's be real, increases the chances of errors.

The Manual Workaround: Splitting Fulfillments by Hand

So, what’s a busy store owner to do? The community thread offered some clear, actionable workarounds. For those occasional split orders, the manual method is perfectly viable, though it can trip people up if you don’t know the order of operations. Here’s how it works, as detailed by ajaycodewiz and fromspence:

  1. Start the Fulfillment Process: On the order page in your Shopify admin, click Mark as fulfilled.
  2. Select Items for the First Box/Carrier: On the fulfillment screen, you'll see all unfulfilled items. Untick all the line items that are NOT going in the first box or with the first carrier. Only leave the items for your initial shipment selected.

  1. Mark as Fulfilled & Add Tracking: Click “Mark as fulfilled”. This creates a fulfillment for those selected items. Then, open “Add tracking” on this new fulfillment, enter its tracking number, and select the correct carrier from the dropdown.

  1. Repeat for Remaining Items: The unfulfilled items will still be sitting there. Tick those items, mark them as fulfilled, and add their respective tracking number and carrier.

The end result? One order, multiple fulfillments, each with its own carrier and tracking number. The customer will see both links on their order status page. This is fine for an occasional split, but as RC_de_Mordaigle highlighted, it gets “painful past a handful of these a day.”

Automating the Split: Enter the API and Apps

For higher volume stores, manually splitting orders like this is a recipe for burnout and errors. This is where the Shopify Admin API comes into play. lumine explained that the API has a fulfillmentOrderSplit mutation. This powerful tool can take a fulfillment order, specify the line items and quantities you want to move out, and then hand back a new fulfillment order along with the remainder.

This means you can automate the splitting process, turning what would be multiple manual clicks into a single API call per box. Any existing app or custom integration with Admin API access can drive this. Shipping apps like Shippo, ShipStation, EasyShip, or AfterShip are often built to handle this automation, creating those per-carrier fulfillments and writing tracking data back to your orders, saving your staff a ton of manual entry.

It's important to understand that while this automates the *admin work*, it doesn't change the underlying data model. You'll still end up with multiple fulfillments on the order.

Mastering Customer Notifications: One Email to Rule Them All

One major concern with splitting fulfillments is the potential for “inbox noise” – nobody wants four shipping confirmation emails for one order! Thankfully, the community had some excellent insights on managing this.

clawmama clarified that the fulfillmentCreate mutation in the Admin API takes a notifyCustomer flag. If you're using the API, this flag defaults to false, meaning customers might not be getting any shipping emails at all without you realizing it! When fulfilling manually, it typically defaults to true.

The trick is to use the API to split your order, setting notifyCustomer: false for all fulfillments except the *final* one. This way, your customer receives just one shipping confirmation email instead of four. lumine added a crucial detail: while notifyCustomer on fulfillmentCreate covers the initial email, later tracking events are controlled by fulfillmentTrackingInfoUpdate, which has its own notifyCustomer argument. It's easy to accidentally silence future updates if you're not careful!

But here's the good news: the “View your order” button in that single, final shipping confirmation email leads customers directly to their order status page. And on that page? It lists every fulfillment on the order, each with its own tracking number and link. So, one email still gets your customer to all their tracking information with a single click. Pretty neat, right?

The Community's Wish: True Package-Level Tracking

Ultimately, as many community members like ai-theme-code-editor and Steve_TopNewYork echoed, the ideal solution would be for Shopify to support package-level tracking within a single fulfillment. Where each package has its own tracking number, carrier, and optional URL. This would truly reflect real-world shipping workflows, especially for large, bulky, or multi-location shipments, and would reduce the need for these workarounds.

While we wait for potential future improvements from Shopify to natively handle this, these community-tested strategies – from careful manual splitting to intelligent API automation and notification control – can significantly ease the burden of managing complex, multi-carrier orders. It’s all about understanding the current system and leveraging the tools available to make our lives, and our customers' lives, a little bit easier.

Share:

Use cases

Explore use cases

Agencies, store owners, enterprise — find the migration path that fits.

Explore use cases