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 / Status | Meaning |
|---|---|
| Paid | The Order has been paid. |
unsubmitted | No Fulfillment Request has yet been sent to the Fulfillment Service. |
submitted | The Fulfillment Request has been sent to the Fulfillment Service. |
| Accepted | The Fulfillment Service has accepted the request. |
| Fulfillment | The actual fulfillment and shipping process for the assigned items. |
fulfilled | The corresponding items have been reported back to Shopify as fulfilled. |
| Tracking Number | The 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 Location | Merchant Managed Location | |
|---|---|---|
| Management | External Fulfillment Service | Merchant / Shop Owner |
| Location ID | Available | Available |
| Fulfillment Service | Linked to the Location | No external Fulfillment Service required for the Location |
| Fulfillment Request | Required | No comparable request to an external service required |
| Request Status | unsubmitted / submitted | Not required for this process |
| Processing | Performed by the assigned Fulfillment Service | Performed by the merchant or an authorized application |
| Tracking Feedback | Submitted to Shopify through the Fulfillment | Submitted to Shopify through the Fulfillment |
| Completion | Fulfillment is reported back to Shopify | Fulfillment is reported back to Shopify |