Shopify uses Locations to determine which location is responsible for fulfilling the items of an order. When integrating an external fulfillment system, the assigned location determines which fulfillment orders are available to the respective system for processing.

Shopify generally distinguishes between Service Managed Locations and Merchant Managed Locations. The main difference is who manages the location and how a Fulfillment Order is released for processing.

Basic Terms

The following terms are important for understanding the Shopify fulfillment process.

Order

An Order is the customer’s actual order in Shopify. It contains information such as the ordered items, quantities, customer and shipping details, and the payment status.

The Order itself must be distinguished from the subsequent fulfillment process. Shopify uses Fulfillment Orders for the technical handling of fulfillment and shipping.

Fulfillment Order

Shopify creates a Fulfillment Order for the items that need to be fulfilled. It defines which items and quantities are to be processed by which Location.

A single Order can contain multiple Fulfillment Orders. This can occur, for example, when the ordered items are assigned to different Locations.

For the integration of a fulfillment system, the associated Fulfillment Order is therefore particularly relevant, rather than only the original Order.

Location

A Location is a fulfillment location configured in Shopify. This can be, for example, the merchant’s own warehouse, a store, or a location operated by an external fulfillment provider.

Each Location receives a unique Location ID from Shopify. This ID can be used via the API to determine which Location a Fulfillment Order is assigned to.

Fulfillment Service

A Fulfillment Service represents an external service provider or connected system responsible for handling fulfillment for a Location.

When configured, the Fulfillment Service is linked to the corresponding Location. Shopify provides identifiers including a Fulfillment Service ID and Location ID.

These identifiers allow the integration to determine which Fulfillment Orders are assigned to the respective service.


Service Managed Location

With a Service Managed Location, fulfillment is handled by an external Fulfillment Service.

When an item assigned to such a Location is ordered, Shopify creates the corresponding Fulfillment Order for that Location. However, assigning the Fulfillment Order to the Location does not automatically mean that the external Fulfillment Service should begin processing it.

For this purpose, Shopify uses an additional Fulfillment Request.

Fulfillment Request

A Fulfillment Request is the actual request sent to the Fulfillment Service to take over and process an assigned Fulfillment Order.

The process therefore distinguishes between:

  • assigning a Fulfillment Order to a Location, and
  • actually requesting fulfillment from the Fulfillment Service.

As long as no request has been sent, the request status of the Fulfillment Order remains unsubmitted.

Once the request is sent to the Fulfillment Service, the status changes to submitted.

unsubmitted

unsubmitted means that the Fulfillment Order already exists and may already be assigned to the appropriate Location, but no Fulfillment Request has yet been sent to the responsible Fulfillment Service.

The status therefore does not mean that no Order or Fulfillment Order exists. It only describes the current state of the Fulfillment Request.

submitted

submitted means that the Fulfillment Request has been sent to the responsible Fulfillment Service.

The Fulfillment Service has therefore been requested to process the Fulfillment Order.

This status must not be confused with completed fulfillment. A Fulfillment Order with a submitted request has not necessarily been shipped or fulfilled yet.

After submission, the Fulfillment Service can accept the request and proceed with the actual fulfillment process.

Triggering the Fulfillment Request

The merchant determines the conditions under which an Order should be handed over to the Fulfillment Service.

A common condition is that only paid Orders (Paid) should be released for fulfillment.

There are several ways to trigger the Fulfillment Request.

Manual Fulfillment Request

The merchant can trigger the Fulfillment Request manually in Shopify.

After reviewing the Order, the merchant manually requests fulfillment from the Fulfillment Service. This option does not require any additional automation, but each Order must be handled manually.

Automation via Shopify Settings

Shopify provides settings that can automatically initiate fulfillment processing after an Order has been paid.

It should be noted that these settings may apply globally across the shop. If multiple Fulfillment Services or different fulfillment processes are used within the same shop, such a configuration may also affect other Orders.

Before enabling this option, it should therefore be verified that the global setting is compatible with the shop’s existing fulfillment processes.

Automation via Shopify Flow

For more targeted automation, Shopify Flow can be used.

Shopify Flow allows conditions to be defined that automatically trigger a Fulfillment Request.

For example:

Order is paid (Paid)
and
Fulfillment Order is assigned to the required Location
→
Send Fulfillment Request to the corresponding Fulfillment Service

This makes it possible to restrict the automation to specific fulfillment processes.

Shopify Flow is particularly useful for shops with multiple Fulfillment Services because the conditions can be configured individually for the relevant Location or fulfillment process.

Fulfillment Request via the API

Alternatively, the connected application can create the Fulfillment Request through the Shopify API.

For example, the external system can verify whether the Fulfillment Order is assigned to the intended Location and whether the Order has already been paid. If the defined requirements are met, the Fulfillment Request can be triggered through the API.

The connected Shopify app requires the appropriate API permissions (scopes) for this operation.

Any extension of these permissions should be coordinated with the merchant. In particular, it should be determined whether the Fulfillment Request is controlled by Shopify or Shopify Flow, or whether this responsibility should be handled by the external integration.

For a solution that can be configured and controlled directly within the shop, Shopify Flow is generally the preferred option.


Processing by the Fulfillment Service

Once the Fulfillment Request has been submitted and the required conditions have been met, the Fulfillment Service can retrieve the Orders assigned to it through the API.

Only Fulfillment Orders assigned to the corresponding Fulfillment Service or its Location are considered.

Orders assigned to other Locations or other Fulfillment Services are outside the scope of the integration.

After retrieval, the Order is transferred to the connected system for further processing. This may include picking, preparing the shipment, and shipping the goods.


Fulfillment Feedback to Shopify

After successful processing, the Fulfillment is reported back to the Shopify shop through the API.

If tracking information is available for the shipment, it is submitted together with the Fulfillment. This may include:

  • shipping carrier
  • tracking number
  • tracking URL

Shopify associates this information with the corresponding Fulfillment Order and therefore with the original customer Order.

The fulfilled items are then marked accordingly as fulfilled.

Depending on the shop’s notification settings, Shopify can notify the customer about the shipment and provide the tracking information. The merchant can also view the updated fulfillment and shipping status in the Shopify backend.


Fulfillment Status Overview

Different statuses are used throughout the fulfillment process. Each status describes a specific stage of the workflow.

Term / StatusMeaning
PaidThe Order has been paid.
unsubmittedNo Fulfillment Request has yet been sent to the Fulfillment Service.
submittedThe Fulfillment Request has been sent to the Fulfillment Service.
AcceptedThe Fulfillment Service has accepted the request.
FulfillmentThe actual fulfillment and shipping process for the assigned items.
fulfilledThe corresponding items have been reported back to Shopify as fulfilled.
Tracking NumberThe shipment tracking number provided by the carrier.

submitted and fulfilled describe different stages of the process.

submitted means that the Fulfillment Service has been requested to process the Fulfillment Order. fulfilled means that the corresponding items have actually been fulfilled and reported back to Shopify.


Service Managed Location Workflow

The complete process can be described as follows:

1. Order

The customer places an Order in the Shopify shop.

2. Fulfillment Order creation

Based on the item and Location assignment, Shopify determines which Location is responsible for fulfillment and creates the corresponding Fulfillment Order.

3. Validation of requirements

Depending on the configured process, the system checks whether the required conditions have been met, for example whether the Order has already been paid (Paid).

4. Fulfillment Request

The request is triggered manually, through Shopify automation, Shopify Flow, or via the API.

The request status changes from unsubmitted to submitted.

5. Fulfillment Service takes over

The Fulfillment Service receives the request and can retrieve and process the Fulfillment Order assigned to it through the API.

6. Processing and shipping

The Order is picked, prepared for shipment, and shipped.

7. Feedback to Shopify

After shipping, the Fulfillment is submitted to Shopify through the API. Any available tracking information is assigned to the shipment.

8. Completion

Shopify updates the fulfillment status of the corresponding items. They are then marked as fulfilled. Depending on the configuration, the customer can also receive a shipping notification containing the tracking information.

The process can be summarized as:

Order
→ Fulfillment Order
→ Assignment to Service Managed Location
→ Fulfillment Request (submitted)
→ Acceptance and Processing
→ Shipping
→ Tracking Feedback
→ Fulfillment (fulfilled)


Merchant Managed Location

With a Merchant Managed Location, the fulfillment Location is managed directly by the merchant.

Shopify also creates a Fulfillment Order based on the Order and its Location assignment. Unlike a Service Managed Location, however, there is no comparable Request/Accept process involving an external Fulfillment Service.

An authorized application can process the Fulfillment Orders assigned to the Merchant Managed Location according to its available API permissions.

After processing, the shipment is also reported back to Shopify through a Fulfillment. Any available tracking information can be included in this response.

The workflow is therefore shorter:

Order
→ Fulfillment Order
→ Assignment to Merchant Managed Location
→ Processing
→ Shipping
→ Tracking Feedback
→ Fulfillment


Service Managed and Merchant Managed Locations Compared

Service Managed LocationMerchant Managed Location
ManagementExternal Fulfillment ServiceMerchant / Shop Owner
Location IDAvailableAvailable
Fulfillment ServiceLinked to the LocationNo external Fulfillment Service required for the Location
Fulfillment RequestRequiredNo comparable request to an external service required
Request Statusunsubmitted / submittedNot required for this process
ProcessingPerformed by the assigned Fulfillment ServicePerformed by the merchant or an authorized application
Tracking FeedbackSubmitted to Shopify through the FulfillmentSubmitted to Shopify through the Fulfillment
CompletionFulfillment is reported back to ShopifyFulfillment is reported back to Shopify