n8n Workflow Automation for Retail Ops Teams: A Step-by-Step Guide

Key Takeaways
- n8n can automate inventory alerts, order routing, and supplier reorders for retail ops teams
- Self-hosted n8n costs ~USD $35-50/month and can replace 12-20 hours of weekly manual work
- Start with read-only inventory alerts before building write-heavy fulfilment workflows
- Always add error handling and version control before going live with production workflows
- Multi-market APAC teams must explicitly handle timezone configuration across all nodes
Quick Answer: n8n workflow automation for retail ops teams replaces manual inventory tracking, order routing, and supplier communication with self-hosted or cloud-based automated workflows. Start with a low-stock alert workflow, expand to order routing by region, then automate supplier reorder emails — saving 12-20 staff-hours per week.
Most retail operations teams I talk to across Asia-Pacific are drowning in manual data entry — copying order data between Shopify and their ERP, manually checking stock levels against supplier spreadsheets, pasting tracking numbers into customer notification emails. n8n workflow automation for retail ops teams eliminates this grunt work, but almost every guide online treats it as a generic "connect App A to App B" exercise. That misses the point entirely.
Related reading: Gartner CDP Magic Quadrant 2026 APAC: Which Vendors Are Winning Southeast Asia
Related reading: Salesforce CRM Implementation Cost Breakdown APAC: Real Numbers from Real Engagements
This tutorial walks you through three specific retail workflows we've battle-tested with clients: low-stock inventory alerts, automated order routing to regional fulfilment centres, and supplier reorder notifications. I'll cover deployment decisions (self-hosted vs. n8n Cloud), real configuration examples, and the trade-offs you'll face at each step.
Related reading: B2B E-Commerce Platform Replatforming Guide: Decision Framework for APAC Manufacturers
If your retail ops team spends more than five hours a week on tasks that follow an if-this-then-that pattern, you can probably automate 60-80% of that within a single sprint.
Prerequisites
Before you start building, make sure you have the following in place:
Related reading: CDP vs CRM: What APAC Retailers Need to Make the Right Call
Technical Requirements
- n8n instance — either n8n Cloud (free tier supports up to 5 active workflows) or a self-hosted installation on Docker. This tutorial uses n8n version 1.52+.
- Node.js 18+ if self-hosting.
- Docker and Docker Compose installed on your server (Ubuntu 22.04 LTS or equivalent).
- API credentials for your e-commerce platform (Shopify, WooCommerce, or Magento).
- Slack or Microsoft Teams webhook URL for alert delivery.
- A Google Sheets or Airtable base used as your supplier contact directory (we'll explain why below).
Related reading: Global E-Commerce Expansion Trends 2026: The APAC Retailer's Cross-Border Playbook
Business Requirements
- Documented list of SKUs with minimum stock thresholds.
- Clear order routing rules (e.g., orders from Australia route to the Sydney warehouse; orders from Hong Kong and Taiwan route to the Kwai Chung DC).
- At least one supplier email address or API endpoint for reorder notifications.
Self-Hosted vs. n8n Cloud — Making the Call
This is the first real decision. Here's how we frame it for clients:
- n8n Cloud — best for teams with fewer than 20 workflows, no strict data residency requirements, and limited DevOps capacity. Pricing starts at USD $20/month for the Starter tier (n8n pricing page, June 2025).
- Self-hosted — necessary when you're processing PII subject to Hong Kong's PDPO, Singapore's PDPA, or Australia's Privacy Act, or when you need more than 2,000 executions per day. Running costs on a basic AWS t3.medium in ap-southeast-1 (Singapore) come to roughly USD $30-35/month.
For most retail ops teams in APAC doing between 100-500 daily executions, n8n Cloud is the pragmatic starting point. You can migrate to self-hosted later without rebuilding workflows — n8n's export/import is JSON-based.
Step 1: Deploy Your n8n Instance
Option A — n8n Cloud (5 minutes)
Sign up at app.n8n.cloud. Activate your workspace. Done. Skip to Step 2.
Option B — Self-Hosted with Docker Compose (20 minutes)
Create a project directory and add this docker-compose.yml:
1version: '3.8'2services:3 n8n:4 image: n8nio/n8n:1.52.05 restart: always6 ports:7 - "5678:5678"8 environment:9 - N8N_BASIC_AUTH_ACTIVE=true10 - N8N_BASIC_AUTH_USER=admin11 - N8N_BASIC_AUTH_PASSWORD=YourStrongPassword12312 - N8N_HOST=n8n.yourdomain.com13 - N8N_PROTOCOL=https14 - WEBHOOK_URL=https://n8n.yourdomain.com/15 - GENERIC_TIMEZONE=Asia/Hong_Kong16 - DB_TYPE=postgresdb17 - DB_POSTGRESDB_HOST=postgres18 - DB_POSTGRESDB_PORT=543219 - DB_POSTGRESDB_DATABASE=n8n20 - DB_POSTGRESDB_USER=n8n21 - DB_POSTGRESDB_PASSWORD=n8ndbpass22 volumes:23 - n8n_data:/home/node/.n8n24 depends_on:25 - postgres2627 postgres:28 image: postgres:1529 restart: always30 environment:31 - POSTGRES_USER=n8n32 - POSTGRES_PASSWORD=n8ndbpass33 - POSTGRES_DB=n8n34 volumes:35 - postgres_data:/var/lib/postgresql/data3637volumes:38 n8n_data:39 postgres_data:
Deploy with:
1docker compose up -d
Verify the instance is running:
1curl -s -o /dev/null -w "%{http_code}" https://n8n.yourdomain.com/healthz2# Expected output: 200
We default to PostgreSQL over SQLite for any production retail deployment. According to n8n's own documentation, SQLite can cause data corruption under concurrent workflow executions — a real risk when you're processing hundreds of orders during a flash sale.
Ready to Transform Your Ecommerce Operations?
Branch8 specializes in ecommerce platform implementation and AI-powered automation solutions. Contact us today to discuss your ecommerce automation strategy.
Step 2: Build the Low-Stock Inventory Alert Workflow
This is the single highest-ROI automation for retail ops. A 2024 IHL Group study found that out-of-stock events cost retailers an estimated USD $1.77 trillion globally per year. Catching low stock 24 hours earlier can meaningfully reduce lost sales.
Workflow Logic
- Trigger: Cron schedule — runs every 4 hours during business hours.
- Fetch inventory: Pull current stock levels from Shopify via the Admin API.
- Filter: Compare each SKU's
inventory_quantityagainst the threshold in your Google Sheet. - Alert: Send a formatted Slack message listing all low-stock items.
Configuration — Step by Step
Node 1: Schedule Trigger
Set the Cron expression to run every 4 hours between 8 AM and 8 PM (Hong Kong Time):
1Trigger Type: Cron2Expression: 0 0,4,8,12 * * * (adjust to your timezone offset)
Node 2: Shopify — Get Inventory Levels
Use the HTTP Request node (more flexible than the built-in Shopify node for inventory endpoints):
1{2 "method": "GET",3 "url": "https://{{your-store}}.myshopify.com/admin/api/2024-07/inventory_levels.json",4 "authentication": "genericCredentialType",5 "genericAuthType": "httpHeaderAuth",6 "headers": {7 "X-Shopify-Access-Token": "{{$credentials.shopifyApiToken}}"8 },9 "qs": {10 "location_ids": "67890123456",11 "limit": 25012 }13}
Node 3: Google Sheets — Fetch Thresholds
Pull your SKU threshold sheet (columns: sku, product_name, min_stock, supplier_email):
1Operation: Read Rows2Spreadsheet ID: 1aBcDeFgHiJkLmNoPqRsTuVwXyZ3Sheet Name: sku_thresholds4Range: A:D
Node 4: Merge + Code Node — Compare Stock vs. Thresholds
Use a Code node to match and filter:
1const inventoryLevels = $('Shopify Inventory').all();2const thresholds = $('Google Sheets').all();34const lowStockItems = [];56for (const threshold of thresholds) {7 const sku = threshold.json.sku;8 const minStock = parseInt(threshold.json.min_stock, 10);910 const inventoryItem = inventoryLevels.find(11 item => item.json.inventory_item_id === sku12 );1314 if (inventoryItem && inventoryItem.json.available < minStock) {15 lowStockItems.push({16 json: {17 sku: sku,18 product_name: threshold.json.product_name,19 current_stock: inventoryItem.json.available,20 min_stock: minStock,21 supplier_email: threshold.json.supplier_email,22 gap: minStock - inventoryItem.json.available23 }24 });25 }26}2728return lowStockItems.length > 0 ? lowStockItems : [];
Node 5: Slack — Send Alert
Format the message using an expression:
1🚨 *Low Stock Alert — {{$now.format('DD MMM YYYY HH:mm')}} HKT*23{{$json["all"].map(item =>4 `• *${item.product_name}* (${item.sku}): ${item.current_stock} units remaining (min: ${item.min_stock})`5).join('\n')}}67Action required: Review and trigger reorder if necessary.
Once activated, this workflow gives your ops team a persistent, reliable early-warning system that costs zero human attention until action is needed.
Step 3: Automate Order Routing to Regional Fulfilment Centres
For multi-market retailers operating across APAC, order routing logic is where ops teams burn the most hours. A typical client scenario: orders from shoppers in Australia ship from Melbourne, orders from Southeast Asia ship from Singapore, and orders from Greater China ship from Hong Kong.
Workflow Logic
- Trigger: Webhook — fires on new Shopify order creation.
- Extract shipping country from the order payload.
- Route based on country-to-warehouse mapping.
- Push fulfilment request to the appropriate warehouse management system (WMS) API.
Configuration
Node 1: Webhook Trigger
Create a production webhook in n8n:
1HTTP Method: POST2Path: /order-routing3Authentication: Header Auth (X-Webhook-Secret)
Register this URL in Shopify's webhook settings under orders/create.
Node 2: Switch Node — Country-Based Routing
Configure routing rules:
1{2 "rules": [3 {4 "name": "APAC_North",5 "conditions": {6 "field": "{{$json.shipping_address.country_code}}",7 "operation": "in",8 "values": ["HK", "TW", "MO", "CN"]9 }10 },11 {12 "name": "APAC_Southeast",13 "conditions": {14 "field": "{{$json.shipping_address.country_code}}",15 "operation": "in",16 "values": ["SG", "MY", "ID", "PH", "VN", "TH"]17 }18 },19 {20 "name": "APAC_South",21 "conditions": {22 "field": "{{$json.shipping_address.country_code}}",23 "operation": "in",24 "values": ["AU", "NZ"]25 }26 }27 ],28 "fallback": "APAC_North"29}
Node 3: HTTP Request — Push to WMS
For each branch, configure an HTTP Request node hitting your warehouse API:
1{2 "method": "POST",3 "url": "https://wms-sg.yourcompany.com/api/v1/fulfilment-requests",4 "body": {5 "order_id": "{{$json.id}}",6 "line_items": "{{$json.line_items}}",7 "shipping_address": "{{$json.shipping_address}}",8 "priority": "{{$json.tags.includes('express') ? 'high' : 'standard'}}"9 }10}
We deployed a variation of this exact workflow for a Hong Kong-based jewellery retailer operating across HK, Macau, and Taiwan. Before automation, their ops team manually triaged roughly 400 orders per day across three warehouse spreadsheets. The n8n workflow reduced that manual routing work to zero — a time saving of approximately 12 staff-hours per week. The entire build, test, and go-live cycle took 8 working days.
Ready to Transform Your Ecommerce Operations?
Branch8 specializes in ecommerce platform implementation and AI-powered automation solutions. Contact us today to discuss your ecommerce automation strategy.
Step 4: Set Up Automated Supplier Reorder Notifications
This workflow extends the low-stock alert from Step 2 by actually sending purchase order requests to suppliers.
Workflow Logic
- Trigger: Receives low-stock items from the Step 2 workflow (via n8n's Execute Workflow node).
- Group items by supplier using a Code node.
- Generate a PDF or structured email per supplier.
- Send via email and log the reorder in Google Sheets.
Configuration
Node 1: Code Node — Group by Supplier
1const items = $input.all();2const supplierGroups = {};34for (const item of items) {5 const email = item.json.supplier_email;6 if (!supplierGroups[email]) {7 supplierGroups[email] = [];8 }9 supplierGroups[email].push(item.json);10}1112return Object.entries(supplierGroups).map(([email, skus]) => ({13 json: {14 supplier_email: email,15 items: skus,16 total_skus: skus.length,17 generated_at: new Date().toISOString()18 }19}));
Node 2: Send Email Node
Use the Email (IMAP/SMTP) node or a SendGrid integration:
1To: {{$json.supplier_email}}2Subject: Reorder Request — {{$json.total_skus}} SKU(s) — {{$now.format('DD MMM YYYY')}}3Body (HTML):45<p>Dear Supplier,</p>6<p>The following items have fallen below our minimum stock levels and require replenishment:</p>7<ul>8{{$json.items.map(i =>9 `<li>${i.product_name} (${i.sku}) — Current: ${i.current_stock}, Required: ${i.min_stock}, Gap: ${i.gap} units</li>`10).join('')}}11</ul>12<p>Please confirm availability and estimated delivery date within 48 hours.</p>13<p>Regards,<br/>Operations Team</p>
Node 3: Google Sheets — Log Reorder
1Operation: Append Row2Spreadsheet: Reorder Log 20253Sheet: reorders4Values:5 - Date: {{$now.format('YYYY-MM-DD')}}6 - Supplier: {{$json.supplier_email}}7 - SKUs: {{$json.items.map(i => i.sku).join(', ')}}8 - Status: Sent
This creates a full audit trail — something auditors at our retail clients in Singapore and Australia consistently ask for.
Step 5: Add Error Handling and Monitoring
Automation without error handling is a liability. According to Gartner's 2024 Hyperautomation report, 40% of automation initiatives fail to deliver expected ROI due to inadequate error management.
Error Workflow Configuration
n8n has a built-in error trigger. Create a separate workflow:
1{2 "nodes": [3 {4 "name": "Error Trigger",5 "type": "n8n-nodes-base.errorTrigger"6 },7 {8 "name": "Slack Error Alert",9 "type": "n8n-nodes-base.slack",10 "parameters": {11 "channel": "#ops-alerts",12 "text": "⚠️ Workflow '{{$json.workflow.name}}' failed at node '{{$json.execution.lastNodeExecuted}}'.\nError: {{$json.execution.error.message}}\nExecution ID: {{$json.execution.id}}"13 }14 }15 ]16}
Then in your n8n Settings > Workflow Settings, set this as the default Error Workflow.
Retry Logic
For HTTP Request nodes (especially when calling external APIs like Shopify or your WMS), enable retries:
1Retry on Fail: Enabled2Max Retries: 33Wait Between Retries: 1000ms (exponential backoff)
This is especially important for APAC deployments where you may be calling APIs hosted in US-West regions — latency spikes during peak hours (US evening = APAC morning) are common.
Ready to Transform Your Ecommerce Operations?
Branch8 specializes in ecommerce platform implementation and AI-powered automation solutions. Contact us today to discuss your ecommerce automation strategy.
Real-World Performance: What to Expect
Based on our deployments across Hong Kong, Singapore, and Australia, here are realistic benchmarks:
- Inventory alert workflow: Executes in 3-8 seconds for 500 SKUs. Shopify's Admin API rate limit (according to Shopify's 2024 API documentation) is 40 requests per second for Plus plans — not a bottleneck.
- Order routing workflow: Processes individual orders in under 2 seconds. At peak, we've seen clients process 150 orders per hour without queue backlog.
- Supplier notification workflow: Sending 10-15 supplier emails takes roughly 15 seconds including the Google Sheets logging.
Total infrastructure cost for a self-hosted deployment handling these three workflows: approximately USD $35-50/month on AWS ap-southeast-1. Compare that to the 12-20 staff-hours per week these workflows replace — at a conservative USD $25/hour loaded cost for ops staff in Southeast Asia, that's USD $1,300-2,000/month in labour savings.
Common Pitfalls for Retail Teams New to n8n
Overcomplicating the first workflow
Start with the inventory alert. It's read-only (no writes to production systems), low risk, and delivers visible value within a day. Don't try to build a full order orchestration system in week one.
Ignoring timezone handling
Retail ops across APAC means dealing with UTC+8 (HK/SG/TW), UTC+7 (VN), UTC+10/11 (AU). Set GENERIC_TIMEZONE in your Docker config and use n8n's built-in $now with explicit timezone formatting in all customer-facing outputs.
Not versioning workflows
Use n8n's JSON export feature and store workflow definitions in Git:
1# Export all workflows via CLI2n8n export:workflow --all --output=./workflows/3git add workflows/4git commit -m "feat: add supplier reorder notification v2"
This saved us during a client deployment in Taiwan where a team member accidentally modified the order routing logic mid-campaign. We rolled back in under three minutes.
Ready to Transform Your Ecommerce Operations?
Branch8 specializes in ecommerce platform implementation and AI-powered automation solutions. Contact us today to discuss your ecommerce automation strategy.
What to Do Next
You now have three production-grade n8n workflows covering inventory alerts, order routing, and supplier notifications. Here's your decision checklist for the next steps:
Deployment Readiness Checklist
- ✅ n8n instance deployed (Cloud or self-hosted with PostgreSQL)
- ✅ API credentials configured for your e-commerce platform
- ✅ SKU threshold spreadsheet populated with min_stock and supplier_email
- ✅ Warehouse routing rules documented and mapped to country codes
- ✅ Error workflow connected to Slack or Teams
- ✅ Retry logic enabled on all HTTP Request nodes
- ✅ Workflow JSON files stored in version control
- ✅ Timezone explicitly set in environment configuration
Expansion Priorities (Weeks 2-4)
- Returns processing automation: trigger on Shopify refund webhook, update inventory, notify warehouse.
- Daily sales digest: aggregate order data and push a morning summary to your ops channel.
- Supplier lead time tracking: extend the reorder log to track response times and auto-escalate after 48 hours.
If you're running n8n workflow automation for retail ops teams across multiple APAC markets and need help with self-hosted deployment, custom WMS integrations, or connecting legacy ERP systems — reach out to Branch8. We've done this across Hong Kong, Singapore, and Australia, and we can typically get your first three workflows live within two weeks.
Further Reading
- n8n Official Documentation — Self-Hosting Guide
- Shopify Admin API — Inventory Levels Reference (2024-07)
- n8n Community Workflow Templates — IT Ops Category
- IHL Group — Global Out-of-Stock Research (2024)
- Gartner — Hyperautomation Market Guide (2024)
- n8n GitHub Repository — Latest Releases
- Singapore PDPA — Guide for E-Commerce Data Processing
FAQ
n8n is an open-source, self-hostable workflow automation platform that lets you connect APIs, databases, and SaaS tools visually. Unlike Zapier, n8n gives retail ops teams full control over data residency (critical for PDPA/PDPO compliance in APAC), offers a Code node for custom JavaScript logic, and doesn't charge per-execution — making it significantly cheaper at scale for high-volume retail operations.
About the Author
Matt Li
Co-Founder & CEO, Branch8 & Second Talent
Matt Li is Co-Founder and CEO of Branch8, a Y Combinator-backed (S15) Adobe Solution Partner and e-commerce consultancy headquartered in Hong Kong, and Co-Founder of Second Talent, a global tech hiring platform ranked #1 in Global Hiring on G2. With 12 years of experience in e-commerce strategy, platform implementation, and digital operations, he has led delivery of Adobe Commerce Cloud projects for enterprise clients including Chow Sang Sang, HomePlus (HKBN), Maxim's, Hong Kong International Airport, Hotai/Toyota, and Evisu. Prior to founding Branch8, Matt served as Vice President of Mid-Market Enterprises at HSBC. He serves as Vice Chairman of the Hong Kong E-Commerce Business Association (HKEBA). A self-taught software engineer, Matt graduated from the University of Toronto with a Bachelor of Commerce in Finance and Economics.