Search all guides

Reference · Tools

Shopify integration

Manage orders and products within a Shopify online store, including creating, retrieving, updating, and deleting these resources.

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.

Works as
Action
Tool name
shopify
Operations
5 — Create , Delete , Get , Get Many , Update
Parameters
24
Outputs
Output, Error
Credentials
Shopify API
Official docs
Shopify docs shopify.dev

What you can build with Shopify

  • 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.

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.

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)stringNo—The ID of the product. Find in Shopify Admin: Products > click product > ID is in the URL.
— Variant IDstringNo—The ID of the product variant.
— TitlestringNo—The title of the product.
— GramsstringNo—The weight of the item in grams.
— QuantitynumberNo1The number of items that were purchased.
— PricestringNo—The 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{}—
— — AmountstringNo—The amount that’s deducted from the order total.
— — CodestringNo—The 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)
— EmailstringNo—The customer’s email address.
— Fulfillment StatusoptionsNo—The 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 IDstringNo—The ID of the physical location where the order was processed. Find in Shopify Admin: Settings > Locations.
— NotestringNo—An 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 NamestringNo—Where the order originated. Can be set only during order creation, and is not writeable afterwards.
— TagsstringNo—Tags 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{}—
— FieldsstringNo—Fields 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 IDstringNo—Show orders attributed to a certain app, specified by the app ID.
— Created At Min (createdAtMin)stringNo—Show orders created at or after date (ISO 8601).
— Created At Max (createdAtMax)stringNo—Show 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
— FieldsstringNo—Fields the orders will return, formatted as a string of comma-separated values.
— IDsstringNo—Retrieve only orders specified by a comma-separated list of order IDs.
— Processed At MaxstringNo—Show orders imported at or before date (ISO 8601).
— Processed At MinstringNo—Show orders imported at or after date (ISO 8601).
— StatusoptionsNoopenFilter orders by their status.
Options: any, cancelled, closed, open
— Since IDstringNo—Show orders after the specified ID.
— Updated At Max (updatedAtMax)stringNo—Show orders last updated at or before date (ISO 8601).
— Updated At Min (updatedAtMin)stringNo—Show orders last updated at or after date (ISO 8601).

Order: Update

ParameterTypeRequiredDefaultDescription
Order IDstringYes——
Update FieldscollectionNo{}—
— EmailstringNo—The customer’s email address.
— Location IDstringNo—The ID of the physical location where the order was processed. Find in Shopify Admin: Settings > Locations.
— NotestringNo—An 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 NamestringNo—Where the order originated.
— TagsstringNo—Tags attached to the order, formatted as a string of comma-separated values.

Product: Create

ParameterTypeRequiredDefaultDescription
TitlestringYes—The name of the product.
Additional FieldscollectionNo{}—
— Body HTMLstringNo—A description of the product. Supports HTML formatting.
— HandlestringNo—A 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——
— — SourcestringNo—Specifies 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.
— — NamestringNo—Option’s name.
— — ValuestringNo—Option’s values.
— Product TypestringNo—A categorization for the product used for filtering and searching products.
— Published AtstringNo—The 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)
— TagsstringNo—A string of comma-separated tags for filtering and search.
— Template SuffixstringNo—The suffix of the Liquid template used for the product page.
— VendorstringNo—The name of the product’s vendor.

Product: Delete

ParameterTypeRequiredDefaultDescription
Product ID (productId)stringYes——

Product: Get

ParameterTypeRequiredDefaultDescription
Product ID (productId)stringYes——
Additional FieldscollectionNo{}—
— FieldsstringNo—Fields 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 IDstringNo—Filter results by product collection ID.
— Created At Max (created_at_max)stringNo—Show products created before date (ISO 8601).
— Created At Min (created_at_min)stringNo—Show products created after date (ISO 8601).
— FieldsstringNo—Show only certain fields, specified by a comma-separated list of field names.
— HandlestringNo—Filter results by product handle.
— IDsstringNo—Return only products specified by a comma-separated list of product IDs.
— Presentment CurrenciesstringNo—Return presentment prices in only certain currencies (ISO 4217 codes, comma-separated).
— Product TypestringNo—Filter results by product type.
— Published At MaxstringNo—Show products published before date (ISO 8601).
— Published At MinstringNo—Show 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)
— TitlestringNo—Filter results by product title.
— Updated At Max (updated_at_max)stringNo—Show products last updated before date (ISO 8601).
— Updated At Min (updated_at_min)stringNo—Show products last updated after date (ISO 8601).
— VendorstringNo—Filter results by product vendor.

Product: Update

ParameterTypeRequiredDefaultDescription
Product ID (productId)stringYes——
Update FieldscollectionNo{}—
— Body HTMLstringNo—A description of the product. Supports HTML formatting.
— HandlestringNo—A unique human-friendly string for the product.
— ImagescollectionNo{}A list of product image objects.
— — Created AtstringNo——
— — IDnumberNo——
— — PositionnumberNo——
— — Product ID (product_id)numberNo——
— — SourcestringNo—Specifies 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 TypestringNo—A categorization for the product.
— Published AtstringNo—The 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)
— TagsstringNo—A string of comma-separated tags for filtering and search.
— Template SuffixstringNo—The suffix of the Liquid template used for the product page.
— TitlestringNo—The name of the product.
— VendorstringNo—The 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 }}.

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

This tool manages orders and products in a Shopify store. It is ideal for creating, retrieving, updating, or deleting specific orders or products, or for listing multiple items. The tool produces updated store data, or details of requested orders and products.

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 Shopify

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 reviewed . Spotted something wrong? Tell us.