Home > @infiniteobjects/shopify-data-manager > AdminTypes > FulfillmentService
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 FulfillmentService
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](https://shopify.dev/apps/fulfillment/fulfillment-service-apps) guide.
## Mutations
You can work with the FulfillmentService
object with the [fulfillmentServiceCreate](https://shopify.dev/api/admin-graphql/latest/mutations/fulfillmentServiceCreate), [fulfillmentServiceUpdate](https://shopify.dev/api/admin-graphql/latest/mutations/fulfillmentServiceUpdate), and [fulfillmentServiceDelete](https://shopify.dev/api/admin-graphql/latest/mutations/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 callbackUrl
parameter in the [fulfillmentServiceCreate](https://shopify.dev/api/admin-graphql/latest/mutations/fulfillmentServiceCreate) mutation.
<callbackUrl>/fulfillment_order_notification
endpoint to notify the fulfillment service about fulfillment requests and fulfillment cancellation requests, if fulfillment_orders_opt_in
is set to true
.[As of the 2022-07 API version](https://shopify.dev/changelog/legacy-fulfillment-api-deprecation), it’s mandatory for a fulfillment service to follow a fulfillment order based workflow by having fulfillment_orders_opt_in
set to true
, hosting the <callbackUrl>/fulfillment_order_notification
endpoint, and acting on fulfillment requests and cancellations.
For more information, refer to [Receive fulfillment requests and cancellations](https://shopify.dev/apps/fulfillment/fulfillment-service-apps/manage-fulfillments#step-2-receive-fulfillment-requests-and-cancellations). - Shopify sends GET requests to the <callbackUrl>/fetch_tracking_numbers
endpoint to retrieve tracking numbers for orders, if trackingSupport
is set to true
.
For more information, refer to [Enable tracking support](https://shopify.dev/apps/fulfillment/fulfillment-service-apps/manage-fulfillments#step-8-enable-tracking-support-optional).
Fulfillment services can also update tracking information with the [fulfillmentTrackingInfoUpdateV2](https://shopify.dev/api/admin-graphql/latest/mutations/fulfillmentTrackingInfoUpdateV2) mutation, rather than waiting for Shopify to ask for tracking numbers. - Shopify sends GET requests to the <callbackUrl>/fetch_stock
endpoint to retrieve inventory levels, if inventoryManagement
is set to true
.
For more information, refer to [Sharing inventory levels with Shopify](https://shopify.dev/apps/fulfillment/fulfillment-service-apps/manage-fulfillments#step-9-share-inventory-levels-with-shopify-optional).
To make sure you have everything set up correctly, you can test the callbackUrl
-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](https://shopify.dev/api/admin-graphql/latest/objects/FulfillmentOrder), [Fulfillment](https://shopify.dev/api/admin-graphql/latest/objects/Fulfillment) and [Order](https://shopify.dev/api/admin-graphql/latest/objects/Order) objects and related mutations. To act on fulfillment process events that happen on the Shopify side, besides awaiting calls to callbackUrl
-prefixed endpoints, fulfillment services can subscribe to the [fulfillment order](https://shopify.dev/apps/fulfillment/fulfillment-service-apps/manage-fulfillments#webhooks) and [order](https://shopify.dev/api/admin-rest/latest/resources/webhook) webhooks.
Signature:
export interface FulfillmentService
Property | Modifiers | Type | Description |
---|---|---|---|
callbackUrl? | Maybe<Scalars[‘URL’][‘output’]> | <p>(Optional) The callback URL that the fulfillment service has registered for requests. The following considerations apply:</p><p>- Shopify queries the <callbackUrl>/fetch_tracking_numbers endpoint to retrieve tracking numbers for orders, if trackingSupport is set to true . - Shopify queries the <callbackUrl>/fetch_stock endpoint to retrieve inventory levels, if inventoryManagement is set to true . - Shopify uses the <callbackUrl>/fulfillment_order_notification endpoint to send [fulfillment and cancellation requests](https://shopify.dev/apps/fulfillment/fulfillment-service-apps/manage-fulfillments#step-2-receive-fulfillment-requests-and-cancellations), if the fulfillment service has opted in to the fulfillment order based workflow for managing fulfillments (fulfillmentOrdersOptIn is set to true ).</p> |
|
fulfillmentOrdersOptIn | Scalars[‘Boolean’][‘output’] | Whether the fulfillment service uses the [fulfillment order based workflow](https://shopify.dev/apps/fulfillment/fulfillment-service-apps/manage-fulfillments) for managing fulfillments. | |
handle | Scalars[‘String’][‘output’] | Human-readable unique identifier for this fulfillment service. | |
id | Scalars[‘ID’][‘output’] | The ID of the fulfillment service. | |
inventoryManagement | Scalars[‘Boolean’][‘output’] | Whether the fulfillment service tracks product inventory and provides updates to Shopify. | |
location? | Maybe<Location> | (Optional) Location associated with the fulfillment service. | |
permitsSkuSharing | Scalars[‘Boolean’][‘output’] | Whether the fulfillment service can stock inventory alongside other locations. | |
productBased | Scalars[‘Boolean’][‘output’] | Whether the fulfillment service supports local deliveries. | |
serviceName | Scalars[‘String’][‘output’] | The name of the fulfillment service as seen by merchants. | |
shippingMethods | Array<ShippingMethod> | Shipping methods associated with the fulfillment service provider. Applies only to Fulfill By Amazon fulfillment service. | |
type | FulfillmentServiceType | `${FulfillmentServiceType}` | Type associated with the fulfillment service. |