Create Fulfillment

shopify.create_fulfillment
ActionBusiness appsconnection required

Calls the Shopify API with the connection's credentials.

Fulfil a Shopify fulfillment order and record its tracking details.

Connection

Required
Yes — the node will not save without one
Auth type
API key
Providers
Shopify
Secret shape
the Shopify Admin API access token
Config it needs
shop
Resolved by
config.connection_id, else node.connection_id

Configuration

7 fields, 1 required. A dotted path is a nested object and name[] an array of objects — the editor renders the same tree.

FieldTypeRequiredDefaultConstraintsExample
fulfillment_order_id
Fulfillment order to fulfil, from shopify.list_fulfillment_orders.
stringYes——1046000823
line_items
Which lines to fulfil, as JSON: [{"id": 1058737527, "quantity": 1}] using fulfillment order line item ids. Leave empty to fulfil the whole fulfillment order.
arrayNo—array of object—
tracking_number
Carrier tracking number.
stringNo———
tracking_url
Tracking URL shown to the customer.
stringNo—url format—
tracking_company
Carrier name. A name Shopify recognises (e.g. 'UPS', 'DHL Express') makes it generate the tracking link itself.
stringNo———
notify_customer
Email the customer that their order has shipped.
booleanNo———
message
Message stored on the fulfillment for the merchant.
stringNo———

Example configuration

Every value below is the contract’s own example or default — nothing invented.

{
  "fulfillment_order_id": "1046000823"
}

Output

One shape.

result

FieldTypeExample
fulfillment
The fulfillment, as Shopify returned it.
object—
id
Numeric id of the fulfillment, as a string.
string—
{
  "fulfillment": {},
  "id": ""
}

Notes

  • The store and the API version come from the connection: 'shop' (your-store.myshopify.com) and an optional 'api_version' that defaults to 2026-07. Auth is the Admin API access token, sent as X-Shopify-Access-Token.
  • Lists page on an opaque cursor from Shopify's Link header, not on page numbers. Pass the 'page_info' a call returns back into the next call while 'has_more' is true; a request carrying page_info may only carry 'limit' and 'fields', so every other filter is ignored once you are paging.
  • Shopify rate-limits with a leaky bucket (X-Shopify-Shop-Api-Call-Limit). A 429 fails the step with the bucket state and the Retry-After seconds in the message: put a control.delay in front of the node or lower 'limit'.
  • Each write node also accepts the raw resource object for fields it does not model; that object is merged last and wins on a conflict.
  • Fulfilling decrements stock at the fulfillment order's assigned location and, with notify_customer on, sends the shipping-confirmation email.

See Create Fulfillment run in a workflow.

In a technical demo we add the Shopify connection, drop the node on the canvas and let Workflow Health pre-flight it before the first real run.