n8n WooCommerce Node: Automate Orders, Customers, and Inventory in Your Workflows (Free Workflow JSON)
WooCommerce powers over 5 million online stores. If you run one — or build automations for clients who do — connecting WooCommerce to n8n opens up a world of possibilities: automatic order logging, real-time inventory alerts, customer onboarding sequences, and sync with your CRM, accounting, or fulfillment systems.
This guide covers everything you need to know about the n8n WooCommerce node: all available operations, authentication setup, common gotchas, and three production-ready workflow patterns with free JSON you can import today.
What the n8n WooCommerce Node Can Do
The WooCommerce node interacts with the WooCommerce REST API (v3). Supported resources and operations include:
Order
- Create — create a new order
- Delete — delete an order
- Get — retrieve a single order by ID
- Get Many — list orders with optional filters (status, date, customer)
- Update — modify an existing order (change status, add notes, update shipping)
Customer
- Create — create a customer account
- Delete — delete a customer
- Get — retrieve a single customer
- Get Many — list customers with optional search/filter
- Update — modify customer details
Product
- Create — create a new product
- Delete — delete a product
- Get — retrieve a single product
- Get Many — list products with optional filters (category, type, status)
- Update — modify product details (price, stock, description, images)
Coupon
- Create — create a discount coupon
- Delete — delete a coupon
- Get — retrieve a coupon
- Get Many — list all coupons
- Update — modify coupon rules
Authentication: WooCommerce REST API Keys
The WooCommerce node authenticates via API Key + Secret (HTTP Basic Auth). Here's how to set it up:
Step-by-step setup
- Log in to your WordPress admin dashboard
- Go to WooCommerce → Settings → Advanced → REST API
- Click Add key
- Enter a description (e.g., "n8n Integration")
- Set Permissions to Read/Write (or Read-only if you only need to pull data)
- Click Generate API key
- Copy the Consumer Key and Consumer Secret immediately (secret is only shown once)
In n8n, create a WooCommerce API credential with:
-
WooCommerce URL — your store URL (e.g.,
https://mystore.com) - Consumer Key — from the WooCommerce settings
- Consumer Secret — from the WooCommerce settings
Important: Your store must have pretty permalinks enabled (WordPress → Settings → Permalinks → "Post name" or "Custom Structure"). The REST API will return 404 if default permalinks are active.
All Operations Reference
Order Operations
Create Order
{
"resource": "order",
"operation": "create",
"status": "processing",
"paymentMethod": "stripe",
"paymentMethodTitle": "Credit Card (Stripe)",
"setPaid": true,
"billing": {
"first_name": "Jane",
"last_name": "Doe",
"email": "jane@example.com",
"address_1": "123 Main St",
"city": "Austin",
"state": "TX",
"postcode": "78701",
"country": "US"
},
"lineItems": [
{ "productId": 42, "quantity": 2 },
{ "productId": 15, "quantity": 1 }
]
}
Get Many Orders (with filters)
{
"resource": "order",
"operation": "getAll",
"returnAll": false,
"limit": 50,
"filter": {
"status": "processing",
"after": "2026-01-01T00:00:00"
}
}
Update Order Status
{
"resource": "order",
"operation": "update",
"orderId": "={{ $json.id }}",
"updateFields": {
"status": "completed"
}
}
Customer Operations
Create Customer
{
"resource": "customer",
"operation": "create",
"email": "newcustomer@example.com",
"firstName": "John",
"lastName": "Smith",
"username": "johnsmith",
"billing": {
"address_1": "456 Oak Ave",
"city": "Dallas",
"state": "TX",
"postcode": "75201",
"country": "US"
}
}
Get Many Customers
{
"resource": "customer",
"operation": "getAll",
"returnAll": false,
"limit": 100,
"filter": {
"search": "jane"
}
}
Product Operations
Create Product
{
"resource": "product",
"operation": "create",
"name": "Premium Widget",
"type": "simple",
"regularPrice": "29.99",
"description": "High-quality widget with lifetime warranty.",
"sku": "WID-001",
"manageStock": true,
"stockQuantity": 100,
"categories": [{ "id": 5 }],
"images": [{ "src": "https://example.com/widget.jpg" }]
}
Update Product Stock
{
"resource": "product",
"operation": "update",
"productId": "={{ $json.id }}",
"updateFields": {
"stockQuantity": "={{ $json.new_stock }}",
"manageStock": true
}
}
6 Common Gotchas
1. Pretty permalinks required
If your WordPress site uses default permalinks (?p=123), the WooCommerce REST API returns 404 on every request. Go to WordPress → Settings → Permalinks and select "Post name" or any custom structure. This is the #1 cause of connection failures.
2. Webhook vs polling: choose the right trigger
The WooCommerce node supports both Webhook triggers (real-time, push-based) and polling (Schedule Trigger + Get Many). For order/customer events, use webhooks — they're instant and don't load your server. For product/inventory sync, polling every 5–15 minutes is usually sufficient.
3. Webhook deduplication is mandatory
WooCommerce webhooks can fire multiple times for the same event (especially during payment processing retries). Always add a deduplication check — use the order ID + timestamp as a unique key, and check a "processed orders" log (Google Sheets, a database, or n8n's static data) before processing.
4. Line items use productId, not SKU
When creating orders via API, line items reference products by productId (internal WordPress ID), not by SKU. If you're syncing from an external system that only knows SKUs, add a lookup step: Get Many Products filtered by SKU, then map to product IDs.
5. Rate limits: WooCommerce Cloud vs self-hosted
WooCommerce Cloud (WordPress.com hosting) enforces rate limits that vary by plan (typically 1–5 req/sec). Self-hosted WooCommerce has no hard limit but can be throttled by your server's PHP workers or security plugins (Wordfence, Cloudflare). For bulk operations, use the Split in Batches node with a 1-second Wait between batches.
6. Order statuses are strings, not enums
WooCommerce order statuses include pending, processing, on-hold, completed, cancelled, refunded, and failed. Custom statuses added by plugins (e.g., "shipped" from a shipping plugin) are also valid. However, the status must be registered with WooCommerce — sending an unregistered status silently fails. Always verify the status exists before updating.
3 Production-Ready Workflow Patterns
Pattern 1: New Order → Google Sheets Logger
Use case: Log every new WooCommerce order to a Google Sheet for accounting, reporting, or backup.
Workflow:
-
Webhook Trigger — receive WooCommerce
order.createdwebhook - Code node — extract order fields (ID, date, customer, total, items, status, payment method)
- Google Sheets node — append row to your orders sheet
This is the simplest and most reliable integration. The Google Sheet becomes a live dashboard of all orders, searchable and filterable.
Free JSON: See footer.
Pattern 2: Low Stock → Slack Alert
Use case: When any product's stock drops below a threshold, instantly notify your team in Slack so reordering happens before a stockout.
Workflow:
- Schedule Trigger — every 2 hours
-
WooCommerce node (Get Many Products) — filter:
manage_stock = true,stock_quantity < 10 -
Filter node — only pass products where
stock_quantity < 10 - Slack node — post alert:
⚠️ Low Stock Alert
Product: {{ $json.name }}
Current stock: {{ $json.stock_quantity }}
SKU: {{ $json.sku }}
Product URL: {{ $json.permalink }}
Pattern 3: New Order → CRM + Welcome Email + Fulfillment
Use case: When a new order comes in, create a customer record in HubSpot, send a personalized welcome email via Gmail, and create a fulfillment task in your project management tool.
Workflow:
-
Webhook Trigger — WooCommerce
order.created - HubSpot node — create or update contact with order details
- Gmail node — send welcome email:
Subject: Order #{{ $json.id }} confirmed — here's what happens next
Body: Hi {{ $json.billing.first_name }}, thanks for your order! We're preparing {{ $json.line_items }} for shipment...
- Microsoft Teams / Slack node — notify fulfillment team
Free Workflow JSON
Download a ready-to-import n8n workflow covering the New Order → Google Sheets Logger pattern:
→ n8n Workflow Starter Pack ($29) — includes WooCommerce workflows + 10 more
Prefer someone to build it for you? Done-for-You n8n Workflow Build — $99. You describe your automation, I build and deliver a working workflow JSON within 48 hours.
WooCommerce Node vs Shopify Node
| Capability | WooCommerce Node | Shopify Node |
|---|---|---|
| Orders | ✅ | ✅ |
| Customers | ✅ | ✅ |
| Products | ✅ | ✅ |
| Inventory | ✅ (via product stock) | ✅ |
| Webhooks | ✅ (via WooCommerce) | ✅ (via Shopify) |
| Authentication | API Key + Secret | OAuth2 / Access Token |
| Self-hosted option | ✅ Yes | ❌ No (SaaS only) |
| Rate limits | Server-dependent | 2 req/sec (Basic plan) |
If you're on WordPress, WooCommerce gives you full control over your data and no per-transaction platform fees. Shopify is simpler to manage but locks you into their ecosystem.
What's Next
You've now got full control over WooCommerce from your n8n workflows — orders, customers, products, and coupons. Combine this with the Stripe Webhooks guide, Google Sheets node guide, and HubSpot node guide for a fully connected e-commerce automation stack.
→ Get the n8n WooCommerce → Google Sheets Order Logger — $9
→ Get the n8n Workflow Starter Pack — $29
→ Done-for-You Workflow Build — $99
Top comments (1)
Are you using the WooCommerce node to sync orders into Google Sheets, trigger low-stock alerts in Slack, or push new customers into your CRM? Drop your e-commerce automation use case in the comments — would love to see what people are building with WooCommerce and n8n.