Resources · n8n integration

Shopify n8n integrationAutomate Shopify with n8n.

Most stores lose hours re-typing order data into the tools that sit next to the checkout. A Shopify n8n integration closes that gap: the Shopify node covers 10 operations on orders and products, the Shopify Trigger listens to 59 webhook events, and both run on one credential.

Verified Trustpilot reviews · AI, automation & growth agency

Why automate

What does a Shopify n8n integration actually give you?

A Shopify n8n integration is two nodes working together. The Shopify Trigger receives store events over a webhook, which is a URL Shopify calls the moment something happens, and the Shopify node calls the Admin API to read or write orders and products. Between them sits whatever you need: a filter, an AI step, a message, a row in a spreadsheet. The whole thing runs inside n8n, on n8n Cloud or on a server you host yourself.

Take a paid order first. The trigger fires on orders/paid, a Get an order step pulls the full record because the webhook payload rarely carries every line you need, and the result lands as a row in Google Sheets for the finance side. Same workflow, one more branch: the recap goes to the shipping channel in Slack so the warehouse reads it without opening the admin.

Stock is the second classic. inventory_levels/update fires on every movement, a filter keeps only the variants that fell under your own threshold, and the alert reaches the buyer in charge. Nobody watches a stock screen all day.

Catalog housekeeping is the third. A nightly run lists products with Return All, compares them to the supplier feed, and pushes an Update a product step where a price or a description drifted. Payment side, a customer created in Shopify can be mirrored into Stripe by the same workflow.

Now the honest limit. The node exposes 2 resources, Order and Product, and nothing else. Customers, fulfillments, discounts, draft orders: none of them have an operation here, even though the trigger listens to their events. When you need one, the HTTP Request node calls that Admin API endpoint directly and reuses the exact same Shopify credential, so nothing extra to configure.

Two more things to know before you build. The trigger holds one topic per node, so watching orders and products at once means two trigger nodes. And on the Get Many operations, leaving Return All off stops the run at Limit, which will silently truncate a catalog export. If you are still choosing your platform, the n8n review goes through the trade-offs.

Connect

How do you connect Shopify to n8n?

  1. 01

    Pick your authentication method

    Shopify credentials come in three flavors in n8n. Access token is the recommended one for a private app on a single store, and a regular admin can create it. OAuth2 targets public apps and needs a Shopify partner account, with a Client ID, a Client Secret and the n8n OAuth Redirect URL pasted into the app configuration. API key is deprecated: Shopify no longer generates keys with passwords, so skip it on a new setup.

  2. 02

    Create the custom app and its scopes

    In Shopify, go to Admin, then Settings, then Apps and sales channels, then Develop apps, then Create a custom app. Give it an app name and an app developer, which can be the store owner or any account holding the Develop apps permission. Open Select scopes and, in the Admin API access scopes section, tick read_orders, write_orders, read_products and write_products to cover everything the node does. Save, then Install app.

  3. 03

    Fill the n8n credential

    Back in n8n, open Credentials and create a Shopify credential. The Shop Subdomain is the part before .myshopify.com, so a store at https://n8n.myshopify.com has the subdomain n8n. In the app's API Credentials section, copy the Admin API Access Token into Access Token and the API Secret Key into APP Secret Key. The credential is saved once and shows up in the dropdown of both the node and the trigger.

Triggers

What can the Shopify Trigger listen to?

Shopify Trigger is the node that starts a workflow when something happens in Shopify. It listens to 59 events, listed below by family. Pick one or several, activate the workflow: n8n registers the webhook on your Shopify account.

What you see in n8n

Every event, by family

One row per object, one chip per action. The event to tick in the node is object.action; hover a chip to read exactly when it fires.

app/uninstalled.*1
  • app/uninstalled.
    • app/uninstalled
carts/create.*1
  • carts/create.
    • carts/create
carts/update.*1
  • carts/update.
    • carts/update
checkouts/create.*1
  • checkouts/create.
    • checkouts/create
checkouts/delete.*1
  • checkouts/delete.
    • checkouts/delete
checkouts/update.*1
  • checkouts/update.
    • checkouts/update
collection_listings/add.*1
  • collection_listings/add.
    • collection_listings/add
collection_listings/remove.*1
  • collection_listings/remove.
    • collection_listings/remove
collection_listings/update.*1
  • collection_listings/update.
    • collection_listings/update
collections/create.*1
  • collections/create.
    • collections/create
collections/delete.*1
  • collections/delete.
    • collections/delete
collections/update.*1
  • collections/update.
    • collections/update
customer_groups/create.*1
  • customer_groups/create.
    • customer_groups/create
customer_groups/delete.*1
  • customer_groups/delete.
    • customer_groups/delete
customer_groups/update.*1
  • customer_groups/update.
    • customer_groups/update
customers/create.*1
  • customers/create.
    • customers/create
customers/delete.*1
  • customers/delete.
    • customers/delete
customers/disable.*1
  • customers/disable.
    • customers/disable
customers/enable.*1
  • customers/enable.
    • customers/enable
customers/update.*1
  • customers/update.
    • customers/update
draft_orders/create.*1
  • draft_orders/create.
    • draft_orders/create
draft_orders/delete.*1
  • draft_orders/delete.
    • draft_orders/delete
draft_orders/update.*1
  • draft_orders/update.
    • draft_orders/update
fulfillment_events/create.*1
  • fulfillment_events/create.
    • fulfillment_events/create
fulfillment_events/delete.*1
  • fulfillment_events/delete.
    • fulfillment_events/delete
fulfillments/create.*1
  • fulfillments/create.
    • fulfillments/create
fulfillments/update.*1
  • fulfillments/update.
    • fulfillments/update
inventory_items/create.*1
  • inventory_items/create.
    • inventory_items/create
inventory_items/delete.*1
  • inventory_items/delete.
    • inventory_items/delete
inventory_items/update.*1
  • inventory_items/update.
    • inventory_items/update
inventory_levels/connect.*1
  • inventory_levels/connect.
    • inventory_levels/connect
inventory_levels/disconnect.*1
  • inventory_levels/disconnect.
    • inventory_levels/disconnect
inventory_levels/update.*1
  • inventory_levels/update.
    • inventory_levels/update
locales/create.*1
  • locales/create.
    • locales/create
locales/update.*1
  • locales/update.
    • locales/update
locations/create.*1
  • locations/create.
    • locations/create
locations/delete.*1
  • locations/delete.
    • locations/delete
locations/update.*1
  • locations/update.
    • locations/update
order_transactions/create.*1
  • order_transactions/create.
    • order_transactions/create
orders/cancelled.*1
  • orders/cancelled.
    • orders/cancelled
orders/create.*1
  • orders/create.
    • orders/create
orders/delete.*1
  • orders/delete.
    • orders/delete
orders/fulfilled.*1
  • orders/fulfilled.
    • orders/fulfilled
orders/paid.*1
  • orders/paid.
    • orders/paid
orders/partially_fulfilled.*1
  • orders/partially_fulfilled.
    • orders/partially_fulfilled
orders/updated.*1
  • orders/updated.
    • orders/updated
product_listings/add.*1
  • product_listings/add.
    • product_listings/add
product_listings/remove.*1
  • product_listings/remove.
    • product_listings/remove
product_listings/update.*1
  • product_listings/update.
    • product_listings/update
products/create.*1
  • products/create.
    • products/create
products/delete.*1
  • products/delete.
    • products/delete
products/update.*1
  • products/update.
    • products/update
refunds/create.*1
  • refunds/create.
    • refunds/create
shop/update.*1
  • shop/update.
    • shop/update
tender_transactions/create.*1
  • tender_transactions/create.
    • tender_transactions/create
themes/create.*1
  • themes/create.
    • themes/create
themes/delete.*1
  • themes/delete.
    • themes/delete
themes/publish.*1
  • themes/publish.
    • themes/publish
themes/update.*1
  • themes/update.
    • themes/update

Configuration notes

01Set up the Shopify TriggerThe Shopify Trigger registers a webhook with your store when the workflow is activated, so Shopify calls the n8n URL itself and each event lands in a run a few seconds later. Nothing is polled, nothing is scheduled, and deactivating the workflow removes the registration.

The Shopify Trigger registers a webhook with your store when the workflow is activated, so Shopify calls the n8n URL itself and each event lands in a run a few seconds later. Nothing is polled, nothing is scheduled, and deactivating the workflow removes the registration.

Key parameters

  • Trigger On: the single topic the node listens to, picked from the 59 events in the list. There is no wildcard option, so one node watches one topic and two topics need two trigger nodes.
When to use it
any time the store is the starting point. If the workflow starts somewhere else, from a form or a nightly schedule, you use the Shopify node on its own instead and the trigger stays out of the picture. The credential is the same one the node uses, so grant it the scopes covering the object you watch.
02Orders, payments and refundsThe heaviest family, and the reason most stores open n8n: 13 events covering the life of an order. orders/create, orders/updated, orders/paid, orders/fulfilled, orders/partially_fulfilled, orders/cancelled and orders/delete follow the order itself, while order_transactions/create and tender_transactions/create report the money movements attached to it. refunds/create fires when a refund is issued, and the three draft_orders/* events track quotes built in the admin before they become real orders. Trigger On holds a single topic, so a workflow that has to answer both a payment and a cancellation runs two trigger nodes side by side.

The heaviest family, and the reason most stores open n8n: 13 events covering the life of an order. orders/create, orders/updated, orders/paid, orders/fulfilled, orders/partially_fulfilled, orders/cancelled and orders/delete follow the order itself, while order_transactions/create and tender_transactions/create report the money movements attached to it. refunds/create fires when a refund is issued, and the three draft_orders/* events track quotes built in the admin before they become real orders. Trigger On holds a single topic, so a workflow that has to answer both a payment and a cancellation runs two trigger nodes side by side.

When to use it
pick orders/paid rather than orders/create when the workflow spends money or ships something, because an order can exist long before it is paid. The draft order events belong to a different job, the one where quotes are prepared by hand in the admin and nobody has paid anything yet.
Use cases
invoice creation on payment, a cancellation notice sent to the warehouse, a refund logged in the finance sheet the day it happens.
03Customers, carts and checkoutsEverything that happens on the buyer side gathers 13 events here. customers/create, customers/update and customers/delete track the record itself, customers/enable and customers/disable report account activation and deactivation, and the three customer_groups/* events fire when a segment is created, updated or removed. Ahead of the sale, carts/create and carts/update follow the basket, while checkouts/create, checkouts/update and checkouts/delete follow the checkout itself. Carts and checkouts fire while the buyer is still deciding, so a branch built on them runs for shoppers who may never place an order and needs a condition of its own.

Everything that happens on the buyer side gathers 13 events here. customers/create, customers/update and customers/delete track the record itself, customers/enable and customers/disable report account activation and deactivation, and the three customer_groups/* events fire when a segment is created, updated or removed. Ahead of the sale, carts/create and carts/update follow the basket, while checkouts/create, checkouts/update and checkouts/delete follow the checkout itself. Carts and checkouts fire while the buyer is still deciding, so a branch built on them runs for shoppers who may never place an order and needs a condition of its own.

When to use it
abandoned checkout work starts on checkouts/update, with your own waiting time handled in n8n rather than in Shopify. For anything tied to the account rather than the purchase, customers/enable and customers/disable are more precise than a plain update.
Use cases
a new buyer pushed into the CRM, a segment change mirrored into the mailing tool, a reminder sequence built on checkout events.
04Products, collections and listingsThe catalog side carries 12 events, split in two halves that are easy to confuse. products/create, products/update and products/delete fire on the product record in the admin, while product_listings/add, product_listings/remove and product_listings/update fire on its publication to a sales channel. Collections work the same way: collections/create, collections/update and collections/delete on the collection, collection_listings/add, collection_listings/remove and collection_listings/update on the channel side. A product can change in the admin without any listing event, and it can appear on a channel without its data moving an inch.

The catalog side carries 12 events, split in two halves that are easy to confuse. products/create, products/update and products/delete fire on the product record in the admin, while product_listings/add, product_listings/remove and product_listings/update fire on its publication to a sales channel. Collections work the same way: collections/create, collections/update and collections/delete on the collection, collection_listings/add, collection_listings/remove and collection_listings/update on the channel side. A product can change in the admin without any listing event, and it can appear on a channel without its data moving an inch.

When to use it
take the listing events when what matters is the product being visible to shoppers, and the product events when what matters is the data. When the event alone is not enough to decide, chain product.get behind the trigger and read the current record before branching.
Use cases
a new product announced to the team, a catalog mirror kept in sync, a description checked before it goes live.
05Fulfillment, stock, locations and store settingsBehind the storefront sit 13 more events. fulfillments/create and fulfillments/update follow shipments, fulfillment_events/create and fulfillment_events/delete follow the tracking steps inside them. Stock has two levels: the three inventory_items/* events on the item itself, and inventory_levels/connect, inventory_levels/disconnect and inventory_levels/update on the quantity held at a given place, with locations/create, locations/update and locations/delete on the places themselves.

Behind the storefront sit 13 more events. fulfillments/create and fulfillments/update follow shipments, fulfillment_events/create and fulfillment_events/delete follow the tracking steps inside them. Stock has two levels: the three inventory_items/* events on the item itself, and inventory_levels/connect, inventory_levels/disconnect and inventory_levels/update on the quantity held at a given place, with locations/create, locations/update and locations/delete on the places themselves.

Store settings add 8 more: the four themes/* events including themes/publish, the two locales/* events, shop/update and app/uninstalled.

When to use it
inventory_levels/update is the one to take for stock work, since it fires on the quantity held at a given location, while the inventory_items/* events react to the item record itself. Keep app/uninstalled for housekeeping, as it tells the workflow the store is no longer connected.
Use cases
a tracking link sent on fulfillment, a low stock alert per warehouse, a message when a theme goes live on the storefront.
Actions

What can the Shopify node do?

The Shopify node exposes 10 operations across 2 resources. For each one: the node as you configure it in n8n, the required fields, and our field notes.

Resources × operations matrix
ResourceCreateGetGet ManyUpdateDelete
Order✓✓✓✓✓
Product✓✓✓✓✓

Order

5 operations
01

Create an order

order.create

What you see in n8n

Notes & use cases

This operation writes a new order into the store and returns it with its Shopify identifier, ready to reuse in the next steps.

Key parameters

  • Line Items: each line carries Product Name or ID, Variant ID, Quantity and Price, so the order reflects what was actually bought.
  • Inventory Behaviour: bypass claims no stock, decrementObeyingPolicy follows the product policy, decrementIgnoringPolicy takes the units anyway.
  • Send Receipt: switched on, Shopify emails the order confirmation to the buyer.
Use cases
orders taken over the phone or on a marketplace land in the store with the right stock movement behind them.
02

Delete an order

order.delete

What you see in n8n

Notes & use cases

Removes an order from the store permanently. Only the confirmation comes back, so copy whatever you still need into a sheet or a database before this node runs.

Key parameters

  • Order ID: the identifier of the order to remove, most often {{ $json.id }} coming from a trigger or from a Get many orders step just above.
Use cases
a clean-up workflow that clears the test orders left behind after a checkout change was validated, instead of deleting them one by one in the admin.
03

Get an order

order.get

What you see in n8n

Notes & use cases

Reads a single order in full: buyer, line items, totals, addresses. This is the step that usually follows a trigger, because a webhook payload rarely holds everything the next tool expects.

Key parameters

  • Order ID: which order to read, typically an expression pointing at the identifier the trigger delivered.
  • Fields: a comma-separated list of the fields to return. Left empty, the whole order comes back, which keeps the execution data readable when you debug.
Use cases
enriching a payment alert with the real basket before it reaches the shipping channel.
04

Get many orders

order.getAll

What you see in n8n

Notes & use cases

Lists orders from the store, with a solid set of filters for narrowing the window instead of pulling everything.

Key parameters

  • Return All: on, n8n walks the pages until the store has no more orders to give; off, it stops at Limit, which quietly truncates an export.
  • Financial Status: keeps only paid, refunded, unpaid and the other payment states.
  • Created At Min and Created At Max: the date window, the pair you use for a daily or monthly run.
Use cases
the nightly export of yesterday's paid orders into the accounting sheet.
05

Update an order

order.update

What you see in n8n

Notes & use cases

Changes an order that already exists, without touching its line items. Useful once the workflow has learned something the store does not know yet. Watch out for Source Name, offered in Update Fields but only writable at creation time.

Key parameters

  • Order ID: the order to modify, required, otherwise the node stops the execution.
  • Tags: a string of comma-separated values, the simplest way to mark an order as checked or exported.
  • Note: the free note a shop owner can attach to the order.
Use cases
tagging every order already sent to the accountant.

Product

5 operations
06

Create a product

product.create

What you see in n8n

Notes & use cases

Adds a product to the catalog and gives back the created record with its identifier and its handle.

Key parameters

  • Title: the product name, the only required field, which Shopify also turns into the Handle if you leave that one empty.
  • Body HTML: the description, HTML formatting supported.
  • Published Scope: web publishes to the Online Store channel only, global adds the Point of Sale channel.
  • Tags: up to 250 tags of 255 characters each, comma-separated.
Use cases
a supplier feed turned into real products, description written by an AI step just before.
07

Delete a product

product.delete

What you see in n8n

Notes & use cases

Erases a product from the catalog, along with its presence on the sales channels. There is no undo on the Shopify side, so a human validation step before it is rarely wasted.

Key parameters

  • Product ID: the identifier of the product to erase. Shopify expects that number, never the product title, which is the mistake that sends this node into a 404.
Use cases
discontinued references removed at the end of a season, driven by a list kept in a spreadsheet.
08

Get a product

product.get

What you see in n8n

Notes & use cases

Pulls one product with its variants, images and options, the way the Admin API returns it.

Key parameters

  • Product ID: the product to read, often {{ $json.id }} handed over by a catalog trigger.
  • Fields: a comma-separated list limiting what comes back. Left empty, every field is returned, which is fine while you build and heavy once the workflow runs on the whole catalog.
Use cases
checking a price and a stock policy before a workflow republishes the product to a marketplace.
09

Get many products

product.getAll

What you see in n8n

Notes & use cases

Walks the catalog and returns the products that match your filters, which is the starting point of every sync workflow.

Key parameters

  • Return All: on for a complete catalog, off to stop at Limit while you are still testing the branch.
  • Published Status: published, unpublished or any, to separate what shoppers see from what they do not.
  • Vendor and Product Type: the two filters that carve the catalog by supplier or by category.
  • Presentment Currencies: ISO 4217 codes, when you need prices in a given currency.
Use cases
a weekly catalog snapshot compared against the supplier file.
10

Update a product

product.update

What you see in n8n

Notes & use cases

Edits an existing product without recreating it, field by field, and returns the updated record.

Key parameters

  • Product ID: the product to edit, required.
  • Published At: an ISO 8601 date and time. Set it to null and the product leaves the Online Store channel, which is how a workflow unpublishes without deleting.
  • Options: the custom property names such as Size or Color, up to 3 options of 255 characters each.
  • Images: the list of image objects attached to the product.
Use cases
a price correction applied to a whole vendor range in one run.
Need help

Need help automating Shopify with n8n?

A person reads every message.

FAQ

Shopify and n8n, the questions that come next

01Is the Shopify n8n integration free?
Yes on the n8n side. The Shopify node and the Shopify Trigger ship with n8n, so there is nothing to install and no extra cost, whether you run n8n Cloud or a self-hosted instance under the Community Edition and its Sustainable Use license. A workflow behaves the same in both cases, which means you can build it on Cloud and move it later. What your Shopify plan costs is a separate conversation and is not covered here. The only real budget question is hosting: run it yourself and you pay for the server, use n8n Cloud and you pay n8n.
02What credentials and permissions do you need for Shopify in n8n?
Three methods exist, and one is recommended. The access token suits a private app on a single store and a regular admin can create it: you need the Shop Subdomain, the Admin API Access Token and the API Secret Key, taken from the custom app you install on the store. OAuth2 is for public apps and requires a Shopify partner account with a Client ID and a Client Secret. The API key method is deprecated because Shopify no longer generates keys with passwords. On scopes, add read_orders, write_orders, read_products and write_products to cover everything the node can do.
03What are the limits of the Shopify node in n8n?
The node covers 2 resources, Order and Product, for a total of 10 operations. Customers, fulfillments, inventory levels, discounts and draft orders have no operation here, even though the trigger listens to their events, which surprises people who start from the event list. For those, the HTTP Request node calls the Admin API endpoint directly and reuses the same Shopify credential through predefined authentication, so nothing new to set up. Second limit worth remembering: on Get many orders and Get many products, leaving Return All off stops the run at Limit and hands you a partial export without any warning.
04Does the Shopify Trigger react in real time?
Yes. The trigger works by webhook: n8n registers the URL with your store when you activate the workflow, Shopify calls that URL itself, and the event reaches your workflow within a few seconds. Nothing is polled, so no interval to tune and no delay to accept. One detail shapes how you build: the Trigger On parameter holds a single topic out of the 59 available, and there is no wildcard, so watching paid orders and new products at the same time means two trigger nodes feeding the same branch, or two separate workflows.
05n8n or Make for a Shopify store?
It depends on three things, and the event coverage is not one of them since both read the same Shopify webhooks. First, hosting: n8n runs on your own server with Docker or npm, or on n8n Cloud, while Make exists only as a hosted platform. If order and customer data has to stay on infrastructure you control, that settles it. Second, the cost model: Make bills per operation, which grows with order volume, while a self-hosted n8n bills for the server. Third, the way you think: both are visual, n8n adds code steps when a branch gets specific.