- Home
- Resources
- Integrations
- Shopify
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
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.
How do you connect Shopify to n8n?
- 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.
- 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_productsandwrite_productsto cover everything the node does. Save, then Install app. - 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 athttps://n8n.myshopify.comhas the subdomainn8n. 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.
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.*1app/uninstalled.app/uninstalled
carts/create.*1carts/create.carts/create
carts/update.*1carts/update.carts/update
checkouts/create.*1checkouts/create.checkouts/create
checkouts/delete.*1checkouts/delete.checkouts/delete
checkouts/update.*1checkouts/update.checkouts/update
collection_listings/add.*1collection_listings/add. collection_listings/add
collection_listings/remove.*1collection_listings/remove. collection_listings/remove
collection_listings/update.*1collection_listings/update. collection_listings/update
collections/create.*1collections/create.collections/create
collections/delete.*1collections/delete.collections/delete
collections/update.*1collections/update.collections/update
customer_groups/create.*1customer_groups/create. customer_groups/create
customer_groups/delete.*1customer_groups/delete. customer_groups/delete
customer_groups/update.*1customer_groups/update. customer_groups/update
customers/create.*1customers/create.customers/create
customers/delete.*1customers/delete.customers/delete
customers/disable.*1customers/disable.customers/disable
customers/enable.*1customers/enable.customers/enable
customers/update.*1customers/update.customers/update
draft_orders/create.*1draft_orders/create. draft_orders/create
draft_orders/delete.*1draft_orders/delete. draft_orders/delete
draft_orders/update.*1draft_orders/update. draft_orders/update
fulfillment_events/create.*1fulfillment_events/create. fulfillment_events/create
fulfillment_events/delete.*1fulfillment_events/delete. fulfillment_events/delete
fulfillments/create.*1fulfillments/create.fulfillments/create
fulfillments/update.*1fulfillments/update.fulfillments/update
inventory_items/create.*1inventory_items/create. inventory_items/create
inventory_items/delete.*1inventory_items/delete. inventory_items/delete
inventory_items/update.*1inventory_items/update. inventory_items/update
inventory_levels/connect.*1inventory_levels/connect. inventory_levels/connect
inventory_levels/disconnect.*1inventory_levels/disconnect. inventory_levels/disconnect
inventory_levels/update.*1inventory_levels/update. inventory_levels/update
locales/create.*1locales/create.locales/create
locales/update.*1locales/update.locales/update
locations/create.*1locations/create.locations/create
locations/delete.*1locations/delete.locations/delete
locations/update.*1locations/update.locations/update
order_transactions/create.*1order_transactions/create. order_transactions/create
orders/cancelled.*1orders/cancelled.orders/cancelled
orders/create.*1orders/create.orders/create
orders/delete.*1orders/delete.orders/delete
orders/fulfilled.*1orders/fulfilled.orders/fulfilled
orders/paid.*1orders/paid.orders/paid
orders/partially_fulfilled.*1orders/partially_fulfilled. orders/partially_fulfilled
orders/updated.*1orders/updated.orders/updated
product_listings/add.*1product_listings/add. product_listings/add
product_listings/remove.*1product_listings/remove. product_listings/remove
product_listings/update.*1product_listings/update. product_listings/update
products/create.*1products/create.products/create
products/delete.*1products/delete.products/delete
products/update.*1products/update.products/update
refunds/create.*1refunds/create.refunds/create
shop/update.*1shop/update.shop/update
tender_transactions/create.*1tender_transactions/create. tender_transactions/create
themes/create.*1themes/create.themes/create
themes/delete.*1themes/delete.themes/delete
themes/publish.*1themes/publish.themes/publish
themes/update.*1themes/update.themes/update
Configuration notes
01Set up the Shopify Trigger
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.
02Orders, payments and refunds
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.
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.03Customers, carts and checkouts
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.
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.04Products, collections and listings
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.
product.get behind the trigger and read the current record before branching.05Fulfillment, stock, locations and store settings
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.
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.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.
Operations index
Order
5 operationsCreate an order
order.createWhat 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:
bypassclaims no stock,decrementObeyingPolicyfollows the product policy,decrementIgnoringPolicytakes the units anyway. - Send Receipt: switched on, Shopify emails the order confirmation to the buyer.
Delete an order
order.deleteWhat 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.
Get an order
order.getWhat 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.
Get many orders
order.getAllWhat 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,unpaidand the other payment states. - Created At Min and Created At Max: the date window, the pair you use for a daily or monthly run.
Update an order
order.updateWhat 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.
Product
5 operationsCreate a product
product.createWhat 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:
webpublishes to the Online Store channel only,globaladds the Point of Sale channel. - Tags: up to 250 tags of 255 characters each, comma-separated.
Delete a product
product.deleteWhat 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.
Get a product
product.getWhat 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.
Get many products
product.getAllWhat 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,unpublishedorany, 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.
Update a product
product.updateWhat 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.
Need help automating Shopify with n8n?
A person reads every message.
