At a Glance — n8n Shopify Integration
- Two nodes: Shopify Trigger (real-time webhook events) + Shopify node (read/write: customers, orders, products, inventory) — use both together
- Auth: Admin API access token — Shopify Admin → Settings → Apps → Develop apps; select only the scopes your workflows actually need
- Order trigger: Use
orders/paidnotorders/createfor fulfillment — fires only after payment confirmation, excludes abandoned checkouts - Inventory alerts: Schedule-based (poll every 6h, simpler) vs event-based (
inventory_levels/updatewebhook, faster but fires on every quantity change) - CRM sync: Trigger on
customers/create→ push to HubSpot/Salesforce; always query by email first to avoid creating duplicates - Scope principle: Shopify logs all API access — grant read vs write scopes separately and use only what each workflow requires
n8n Shopify Node Overview
n8n gives you two Shopify-related nodes. The Shopify Trigger listens for real-time webhook events from your store. The Shopify node lets you read and write data — customers, orders, products, collections, and inventory levels. Together they cover the full range of ecommerce automation: reacting to what happens in your store, and pushing data back to it.
Supported Shopify Trigger events include: orders/create, orders/paid, orders/fulfilled, orders/cancelled, customers/create, customers/update, products/create, products/update, inventory_levels/update, and several more. The trigger fires within seconds of the event — no polling delay.
Connecting Shopify to n8n
Shopify uses an Admin API access token (not OAuth) for n8n integration. You generate it once per store:
- In your Shopify admin, go to Settings → Apps and sales channels → Develop apps
- Click Create an app, give it a name (e.g. "n8n Automation")
- Under Configuration → Admin API access scopes, select the scopes your workflows need. Common ones:
read_orders,write_orders,read_inventory,write_inventory,read_customers,write_customers,read_products - Click Install app → copy the Admin API access token (shown once)
- In n8n: Credentials → New → Shopify → enter your store URL (
yourstore.myshopify.com) and the token
Only grant the scopes your workflows actually need. If your workflow only reads orders, request read_orders — not write_orders. Shopify logs all API access, and minimal scopes reduce the blast radius if the token is ever compromised. You can add scopes later by reconfiguring the app.
Workflow: New Order → Fulfillment Notification
The most common Shopify automation: notify your operations team (and optionally a 3PL) the moment an order is placed and paid.
- Shopify Trigger — event:
orders/paid - Set node — extract: order number (
{{ $json.order_number }}), customer name, shipping address, line items array, total price - IF node — check order value or product type to route high-value orders differently if needed
- Slack node — post to #fulfillment channel: "New order #{{ $json.order_number }} — {{ $json.customer.first_name }} {{ $json.customer.last_name }} — ${{ $json.total_price }}" with line item list
- HTTP Request node (optional) — POST to your 3PL or WMS API to create the fulfillment job
The Shopify Trigger on orders/paid is more reliable than orders/create for fulfillment purposes — it only fires after payment confirmation, filtering out abandoned checkouts and unpaid orders.
Workflow: Low Inventory Alert
Two approaches depending on how fast you need to know:
Schedule-based (simpler)
- Schedule Trigger — every 6 hours or once daily at 7 AM
- Shopify node — Inventory Level → Get All, filtered by location ID
- Filter node — keep only items where
availableis less than your threshold (e.g. 10 units) - IF node — skip if no items below threshold
- Slack node — post list of low-stock items with current quantities
Event-based (real-time)
- Shopify Trigger — event:
inventory_levels/update - IF node — check
{{ $json.available }}against your threshold - Shopify node — Product → Get, using the inventory item ID to fetch the product name
- Slack node — alert only when stock drops below threshold
The event-based approach fires within seconds of a stock change but requires knowing your Shopify location ID upfront. The schedule-based approach is easier to set up and works well if same-day alerts are sufficient.
Workflow: New Customer → CRM Sync
Every new Shopify buyer should be a contact in your marketing CRM. Without automation, this means manual list imports or CSV exports — a process that falls behind within weeks.
- Shopify Trigger — event:
customers/create - HubSpot node (Contact → Search) — search by email to check for existing contact
- IF node — does the contact already exist?
- HubSpot node (Contact → Create) — create contact with name, email, phone, and Shopify customer ID stored as a custom property
- HubSpot node (Contact → Update) — on true branch: update existing contact with latest Shopify data
- HubSpot node (Workflow enrollment) (optional) — enroll new customers in your welcome email sequence
Storing the Shopify customer ID as a HubSpot property is essential — it lets future workflows look up the HubSpot contact by Shopify ID without another email search, which is faster and avoids issues with customers who change their email.
Workflow: Shopify Product Update → Other Channels
When you update a product in Shopify — price change, new image, description edit — you often need to reflect that change in other systems: a product catalog database, a Google Merchant feed, or a marketplace like Amazon.
- Shopify Trigger — event:
products/update - Set node — extract product ID, title, price, SKU, images, updated fields
- HTTP Request node — POST to your catalog API or marketplace listing endpoint
- Airtable or Google Sheets node — optionally log the change for audit trail
This is especially useful if Shopify is your product-of-record but you sell on multiple channels. Changes made in Shopify propagate automatically instead of requiring manual updates on each platform.
Shopify Webhook Reliability Notes
Shopify webhooks occasionally deliver events out of order or with slight delays during high-traffic periods. A few practices help:
- Idempotent processing — always check whether you have already processed an order ID before acting on it. Store processed IDs in an Airtable base or n8n static data.
- Verify webhook signatures — Shopify signs each webhook with an HMAC-SHA256 hash of the payload. In self-hosted n8n, verify this signature in a Code node before processing. This prevents spoofed requests from triggering your workflows.
- Acknowledge immediately — n8n's webhook endpoint responds with 200 before your workflow finishes, which is correct Shopify behavior. Do not add synchronous operations that could cause a timeout — Shopify retries webhooks that take longer than 5 seconds to acknowledge.
For debugging failed webhook deliveries, Shopify admin shows a webhook log under Settings → Notifications → Webhooks. If you're seeing missed events, check that log before assuming the issue is in n8n. See also: n8n webhook troubleshooting guide.
Need Shopify Automation Built?
Entech Solutions builds production Shopify workflows with n8n — order routing, inventory management, multi-channel sync, and CRM integration. See our n8n Shopify integration service page, or get in touch to discuss your specific requirements.