Create Order
shopify.create_order
ActionBusiness appsconnection required
Calls the Shopify API with the connection's credentials.
Create an order in a Shopify store from a list of line items.
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, none required. A dotted path is a nested object and name[] an array of objects — the editor renders the same tree.
| Field | Type | Required | Default | Constraints | Example |
|---|---|---|---|---|---|
line_items Line items to order, as JSON: [{"variant_id": 447654529, "quantity": 1}] for catalogue products, or [{"title": "Fee", "price": "10.00", "quantity": 1}] for a custom item. Shopify refuses an order with no lines, so give at least one here or inside the raw 'order' object. | array | No | — | ≥ 1 characters; array of object | [{"quantity":1,"variant_id":447654529}] |
customer_id Numeric id of an existing customer to attach the order to. | string | No | — | — | — |
email Email address for the order confirmation. | string | No | — | email format | — |
note Internal note stored on the order. | string | No | — | — | — |
tags Comma-separated tags for the order. | string | No | — | — | — |
financial_status Payment state to record the order with, for orders taken elsewhere. Shopify only accepts this when the order is created. | string | No | — | one of "pending", "authorized", "partially_paid", "paid", "partially_refunded", "refunded", "voided" | — |
order Raw order fields for anything not modelled above (addresses, shipping lines, discount codes). Merged last, so it wins on a conflict. | object | No | — | — | — |
- At least one of line_items, order must be set.
Example configuration
Every value below is the contract’s own example or default — nothing invented.
{
"line_items": [
{
"quantity": 1,
"variant_id": 447654529
}
]
}Output
One shape.
result
| Field | Type | Example |
|---|---|---|
order The order, as Shopify returned it. | object | — |
id Numeric id of the order, as a string. | string | — |
{
"id": "",
"order": {}
}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.
- Creating an order through the API records a sale that happened elsewhere: it takes no payment. Use a draft order when you want Shopify to invoice.
See Create Order 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.