Fulfillment Service
A Fulfillment Service is a third party warehouse that prepares and ships orders
on behalf of the store owner. Fulfillment services charge a fee to package and ship items
and update product inventory levels. Some well known fulfillment services with Shopify integrations
include: Amazon, Shipwire, and Rakuten. When an app registers a new on a store,
Shopify automatically creates a
Location
that's associated to the fulfillment service.
To learn more about fulfillment services, refer to
Manage fulfillments as a fulfillment service app
guide.
Mutations
You can work with the object with the
fulfillmentServiceCreate,
fulfillmentServiceUpdate,
and fulfillmentServiceDelete
mutations.
Hosted endpoints
Fulfillment service providers integrate with Shopify by providing Shopify with a set of hosted endpoints that
Shopify can query on certain conditions.
These endpoints must have a common prefix, and this prefix should be supplied in the parameter
in the
fulfillmentServiceCreate
mutation.
Shopify sends POST requests to the
endpoint to notify the fulfillment service about fulfillment requests and fulfillment cancellation requests.
For more information, refer to Receive fulfillment requests and cancellations.
Shopify sends GET requests to the
endpoint to retrieve tracking numbers for orders if
is set to
true
.For more information, refer to Enable tracking support.
Fulfillment services can also update tracking information using the fulfillmentTrackingInfoUpdate mutation, rather than waiting for Shopify to ask for tracking numbers.
Shopify sends GET requests to the
endpoint to retrieve on hand inventory levels for the fulfillment service location if
is set to
true
.For more information, refer to Sharing inventory levels with Shopify.
To make sure you have everything set up correctly, you can test the -prefixed endpoints
in your development store.
Resources and webhooks
There are a variety of objects and webhooks that enable a fulfillment service to work.
To exchange fulfillment information with Shopify, fulfillment services use the
FulfillmentOrder,
Fulfillment and
Order objects and related mutations.
To act on fulfillment process events that happen on the Shopify side,
besides awaiting calls to -prefixed endpoints,
fulfillment services can subscribe to the
fulfillment order
and order
webhooks.
Anchor to FieldsFields
- Anchor to callbackUrlcallback•
Url The callback URL that the fulfillment service has registered for requests. The following considerations apply:
- Shopify queries the
endpoint to retrieve tracking numbers for orders, if
is set to
true
. - Shopify queries the
endpoint to retrieve inventory levels, if
is set to
true
. - Shopify uses the
endpoint to send fulfillment and cancellation requests.
- Shopify queries the
- Anchor to handlehandle•String!non-null
Human-readable unique identifier for this fulfillment service.
- •ID!non-null
The ID of the fulfillment service.
- Anchor to inventoryManagementinventory•
Management Boolean!non-null Whether the fulfillment service tracks product inventory and provides updates to Shopify.
- Anchor to locationlocation•
Location associated with the fulfillment service.
- Anchor to permitsSkuSharingpermits•
Sku Sharing Boolean!non-null Whether the fulfillment service can stock inventory alongside other locations.
- Anchor to serviceNameservice•
Name String!non-null The name of the fulfillment service as seen by merchants.
- Anchor to trackingSupporttracking•
Support Boolean!non-null Whether the fulfillment service implemented the /fetch_tracking_numbers endpoint.
- Anchor to typetype•Fulfillment
Service Type!non-null Type associated with the fulfillment service.
Deprecated fields
- Anchor to fulfillmentOrdersOptInfulfillment•
Orders Opt In Boolean!non-null Whether the fulfillment service uses the fulfillment order based workflow for managing fulfillments.
As the migration is now finished, the
property is deprecated and is always set to
true
on correctly functioning fulfillment services.- Anchor to shippingMethodsshipping•
Methods [ShippingMethod!]!non-null Shipping methods associated with the fulfillment service provider. Applies only to Fulfill By Amazon fulfillment service.
Anchor to QueriesQueries
- •query
Returns a FulfillmentService resource by ID.
Anchor to MutationsMutations
- •mutation
Creates a fulfillment service.
Fulfillment service location
When creating a fulfillment service, a new location will be automatically created on the shop and will be associated with this fulfillment service. This location will be named after the fulfillment service and inherit the shop's address.
If you are using API version
2023-10
or later, and you need to specify custom attributes for the fulfillment service location (for example, to change its address to a country different from the shop's country), use the LocationEdit mutation after creating the fulfillment service.- Anchor to callbackUrlcallback•
Url URL!required The URL to send requests for the fulfillment service. The following considerations apply:
- Shopify queries the
callback_url/fetch_tracking_numbers
endpoint to retrieve tracking numbers for orders, ifis set to
true
. - Shopify queries the
callback_url/fetch_stock
endpoint to retrieve inventory levels, ifis set to
true
. - Shopify uses the
callback_url/fulfillment_order_notification
endpoint to send fulfillment and cancellation requests.
- Shopify queries the
- Anchor to fulfillmentOrdersOptInfulfillment•
Orders Opt In BooleanDefault:true Whether the fulfillment service uses the fulfillment order based workflow for managing fulfillments.
As of 2022-07 API version, the fulfillment order based workflow is the only way to manage fulfillments. As the migration is now finished, the
property is deprecated and is always set to
true
on correctly functioning fulfillment services.The
input field is deprecated and will be removed in the next API version. This API version makes it optional and defaults to
true
for a smooth migration experience. Do not set theargument, and you are ready for the next API version release.
- Anchor to inventoryManagementinventory•
Management BooleanDefault:false Whether the fulfillment service manages product inventory and provides updates to Shopify.
- Anchor to namename•String!required
The name of the fulfillment service.
- Anchor to permitsSkuSharingpermits•
Sku Sharing BooleanDefault:false Whether the fulfillment service can stock inventory alongside other locations.
- Anchor to trackingSupporttracking•
Support BooleanDefault:false Whether the fulfillment service provides tracking numbers for packages.
Arguments
- Anchor to fulfillmentServicefulfillment•
Service The created fulfillment service.
- Anchor to userErrorsuser•
Errors [UserError!]!non-null The list of errors that occurred from executing the mutation.
Fields
- •mutation
Updates a fulfillment service.
If you are using API version
2023-10
or later, and you need to update the location managed by the fulfillment service (for example, to change the address of a fulfillment service), use the LocationEdit mutation.- Anchor to callbackUrlcallback•
Url The URL to send requests for the fulfillment service. The following considerations apply:
- Shopify queries the
callback_url/fetch_tracking_numbers
endpoint to retrieve tracking numbers for orders, ifis set to
true
. - Shopify queries the
callback_url/fetch_stock
endpoint to retrieve inventory levels, ifis set to
true
. - Shopify uses the
callback_url/fulfillment_order_notification
endpoint to send fulfillment and cancellation requests.
- Shopify queries the
- Anchor to fulfillmentOrdersOptInfulfillment•
Orders Opt In Whether the fulfillment service uses the fulfillment order based workflow for managing fulfillments.
As of 2022-07 API version, the fulfillment order based workflow is the only way to manage fulfillments, and
true
is the only valid value for.
- •ID!required
The id of the fulfillment service.
- Anchor to inventoryManagementinventory•
Management Whether the fulfillment service tracks product inventory and provides updates to Shopify.
- Anchor to namename•
The name of the fulfillment service.
- Anchor to permitsSkuSharingpermits•
Sku Sharing Whether the fulfillment service can stock inventory alongside other locations.
- Anchor to trackingSupporttracking•
Support Whether the fulfillment service provides tracking numbers for packages.
Arguments
- Anchor to fulfillmentServicefulfillment•
Service The updated fulfillment service.
- Anchor to userErrorsuser•
Errors [UserError!]!non-null The list of errors that occurred from executing the mutation.
Fields