In the 2022-04 release, we deprecate a number of legacy Fulfillment API endpoints that interact with fulfillments at the order level. The Fulfillment Order API was introduced in the 2020-01 API version to replace these legacy endpoints. To help you in your migration, we’ve put together answers to questions you may have about how to use Fulfillment Orders, how it differs from Fulfillments and why it creates a better fulfillment and order management experience for merchants.
Why is Shopify deprecating some endpoints on the Fulfillment API?
While using Fulfillment and Order resources to fulfill orders was once considered standard, this legacy behavior is no longer compatible with modern workflows. This holds apps back from a better, more accurate, way to fulfill and manage orders and makes it difficult for merchants to have visibility and control over their inventory and fulfillment. Fulfillment Orders API helps apps model the entire fulfillment process more accurately into its sub-pieces and unlocks access to new features like local delivery & pickup, fulfillment holds, subscriptions and more. The Fulfillment API will still exist and will still be used for some actions.
Does Fulfillment Orders do more than the Fulfillments APIs does today?
Yes! Using Fulfillment Orders allows your app to do more than using the Fulfillment API alone does today! In fact, the Fulfillment Orders API models the end-to-end fulfillment process into its sub-pieces, so fulfillment data can sync more accurately between Shopify and an order management app or a 3PL. The Fulfillment Order API tracks the lifecycle of fulfillment work, including open, in-progress, closed, canceled or incomplete, so merchants have a more granular and complete view of their order data in Shopify. It also represents the exact items that need to be fulfilled in a location for a given order, improving the accuracy of order fulfillment.
What fields and endpoints are being deprecated with this release?
You will still be able to see the fulfillment relationship at the order level, however apps will not be able to fulfill orders unless using Fulfillment Orders. To provide more detail, here are the endpoints/mutations that are going away.
REST
- POST /admin/api/2021-01/orders/{order_id}/fulfillments.json
- PUT /admin/api/2021-01/orders/{order_id}/fulfillments/{fulfillment_id}.json
- POST /admin/api/2021-01/orders/{order_id}/fulfillments/{fulfillment_id}/complete.json
- POST /admin/api/2021-01/orders/{order_id}/fulfillments/{fulfillment_id}/open.json
- POST /admin/api/2021-01/orders/{order_id}/fulfillments/{fulfillment_id}/cancel.json
GraphQL
When should apps start using Fulfillment Orders?
Some of the Fulfillment API endpoints are being deprecated in the Shopify 2022-04 release. Apps will have until the 2023-06-30 date to start using Fulfillment Orders. The original 2023-03-31 deadline of 2022-04 API version was postponed to 2023-06-30with this public notice. Please follow the migration guide or visit our community forums to ask questions.
How do I move to Fulfillment Orders?
To help you seamlessly migrate, we’ve crafted a migration guide that walks you through the process of moving to Fulfillment Orders. If you’re wondering what it might look like once updated, take a look at our sample application detailing how fulfillment and order management is done before and after Fulfillment Orders.
How will current installs be impacted by moving to Fulfillment Orders?
If merchants using your app have already granted read_fulfillments or write_fulfillments, rest easy, as they will not have to agree to new permissions. Instead, you can request granular access scopes for an individual shop installation. Refer to our migration guide for more details.
How can Fulfillment Orders help to fulfill orders with sales channels?
If a merchant is selling a product on a third party marketplace or sales channel, your app will get the most up to date information on the status of the order and help you to accurately fulfill orders at the right time. Previously, legacy fulfillment services would automatically create pending fulfillments for the fulfillment service when fulfillment is requested. As merchants expand their business to capture orders on various sales channels, this has created issues in cases where orders should not be fulfilled immediately and instead placed on a temporary hold until payment is captured. With Fulfillment Orders, apps no longer need to rely on webhooks to update fulfillment fields. Instead, Shopify will create successful fulfillments in place of pending fulfillments for the fulfillment service when a fulfilled order is imported.
How can Fulfillment Orders help to manage inventory across multiple locations?
Fulfillment orders are always an accurate representation of where an item should be fulfilled from. Shopify now allows variants to be stocked at third-party locations and merchant managed locations at the same time, yet the fulfillment_service on variants is no longer an accurate representation of the service that is exclusively responsible for fulfillment. Your app must use the “assigned location ID” on any open fulfillment orders to understand definitively who is responsible for fulfilling any given order.


