stack

Home > @infiniteobjects/shopify-data-manager > AdminTypes > FulfillmentService

AdminTypes.FulfillmentService interface

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.

[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 

Properties

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.