Fulfillment service apps
实现服务的应用提供第三方warehousing, print on demand, or fulfillment services that prepare and ship orders on behalf of merchants.
This guide describes what fulfillment services are, how they work, use cases for fulfillment service apps, and some considerations before you get started.
How it works
Anchor link to section titled "How it works"A fulfillment service fulfills orders that a merchant or another app requests. Each fulfillment service has a dedicated location. When you create a fulfillment service, Shopify automatically creates a new location for it.
Fulfillment services are represented in the REST Admin API by theFulfillmentService
resourceand in the GraphQL Admin API by theFulfillmentService
object.
服务实现可以接受或拒绝请求to fulfill orders. After a request is approved, merchants can also submit requests to cancel the fulfillment order before the order is shipped.
The following diagram shows an example lifecycle of fulfilling an order using a fulfillment service app:
- Customersfulfillm后下订单,和接收物品ent process has completed.
- Merchantssubmit a request to a fulfillment service to fulfill a given order.
- Fulfillment service appsreceive fulfillment requests and query assigned fulfillment orders to determine the fulfillment order actions that they can take on behalf of the merchant. For example, the app can accept the fulfillment request and create a fulfillment.
- Third-party fulfillment servicesfulfill and prepare orders for shipment.
API objects and relationships
Anchor link to section titled "API objects and relationships"Before you start building your fulfillment service app, we recommend familiarizing yourself with the following API objects and their relationships.
REST Admin API object | GraphQL Admin API object | Description |
---|---|---|
Order | Order | Contains information about an order, including an array of the fulfillment orders which include line items that were purchased. |
FulfillmentOrder | FulfillmentOrder | An item or a group of items in an order that are to be fulfilled from the same location. There can be more than one fulfillment order for an order at a given location. |
FulfillmentOrder.line_items | FulfillmentOrderLineItem | A line item that belongs to a fulfillment order. It associates an order line item with quantities requiring fulfillment from the respective fulfillment order and any warning messages regarding the current fulfillment status. |
Fulfillment | Fulfillment | A shipment of one or more items in an order. It includes the line item that the fulfillment applies to, its tracking information, and the location of the fulfillment. |
FulfillmentService | FulfillmentService | A third-party warehousing service that prepares and ships orders on behalf of the store owner. Each fulfillment service is associated with its own location. When you create a fulfillment service, a new location is automatically created and associated with it. |
Location | Location | A geographical location where a line item can be fulfilled from. A fulfillment service always has its own location, and variants managed by the fulfillment service should always be fulfilled from that location. |
Each fulfillment order has a status and a request status:
- REST Admin API:FulfillmentOrder
status
andrequest_status
properties - GraphQL Admin API:
FulfillmentOrderStatus
andFulfillmentOrderRequestStatus
enums
Similarly, each fulfillment has a status:
- REST Admin API:Fulfillment
status
property - GraphQL Admin API:
FulfillmentStatus
enum
The following diagram shows how a fulfillment order's status and request status changes, and how a fulfillment's status changes, based on the REST Admin API or GraphQL Admin API request that's executed:
Common use cases for fulfillment service apps include the following:
- Approving or rejecting requests to fulfill orders
- Automating the order fulfillment process for merchants
- Enabling high-quality communication between fulfillment centers and merchants
- Providing transparent reporting about order status through the Shopify admin
The following table describes the fulfillment order webhooks that your app can subscribe to in API version 2023-01 and higher. For more information, refer tothe payloads for fulfillment order webhooks.
Webhook topic | Description |
---|---|
fulfillment_orders/order_routing_complete |
Occurs when a fulfillment order is created and the order routing has been completed for the order |
fulfillment_orders/fulfillment_request_submitted |
Occurs when a merchant requests one or more fulfilment order line items be fulfilled by a fulfilment service |
fulfillment_orders/fulfillment_request_accepted |
Occurs when a fulfillment service accepts a merchant's request to fulfill one or more fulfillment order line items |
fulfillment_orders/fulfillment_request_rejected |
Occurs when a fulfillment service rejects a merchant's request to fulfill an order |
fulfillment_orders/placed_on_hold |
Occurs when a fulfillment order is placed on hold |
fulfillment_orders/hold_released |
Occurs when a fulfillment order hold is released |
fulfillment_orders/scheduled_fulfillment_order_ready |
Occurs when a scheduled fulfillment order is ready to be fulfilled |
fulfillment_orders/rescheduled |
Occurs when a fulfillment order is rescheduled |
fulfillment_orders/cancellation_request_submitted |
Occurs when a merchant requests to cancel a fulfillment order after the request was accepted by a fulfillment service |
fulfillment_orders/cancellation_request_accepted |
Occurs when a fulfillment service accepts a fulfillment cancellation request from a merchant |
fulfillment_orders/cancellation_request_rejected |
Occurs when a fulfillment service rejects a fulfillment cancellation request from a merchant |
fulfillment_orders/cancelled |
Occurs when a fulfillment service or merchant cancels a fulfillment order |
fulfillment_orders/fulfillment_service_failed_to_complete |
Occurs when a fulfillment service intends to close an assigned fulfillment order that was previously accepted for fulfillment. After this action, the fulfillment order transitions to an incomplete status. To continue the fulfillment process, the merchant or app needs to determine the next course of action. |
Migrating your app
Anchor link to section titled "Migrating your app"In Shopify, theFulfillmentOrder
resource models an end-to-end fulfillment process and is available in both theREST Admin APIand theGraphQL Admin API. TheFulfillmentOrder
resource enables fulfillment data to sync accurately between Shopify and apps.
By API version 2023-07, all apps should be using the
FulfillmentOrder
对象管理实践。应用程序使用following REST or GraphQL Admin API resources or objects to fulfill orders are using a legacy workflow that is no longer supported as of API version 2022-07:
Migrating your app to the fulfillment orders workflow provides the following benefits:
- You can fetch the assigned location of a given group of unfulfilled line items to determine where fulfillment should occur.
- You no longer need to match SKUs or filter out the items on an order that don’t apply to you before you can determine which items you need to fulfill.
- App users and apps can both add notes to requests, which can improve communication throughout the fulfillment process.
- The process of making fulfillment and cancellation requests is formalized.
Implementing recommended workflows
Anchor link to section titled "Implementing recommended workflows"To learn how to migrate your app, refer toMigrate to fulfillment orders.
If you maintain a third-party app or Shopify Flow workflow that relies onOrder
andFulfillment
API resources for order automation, then refer toTrack orders placed through third-party marketplaces.
Developer tools and resources
Anchor link to section titled "Developer tools and resources"Explore the following developer tools and resources to learn more about fulfilling orders.
Next steps
Anchor link to section titled "Next steps"- Learn how tomanage fulfillments as a fulfillment service app.