Set Inventory Level
shopify.update_inventory_level
ActionBusiness appsconnection required
Calls the Shopify API with the connection's credentials.
Set the available stock of one inventory item at one location.
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
4 fields, 3 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 |
|---|---|---|---|---|---|
inventory_item_id Inventory item id, taken from the variant's 'inventory_item_id'. | string | Yes | — | — | 808950810 |
location_id Location whose stock is being set, from shopify.list_locations. | string | Yes | — | — | 655441491 |
available The new on-hand count. Shopify stores this as a 32-bit integer and allows negatives for oversold stock. | number | Yes | — | -2147483648–2147483647 | 42 |
disconnect_if_necessary Let Shopify disconnect the item from any fulfilment service that currently owns its stock, instead of failing. | boolean | No | — | — | — |
Example configuration
Every value below is the contract’s own example or default — nothing invented.
{
"available": 42,
"inventory_item_id": "808950810",
"location_id": "655441491"
}Output
One shape.
result
| Field | Type | Example |
|---|---|---|
inventory_level The inventory level as Shopify returned it. | object | — |
available The stock level after the write. | number | — |
{
"available": 0,
"inventory_level": {}
}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.
- This sets an absolute number and overwrites whatever anything else wrote in the meantime. Use shopify.adjust_inventory_level when other systems also move the same stock.
See Set Inventory Level 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.