Reference · Tools

Shopify

Manage orders and products via the Shopify Admin REST API

Action Sales v1

The Shopify node manages orders and products through the Admin REST API, covering create, read, update and list with filters. A typical build is syncing new orders into a fulfilment system and writing product updates back when stock changes.

Node type
Action
Parameters
24
Outputs
Output, Error
Credentials
Shopify API

Shopify

Manage Shopify orders and products

Overview

Shopify is an e-commerce platform that enables businesses to create online stores. This tool connects to the Shopify Admin REST API to manage orders (create, read, update, delete) and products (create, read, update, delete). It supports filtering, pagination, and all standard CRUD operations for both resources.

Category: Sales
Tool Name: shopify
Version: 1

Appearance: Icon: si-shopify | Color: #96bf48

Node Type

Action — processes input items and produces output

Input / Output

DirectionPort(s)
InputInput
OutputOutput, Error

Credentials

This tool requires Shopify API credentials. See the Credentials Guide for setup instructions.

Resources

ResourceValue
Orderorder
Productproduct

Operations

Which operations are available depends on the selected resource — see the parameter subsections below.

OperationValueDescription
CreatecreateCreate an order or a product
DeletedeleteDelete an order or a product
GetgetGet a single order or product
Get ManygetAllGet many orders or products
UpdateupdateUpdate an order or a product

Parameters

Order: Create

ParameterTypeRequiredDefaultDescription
Line Items (limeItemsUi)fixedCollectionNo{}Line items for the order. At least one is required.
— Product ID (productId)stringNoThe ID of the product. Find in Shopify Admin: Products > click product > ID is in the URL.
— Variant IDstringNoThe ID of the product variant.
— TitlestringNoThe title of the product.
— GramsstringNoThe weight of the item in grams.
— QuantitynumberNo1The number of items that were purchased.
— PricestringNoThe price of the line item.
Additional FieldscollectionNo{}
— Billing AddressfixedCollectionNo{}
— — First NamestringNo
— — Last NamestringNo
— — CompanystringNo
— — CountrystringNo
— — Address Line 1stringNo
— — Address Line 2stringNo
— — CitystringNo
— — ProvincestringNo
— — Zip CodestringNo
— — PhonestringNo
— Discount CodesfixedCollectionNo{}
— — AmountstringNoThe amount that’s deducted from the order total.
— — CodestringNoThe discount code.
— — TypeoptionsNofixedAmountThe type of discount.
Options: fixedAmount (applies amount as a unit of the store’s currency), percentage (applies a discount of amount as a percentage of the order total), shipping (applies a free shipping discount on orders that have a shipping rate less than or equal to amount)
— EmailstringNoThe customer’s email address.
— Fulfillment StatusoptionsNoThe order’s status in terms of fulfilled line items.
Options: fulfilled (every line item in the order has been fulfilled), null (none of the line items in the order have been fulfilled), partial (at least one line item in the order has been fulfilled), restocked (every line item in the order has been restocked and the order canceled)
— Inventory BehaviouroptionsNobypassThe behaviour to use when updating inventory.
Options: bypass (do not claim inventory), decrementIgnoringPolicy (ignore the product’s inventory policy and claim inventory), decrementObeyingPolicy (follow the product’s inventory policy and claim inventory, if possible)
— Location IDstringNoThe ID of the physical location where the order was processed. Find in Shopify Admin: Settings > Locations.
— NotestringNoAn optional note that a shop owner can attach to the order.
— Send Fulfillment ReceiptbooleanNofalseWhether to send a shipping confirmation to the customer.
— Send ReceiptbooleanNofalseWhether to send an order confirmation to the customer.
— Shipping AddressfixedCollectionNo{}
— — First NamestringNo
— — Last NamestringNo
— — CompanystringNo
— — CountrystringNo
— — Address Line 1stringNo
— — Address Line 2stringNo
— — CitystringNo
— — ProvincestringNo
— — Zip CodestringNo
— — PhonestringNo
— Source NamestringNoWhere the order originated. Can be set only during order creation, and is not writeable afterwards.
— TagsstringNoTags attached to the order, formatted as a string of comma-separated values.
— TestbooleanNofalseWhether this is a test order.

Order: Delete

ParameterTypeRequiredDefaultDescription
Order IDstringYes

Order: Get

ParameterTypeRequiredDefaultDescription
Order IDstringYes
Options (options)collectionNo{}
— FieldsstringNoFields the order will return, formatted as a string of comma-separated values. By default all the fields are returned.

Order: Get Many

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Max number of results to return. (shown when Return All is false)
Options (options)collectionNo{}
— Attribution App IDstringNoShow orders attributed to a certain app, specified by the app ID.
— Created At Min (createdAtMin)stringNoShow orders created at or after date (ISO 8601).
— Created At Max (createdAtMax)stringNoShow orders created at or before date (ISO 8601).
— Financial StatusoptionsNoanyFilter orders by their financial status.
Options: any, authorized, paid, partiallyPaid, partiallyRefunded, pending, refunded, unpaid, voided
— Fulfillment StatusoptionsNoanyFilter orders by their fulfillment status.
Options: any, partial, shipped, unfulfilled, unshipped
— FieldsstringNoFields the orders will return, formatted as a string of comma-separated values.
— IDsstringNoRetrieve only orders specified by a comma-separated list of order IDs.
— Processed At MaxstringNoShow orders imported at or before date (ISO 8601).
— Processed At MinstringNoShow orders imported at or after date (ISO 8601).
— StatusoptionsNoopenFilter orders by their status.
Options: any, cancelled, closed, open
— Since IDstringNoShow orders after the specified ID.
— Updated At Max (updatedAtMax)stringNoShow orders last updated at or before date (ISO 8601).
— Updated At Min (updatedAtMin)stringNoShow orders last updated at or after date (ISO 8601).

Order: Update

ParameterTypeRequiredDefaultDescription
Order IDstringYes
Update FieldscollectionNo{}
— EmailstringNoThe customer’s email address.
— Location IDstringNoThe ID of the physical location where the order was processed. Find in Shopify Admin: Settings > Locations.
— NotestringNoAn optional note that a shop owner can attach to the order.
— Shipping AddressfixedCollectionNo{}
— — First NamestringNo
— — Last NamestringNo
— — CompanystringNo
— — CountrystringNo
— — Address Line 1stringNo
— — Address Line 2stringNo
— — CitystringNo
— — ProvincestringNo
— — Zip CodestringNo
— — PhonestringNo
— Source NamestringNoWhere the order originated.
— TagsstringNoTags attached to the order, formatted as a string of comma-separated values.

Product: Create

ParameterTypeRequiredDefaultDescription
TitlestringYesThe name of the product.
Additional FieldscollectionNo{}
— Body HTMLstringNoA description of the product. Supports HTML formatting.
— HandlestringNoA unique human-friendly string for the product. Automatically generated from the product’s title.
— ImagescollectionNo{}A list of product image objects.
— — Created AtstringNo
— — IDnumberNo
— — PositionnumberNo
— — Product ID (product_id)numberNo
— — SourcestringNoSpecifies the location of the product image URL.
— — WidthnumberNo
— — HeightnumberNo
— — Updated AtstringNo
— Options (productOptions)fixedCollectionNo{}The custom product property names like Size, Color, and Material. You can add up to 3 options of up to 255 characters each.
— — NamestringNoOption’s name.
— — ValuestringNoOption’s values.
— Product TypestringNoA categorization for the product used for filtering and searching products.
— Published AtstringNoThe date and time (ISO 8601 format) when the product was published.
— Published ScopeoptionsNo
Options: global (published to both Online Store and Point of Sale), web (published to the Online Store only)
— TagsstringNoA string of comma-separated tags for filtering and search.
— Template SuffixstringNoThe suffix of the Liquid template used for the product page.
— VendorstringNoThe name of the product’s vendor.

Product: Delete

ParameterTypeRequiredDefaultDescription
Product ID (productId)stringYes

Product: Get

ParameterTypeRequiredDefaultDescription
Product ID (productId)stringYes
Additional FieldscollectionNo{}
— FieldsstringNoFields the product will return, formatted as a string of comma-separated values.

Product: Get Many

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Max number of results to return. (shown when Return All is false)
Additional FieldscollectionNo{}
— Collection IDstringNoFilter results by product collection ID.
— Created At Max (created_at_max)stringNoShow products created before date (ISO 8601).
— Created At Min (created_at_min)stringNoShow products created after date (ISO 8601).
— FieldsstringNoShow only certain fields, specified by a comma-separated list of field names.
— HandlestringNoFilter results by product handle.
— IDsstringNoReturn only products specified by a comma-separated list of product IDs.
— Presentment CurrenciesstringNoReturn presentment prices in only certain currencies (ISO 4217 codes, comma-separated).
— Product TypestringNoFilter results by product type.
— Published At MaxstringNoShow products published before date (ISO 8601).
— Published At MinstringNoShow products published after date (ISO 8601).
— Published StatusoptionsNoanyReturn products by their published status.
Options: any (show all products), published (show only published products), unpublished (show only unpublished products)
— TitlestringNoFilter results by product title.
— Updated At Max (updated_at_max)stringNoShow products last updated before date (ISO 8601).
— Updated At Min (updated_at_min)stringNoShow products last updated after date (ISO 8601).
— VendorstringNoFilter results by product vendor.

Product: Update

ParameterTypeRequiredDefaultDescription
Product ID (productId)stringYes
Update FieldscollectionNo{}
— Body HTMLstringNoA description of the product. Supports HTML formatting.
— HandlestringNoA unique human-friendly string for the product.
— ImagescollectionNo{}A list of product image objects.
— — Created AtstringNo
— — IDnumberNo
— — PositionnumberNo
— — Product ID (product_id)numberNo
— — SourcestringNoSpecifies the location of the product image URL.
— — WidthnumberNo
— — HeightnumberNo
— — Updated AtstringNo
— Options (productOptions)fixedCollectionNo{}The custom product property names like Size, Color, and Material.
— — NamestringNo
— — ValuestringNo
— Product TypestringNoA categorization for the product.
— Published AtstringNoThe date and time (ISO 8601 format) when the product was published.
— Published ScopeoptionsNo
Options: global (published to both Online Store and Point of Sale), web (published to the Online Store only)
— TagsstringNoA string of comma-separated tags for filtering and search.
— Template SuffixstringNoThe suffix of the Liquid template used for the product page.
— TitlestringNoThe name of the product.
— VendorstringNoThe name of the product’s vendor.

All Operations

ParameterTypeRequiredDefaultDescription
Max ConcurrencynumberNo10Maximum number of items to process concurrently.

Output Data

The Shopify response is merged onto the input item JSON — the incoming fields stay on the item, and any field whose name also appears in the Shopify record is overwritten by Shopify’s value. Binary data on the input item is forwarded unchanged.

  • Create, Get and Update produce one output item per input item, carrying the order or product object exactly as Shopify returned it.
  • Get Many fans out: one output item per record returned, each one a copy of the input item merged with that record. When the store returns nothing, a single item is emitted with results set to an empty array instead. Turning Return All on follows Shopify’s pagination until every page has been read; leaving it off returns at most Limit records in one request.
  • Delete returns no body, so the item is merged with a fixed success flag:
{
  "success": true
}
  • Order: Create submits the order as a test order unless you add Test to Additional Fields and set it yourself — the created order then comes back with test set to true. Add Test and set it to false to create a live order.

The tool does not reshape the record it receives, so the available fields are whatever the Shopify Admin API returns for that resource:

Resource / OperationWhat lands on the output item
Order: Create, Get, UpdateThe order object returned by Shopify
Order: Get ManyOne item per order, each carrying that order’s object
Order: Deletesuccess: true
Product: Create, Get, UpdateThe product object returned by Shopify
Product: Get ManyOne item per product, each carrying that product’s object
Product: Deletesuccess: true

When Fields is set, Shopify returns only the fields you asked for, so only those land on the item.

Reference the result downstream by expression, e.g. {{ $json.id }}.

Usage Examples

  • Create a new order in Shopify with line items
  • Get all open orders from a Shopify store
  • Update product details in Shopify
  • Delete a product from Shopify

Example Configuration

Create an order from an upstream item, with a shipping address and an order confirmation email:

{
  "type": "shopify",
  "parameters": {
    "resource": "order",
    "operation": "create",
    "limeItemsUi": {
      "lineItemValues": [
        {
          "variantId": "{{ $json.variantId }}",
          "title": "{{ $json.productTitle }}",
          "quantity": 2,
          "price": "29.99"
        }
      ]
    },
    "additionalFields": {
      "email": "{{ $json.customerEmail }}",
      "note": "Rush delivery",
      "sendReceipt": true,
      "test": false,
      "shippingAddressUi": {
        "shippingAddressValues": {
          "firstName": "John",
          "lastName": "Doe",
          "address1": "123 Main St",
          "city": "New York",
          "province": "NY",
          "zip": "10001",
          "country": "United States"
        }
      }
    }
  }
}

List the 50 most recent open, paid orders and return only a few fields:

{
  "type": "shopify",
  "parameters": {
    "resource": "order",
    "operation": "getAll",
    "returnAll": false,
    "limit": 50,
    "options": {
      "status": "open",
      "financialStatus": "paid",
      "createdAtMin": "2024-01-01T00:00:00Z",
      "fields": "id,email,total_price,created_at"
    }
  }
}

Update an existing order’s note, tags and contact email:

{
  "type": "shopify",
  "parameters": {
    "resource": "order",
    "operation": "update",
    "orderId": "{{ $json.orderId }}",
    "updateFields": {
      "note": "Updated delivery instructions",
      "tags": "priority,expedited",
      "email": "{{ $json.email }}"
    }
  }
}

Create a product with a description, vendor and two custom options:

{
  "type": "shopify",
  "parameters": {
    "resource": "product",
    "operation": "create",
    "title": "{{ $json.name }}",
    "additionalFields": {
      "body_html": "<p>{{ $json.description }}</p>",
      "product_type": "Electronics",
      "vendor": "Tech Corp",
      "tags": "electronics,gadget,new",
      "published_scope": "global",
      "productOptions": {
        "option": [
          { "name": "Color", "value": "Blue" },
          { "name": "Size", "value": "Large" }
        ]
      }
    }
  }
}

Page through every published product from one vendor:

{
  "type": "shopify",
  "parameters": {
    "resource": "product",
    "operation": "getAll",
    "returnAll": true,
    "additionalFields": {
      "product_type": "Electronics",
      "vendor": "Tech Corp",
      "published_status": "published",
      "fields": "id,title,handle,product_type,created_at"
    }
  }
}

Error Handling

ModeBehavior
stopHalts workflow on first error
continueSkips failed items, passes successful ones through
errorPortRoutes failed items to Error output port

Tips

Manage Shopify store orders and products (CRUD) via the Admin REST API.

Common Patterns

Basic Order Management

  1. Create Order: Set resource to "order", operation to "create", and provide limeItemsUi
  2. Get Order: Use operation "get" with specific orderId
  3. List Orders: Use operation "getAll" with appropriate filters in options
  4. Update Order: Use operation "update" with orderId and updateFields

Basic Product Management

  1. Create Product: Set resource to "product", operation to "create", and provide title
  2. Get Product: Use operation "get" with specific productId
  3. List Products: Use operation "getAll" with filters in additionalFields
  4. Update Product: Use operation "update" with productId and updateFields

Key Structure Rules

  • fixedCollection types (like limeItemsUi): Always use the documented groupKey
  • collection types (like additionalFields, options, updateFields): Use flat object structure
  • Conditional parameters: Parameters are only available when their display conditions are met
  • Required vs Optional: limeItemsUi is required for order creation, title is required for product creation

Frequently asked questions

What does creating an order need?

Line items — the order's contents are supplied through the line-items collection, since an order with nothing in it has no meaning.

How do I filter a product or order listing?

Through the options collection on getAll, which is where the API's filter parameters live rather than at the top level.

How do I react to store activity?

Use the Shopify Trigger, which fires on event topics such as orders/create and products/update with HMAC verification.

Which credential does it need?

A Shopify API credential for the store you are managing.

Build with the Shopify node

Drop it into a workflow, wire it to an agent, or call it on a schedule. You'll need Shopify API credentials first.

Open BusyBot

Last updated . Spotted something wrong? Tell us.