> For the complete documentation index, see [llms.txt](https://docs.hotwax.co/documents/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.hotwax.co/documents/learn-shopify/shopify-integration/order-fulfillment.md).

# Order Fulfillment

Once an order is routed to a fulfillment center in HotWax Commerce, it can be fulfilled using either the HotWax Commerce Fulfillment App or an external system such as a warehouse management system (WMS).

## Fulfillment by HotWax Commerce Fulfillment App

HotWax Commerce provides [**Fulfillment App**](https://github.com/hotwax/oms-documentation/blob/user-guides-pub/documents/store-operations/fulfillment/README.md) that enables picking, packing, and shipping of orders from stores. After shipping, orders are marked as `Completed` within HotWax Commerce.

## Fulfillment by an external system

For orders fulfilled by an external system, HotWax Commerce receives the fulfillment status from that system and marks the order as `Completed`. Once an order is marked as completed, HotWax Commerce sends any tracking details to Shopify and marks the order as `Fulfilled`.

## Updating fulfillment status to Shopify

After orders are marked as `Completed` in HotWax Commerce, the fulfillment status and tracking details need to be sent to Shopify. Here is how the fulfillment update flow works:

### 1. Collecting completed orders

Users schedule the **`poll_SystemMessageSftp_OMSFulfillmentFeed`** job in HotWax Commerce. During each run, the job collects all orders that have been completed since the last upload.

{% hint style="info" %}
Run this job every 30 minutes. The interval can be adjusted to meet merchant needs.
{% endhint %}

### 2. Retrieving fulfillment orders from Shopify

For each completed order, HotWax Commerce calls the Shopify GraphQL API to retrieve the associated fulfillment orders. Shopify organizes fulfillment at the fulfillment-order level, so HotWax Commerce first fetches the fulfillment order ID and line item details using the `get#FulfillmentOrdersByOrderId` service.

### 3. Creating fulfillment on Shopify

HotWax Commerce then sends a GraphQL [`fulfillmentCreate` mutation](https://shopify.dev/docs/api/admin-graphql/latest/mutations/fulfillmentCreate) to Shopify. This mutation creates a fulfillment record on Shopify and marks the order as `Fulfilled` or `Partially Fulfilled`.

### 4. Shopify processes the fulfillment

Shopify processes the mutation and updates the order status to `Fulfilled`. If tracking details were included, they are also attached to the fulfillment record. Shopify returns a response confirming the fulfillment ID, status, and any errors.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.hotwax.co/documents/learn-shopify/shopify-integration/order-fulfillment.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
