Branch8

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

Matt Li
July 2, 2026
12 mins read
n8n Workflow Automation for Retail Ops Teams: A Step-by-Step Guide - Hero Image

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.0
5 restart: always
6 ports:
7 - "5678:5678"
8 environment:
9 - N8N_BASIC_AUTH_ACTIVE=true
10 - N8N_BASIC_AUTH_USER=admin
11 - N8N_BASIC_AUTH_PASSWORD=YourStrongPassword123
12 - N8N_HOST=n8n.yourdomain.com
13 - N8N_PROTOCOL=https
14 - WEBHOOK_URL=https://n8n.yourdomain.com/
15 - GENERIC_TIMEZONE=Asia/Hong_Kong
16 - DB_TYPE=postgresdb
17 - DB_POSTGRESDB_HOST=postgres
18 - DB_POSTGRESDB_PORT=5432
19 - DB_POSTGRESDB_DATABASE=n8n
20 - DB_POSTGRESDB_USER=n8n
21 - DB_POSTGRESDB_PASSWORD=n8ndbpass
22 volumes:
23 - n8n_data:/home/node/.n8n
24 depends_on:
25 - postgres
26
27 postgres:
28 image: postgres:15
29 restart: always
30 environment:
31 - POSTGRES_USER=n8n
32 - POSTGRES_PASSWORD=n8ndbpass
33 - POSTGRES_DB=n8n
34 volumes:
35 - postgres_data:/var/lib/postgresql/data
36
37volumes:
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/healthz
2# 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

  1. Trigger: Cron schedule — runs every 4 hours during business hours.
  2. Fetch inventory: Pull current stock levels from Shopify via the Admin API.
  3. Filter: Compare each SKU's inventory_quantity against the threshold in your Google Sheet.
  4. 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: Cron
2Expression: 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": 250
12 }
13}

Node 3: Google Sheets — Fetch Thresholds

Pull your SKU threshold sheet (columns: sku, product_name, min_stock, supplier_email):

1Operation: Read Rows
2Spreadsheet ID: 1aBcDeFgHiJkLmNoPqRsTuVwXyZ
3Sheet Name: sku_thresholds
4Range: 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();
3
4const lowStockItems = [];
5
6for (const threshold of thresholds) {
7 const sku = threshold.json.sku;
8 const minStock = parseInt(threshold.json.min_stock, 10);
9
10 const inventoryItem = inventoryLevels.find(
11 item => item.json.inventory_item_id === sku
12 );
13
14 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.available
23 }
24 });
25 }
26}
27
28return 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*
2
3{{$json["all"].map(item =>
4 `• *${item.product_name}* (${item.sku}): ${item.current_stock} units remaining (min: ${item.min_stock})`
5).join('\n')}}
6
7Action 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

  1. Trigger: Webhook — fires on new Shopify order creation.
  2. Extract shipping country from the order payload.
  3. Route based on country-to-warehouse mapping.
  4. Push fulfilment request to the appropriate warehouse management system (WMS) API.

Configuration

Node 1: Webhook Trigger

Create a production webhook in n8n:

1HTTP Method: POST
2Path: /order-routing
3Authentication: 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

  1. Trigger: Receives low-stock items from the Step 2 workflow (via n8n's Execute Workflow node).
  2. Group items by supplier using a Code node.
  3. Generate a PDF or structured email per supplier.
  4. Send via email and log the reorder in Google Sheets.

Configuration

Node 1: Code Node — Group by Supplier

1const items = $input.all();
2const supplierGroups = {};
3
4for (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}
11
12return 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):
4
5<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 Row
2Spreadsheet: Reorder Log 2025
3Sheet: reorders
4Values:
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: Enabled
2Max Retries: 3
3Wait 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 CLI
2n8n 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

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.