How to Connect n8n to Shopify: The Complete Integration Guide (2025)
Shopify runs your storefront; n8n runs everything that happens around it. Connect the two and every order, refund, and new customer becomes a trigger you can act on — syncing to your CRM, alerting your team, updating inventory, or firing a personalized follow-up. Here’s the complete 2025 setup.
Step 1 — Create a custom app in Shopify
In your Shopify admin, go to Settings → Apps and sales channels → Develop apps and click Create an app. Under Configuration, grant the Admin API scopes you need — typically read_orders, write_orders, read_products, write_products, and read_customers. Install the app and copy the Admin API access token (it starts with shpat_ and is shown only once).
Step 2 — Add the credential in n8n
Create a new Shopify Access Token API credential. Paste your store subdomain (the part before .myshopify.com), your API key, password/token, and the access token. Save and you’re connected.
Step 3 — Trigger on store events
The Shopify Trigger node subscribes to webhooks — so it fires in real time, not on a poll. Popular topics:
orders/create— a new order was placedorders/paid— payment capturedcustomers/create— a new customer signed uprefunds/create— a refund was issuedcheckouts/create— the start of an abandoned-cart flow
⚡ Skip the build: E-commerce WhatsApp: AI Sales Assistant + Cart Recovery
Recover abandoned carts and answer buyer questions 24/7 over WhatsApp — wired straight into your Shopify store.
Automations that pay for themselves
Order → CRM + fulfillment
On orders/paid, create a deal in your CRM, log the line items to Google Sheets, and notify your fulfillment channel in Slack.
Abandoned cart recovery
Watch checkouts/create, wait 30 minutes, and if no matching order exists, send a WhatsApp or email nudge with the cart contents.
Low-stock alerts
On a schedule, query product inventory and ping your ops team when any SKU drops below a threshold.
VIP tagging
When a customer’s lifetime spend crosses a limit, tag them in Shopify and trigger a thank-you sequence.
Working with Shopify data in n8n
Shopify paginates with cursor-based links. When you need every order or product, enable Return All on the node, or handle the Link header manually with an HTTP Request node. Money fields come as strings — cast them with {{ Number($json.total_price) }} before doing math.
Pitfalls to avoid
- Webhook verification: if you build a raw webhook instead of the Shopify Trigger, verify the HMAC header to reject spoofed calls.
- Rate limits: the Admin API allows ~2 requests/second. Add a small wait when looping over many records.
- Scopes: a 403 almost always means a missing API scope — update the app config and reinstall.
FAQ
Does this work with Shopify Plus? Yes, and Plus unlocks additional webhook topics like orders/edited.
Public app or custom app? For your own store, a custom app is simplest. Build a public app only if you’re distributing to other merchants.
Ready to automate this?
Don’t rebuild it from scratch. E-commerce WhatsApp: AI Sales Assistant + Cart Recovery is a production-ready n8n workflow you can import in minutes — credentials in, activate, done.