How to use new Fulfillment Order API without being bound to Shopify auto-location assignment?

Topic summary

Main issue: Migrating from the legacy Fulfillment API to the Fulfillment Orders (FO) API while preserving an ERP-driven workflow that manually assigns each order line to chosen locations, including fulfilling a single order from multiple locations.

Proposed approach tested: Use REST to (1) load FO(s), (2) move the FO to a target location, (3) fulfill lines at that location, (4) move the FO again—causing a split between fulfilled and unfulfilled lines—and repeat until complete. Concern: Becomes complex if FOs are already split, requiring tracking of where each line resides.

Shopify guidance: Follow the documented REST workflow (linked doc) where order management apps check inventory levels at locations before moving FO(s). With REST, you must move the entire FO strategically. Consider GraphQL for more granular control, as it supports line-by-line fulfillment, reducing the need to move entire orders repeatedly.

Status: No definitive resolution; recommended paths are (a) REST with inventory checks and FO moves, or (b) GraphQL for finer control. Feedback to product teams is welcomed.

Summarized with AI on February 2. AI used: gpt-5.

I did some playing around in Postman, and it looks like something like the following can maybe work:

  1. Load fulfillment orders. Ideally there’s just one.

  2. Move it to a location which the ERP system has fulfillments from.

  3. Fulfill lines from that location.

  4. Move the fulfillment order to another location. This will actually split the fulfillment order into the fulfilled part and the unfulfilled part.

  5. Fulfill to the new fulfillment order.

  6. Keep repeating until all of the fulfillments are sent over.

I think that can work for simpler setups. But it could become a disaster for more complex situations, like if the original fulfillment order was already split when we started the export we’d have to hunt down which lines are where each step of the way.

1 Like