TotalApp Docs

WooCommerce Integration

Connect your WooCommerce store to TotalApp — fetch live data, trigger real-time workflows on store events, and automate order fulfilment, inventory sync, and customer notifications.

Overview

TotalApp's WooCommerce integration gives you two distinct capabilities: data retrieval via the WooCommerce REST API and real-time event triggering via inbound webhooks. You can use them independently or combine them in a single workflow — for example, trigger on order.created, fetch enriched order details, then send a fulfilment notification.

REST API Data Nodes

Pull orders, products, customers, and coupons from your store on demand. Supports pagination, status filtering, and per-page limits.

Inbound Webhook Triggers

React to store events in real time — new orders, product updates, customer registrations — without polling. Powered by WooCommerce's native webhook system.

Workflow Automation

Chain WooCommerce nodes with AI, email, Slack, database, and any other TotalApp node to build end-to-end automations entirely without code.

Credential Security

Consumer Key and Secret are stored server-side and attached to requests automatically. They are never exposed to the browser after initial configuration.

Prerequisites

  • A self-hosted or WooCommerce.com store running WooCommerce 3.5+
  • WordPress user with Administrator role (required to create REST API keys)
  • HTTPS enabled on the store — WooCommerce refuses REST API and webhook requests over plain HTTP
  • For inbound webhooks: the TotalApp server must be publicly reachable (automatic on production; use ngrok for local development)

WooCommerce vs Shopify

Unlike Shopify (a hosted SaaS), WooCommerce runs on your own WordPress server. This means REST API performance and webhook reliability depend on your hosting environment. A managed WordPress host (Kinsta, WP Engine, Flywheel) or a VPS is recommended for production automation workloads.

Setting Up the REST API Connection

The REST API connection allows TotalApp to fetch store data (orders, products, customers, coupons) on demand. Configure it once and all data nodes share the same credentials.

1 Generate WooCommerce REST API keys

In WordPress admin go to WooCommerce → Settings → Advanced → REST API. Click Add key. Set Description to something like "TotalApp", set User to your admin account, and set Permissions to Read/Write (Write is needed if you plan to update orders or products from a workflow). Click Generate API key and copy both the Consumer Key and Consumer Secret — they will not be shown again.

2 Enter credentials in TotalApp

Open Ecommerce → WooCommerce Integration in TotalApp. Paste your store URL (e.g. https://myshop.com), Consumer Key (ck_…), and Consumer Secret (cs_…). Click Test Connection — a green confirmation badge confirms the credentials are valid and shows the live product and order count.

3 Use data nodes in the Workflow Editor

Open the Workflow Editor and expand the Ecommerce → WooCommerce palette section. Drag any data node onto the canvas. No additional configuration is needed — credentials are read from your saved connection automatically.

HTTPS is required

WooCommerce will reject REST API requests to http:// URLs. Ensure your store has a valid SSL certificate. Most managed hosts provision one automatically; for self-hosted stores use Let's Encrypt.

Available Data Nodes

All four nodes appear under Ecommerce → WooCommerce in the palette. They act as data sources — drag, configure, then connect to downstream nodes.

Node What it fetches Key config options Output shape
WooCommerce Orders Order list with line items, billing/shipping addresses, totals, and status perPage (1–100), status (any / pending / processing / completed / cancelled / refunded / failed / on-hold) Array of WooCommerce order objects
WooCommerce Products Products with variants, pricing, stock status, categories, tags, and images perPage (1–100) Array of WooCommerce product objects
WooCommerce Customers Registered customers with billing/shipping details and order totals perPage (1–100) Array of WooCommerce customer objects
WooCommerce Coupons Discount coupons with type, amount, usage limits, and expiry perPage (1–100) Array of WooCommerce coupon objects

Working with large stores

WooCommerce REST API is paginated. Data nodes fetch the first page up to perPage items. For large stores with thousands of orders, use status filtering (e.g. processing) to narrow the result set and keep workflow execution fast.

Inbound Webhook Triggers

Webhook trigger nodes let your workflow react to store events the moment they happen — no polling, no cron jobs. When WooCommerce fires a webhook (e.g. a new order is placed), TotalApp receives it immediately and executes only the downstream nodes connected to the matching trigger node.

How it works

WooCommerce event POST to TotalApp SSE bridge Browser receives event Workflow executes

TotalApp uses a Server-Sent Events (SSE) bridge: the server receives the incoming webhook POST and immediately forwards it to the open browser session via a persistent SSE connection. The Workflow Editor picks up the event and runs the subgraph starting from the matching trigger node — other trigger nodes on the same canvas are unaffected.

Setting up a WooCommerce Webhook Trigger node

1 Add the node to the canvas

In the Workflow Editor, expand Ecommerce → Triggers in the palette. Drag WooCommerce Webhook onto the canvas. This is a source-only node — it has no incoming handle, only an outgoing one.

2 Select the event topic

Click the node to open the config panel. Choose the topic you want to listen to from the dropdown (see the full topic list below). You can place multiple WooCommerce Webhook nodes on the same canvas — each with a different topic — and they will each trigger only their own downstream chain.

3 Configure the webhook in WooCommerce

In WordPress admin go to WooCommerce → Settings → Advanced → Webhooks. Click Add webhook. Set:

  • Status: Active
  • Topic: the same event you selected in the node config (e.g. Order created)
  • Delivery URL:
    • Production: https://app.totalapp.app/api/webhooks/woocommerce
    • Local dev: https://<your-ngrok-domain>/api/webhooks/woocommerce
  • Secret: leave blank (TotalApp does not validate the WooCommerce webhook secret at this time)
  • API version: WP REST API Integration v3

Click Save webhook.

4 Keep the Workflow Editor open

The SSE connection is maintained by the open browser tab. When an event arrives, TotalApp executes the workflow automatically — there is no need to click Run. If you close the tab, no events are processed until you reopen it.

Supported webhook topics

WooCommerce topicFires when…
order.createdA new order is placed
order.updatedAn order's status, items, or meta changes
order.deletedAn order is permanently deleted (not trashed)
order.restoredA trashed order is restored
product.createdA new product is published
product.updatedA product's price, stock, or content is saved
product.deletedA product is permanently deleted
product.restoredA trashed product is restored
customer.createdA new customer account is registered
customer.updatedA customer's profile is edited
customer.deletedA customer account is deleted
coupon.createdA new coupon is saved
coupon.updatedAn existing coupon is edited
coupon.deletedA coupon is deleted
subscription.createdA new subscription is created (requires WooCommerce Subscriptions plugin)
subscription.updatedA subscription status or billing date changes

One trigger node = one subgraph

Each WooCommerce Webhook node on the canvas listens for exactly one topic. When that topic fires, TotalApp executes only the nodes reachable from that trigger node — it does not run the entire canvas. This means you can safely place order.created and order.updated nodes side by side: a new order triggers only the order.created chain, not the update chain.

Accessing the Webhook Payload

When a WooCommerce webhook fires, the raw payload (the full WooCommerce object — order, product, customer, etc.) is passed to all nodes downstream of the trigger node. You can access it in a Script node via the input variable:

// input.topic — e.g. "order.created"
// input.payload — the full WooCommerce object

const order = input.payload;
const total = order.total;
const customerEmail = order.billing.email;
const lineItems = order.line_items.map(i => i.name).join(', ');

return `New order #${order.number} from ${customerEmail}: ${lineItems} — £${total}`;

The payload structure follows the WooCommerce REST API v3 schema for the corresponding resource type.

Inspect the payload first

Connect the trigger node to a Text Output or Modal View output node and fire a test event from WooCommerce (edit and save any product). The output node will display the raw JSON payload, making it easy to identify the fields you need before writing logic in a Script node.

Local Development with ngrok

WooCommerce requires the delivery URL to be publicly accessible over HTTPS. When running TotalApp locally (dev server on port 3000), use ngrok to expose it:

ngrok http --url=<your-static-domain>.ngrok-free.app 3000

Then set the WooCommerce webhook delivery URL to:

https://<your-static-domain>.ngrok-free.app/api/webhooks/woocommerce

Port 3000 — not 80

The TotalApp dev server runs on port 3000. Always specify the port in the ngrok http command. Running ngrok http 80 will tunnel to the wrong port and webhook delivery will silently fail.

For production, change the delivery URL to https://app.totalapp.app/api/webhooks/woocommerce — no ngrok needed, as the Render deployment is publicly reachable.

Connection Status Panel

The WooCommerce Integration screen (Ecommerce → WooCommerce) shows a live connection status panel with:

  • Connection badge — green "Connected" when credentials are valid, red "Disconnected" otherwise
  • Live stats — product count, order count, customer count fetched from the REST API at connect time
  • Recent orders — a live table of the 10 most recent orders with status badges and order totals
  • Disconnect button — removes saved credentials from TotalApp (does not delete anything in WooCommerce)

Re-test after credential rotation

If you regenerate the WooCommerce API keys (e.g. after a security incident), click Disconnect in TotalApp, then re-enter the new credentials and click Test Connection. Existing workflow nodes will automatically use the updated credentials.

Example Workflows

New order → Slack notification

WooCommerce Webhook
order.created
Script
format message
Send Slack Message

Fires the moment an order is placed. The Script node extracts input.payload.billing.email, input.payload.total, and line item names, then formats them into a Slack message.

Low stock alert → Email

WooCommerce Webhook
product.updated
Script
check stock_quantity
Send Email

Triggers on any product save. The Script node checks input.payload.stock_quantity; if it falls below a threshold, it returns a message — otherwise returns null to stop execution. Connect a downstream Send Email node for the alert.

Daily order export

Schedule Trigger
0 8 * * *
WooCommerce Orders
status: processing
Script
format CSV
Send Email

Runs at 08:00 every day. Fetches all processing orders, formats them as CSV in a Script node, and emails the result. Uses the REST API data node — no webhook required.

New customer → CRM sync

WooCommerce Webhook
customer.created
Script
map to CRM fields
HTTP Request
POST to CRM API

Fires when a new account is registered. Maps WooCommerce customer fields to your CRM's schema in a Script node, then sends the data via an HTTP Request node.

Workflow Editor — WooCommerce Nodes

Every WooCommerce node lives in the Workflow Editor (Automation → Workflow Editor). Open the node palette on the left, expand Ecommerce, and you will see three sub-groups: Triggers, Shopify, and WooCommerce. Drag any node onto the canvas and wire it to downstream nodes to build real-time automations without writing code.

Node Palette — Ecommerce section

The palette screenshot below shows the exact layout: the Triggers group contains both the Shopify Webhook and WooCommerce Webhook nodes (blue dot, ec-triggers category). The WooCommerce group holds the four REST API data nodes (purple dot, ec-woocommerce category).

totalapp.app / workflow-editor
Collapse All
Triggers 5 ›
Utilities 1 ›
Ecommerce 9 ∨
TRIGGERS
Shopify Webhook
WooCommerce Webhook
WOOCOMMERCE
WooCommerce Orders
WooCommerce Products
WooCommerce Customers
WooCommerce Coupons
Data Sources 14 ›
TRIGGER
WooCommerce Webhook
WooCommerce Webhook
×
order.created
order.updated
order.deleted
product.created
customer.created
Add node — order.created
→ Script → Email / Slack / CRM …

What you can connect to a trigger

A WooCommerce Webhook node is the start of a chain. Any node in the palette can be connected downstream — here are the most powerful combinations:

Trigger eventConnect to…What it automates
order.created Send Email Instant order confirmation or internal fulfilment alert to your team
order.created / order.updated Script → HTTP Request Push order data to your CRM (HubSpot, Salesforce, custom API) the moment it arrives
order.updated Script → Send Email Customer shipping notification when status changes to completed
product.updated Script → Send Slack Message Low-stock alert to the warehouse Slack channel when stock_quantity falls below threshold
customer.created Script → HTTP Request Auto-enrol new customers in a welcome email sequence or loyalty program via external API
order.created Script → Ecommerce Reports Append each new order to a running report for daily revenue tracking
Schedule Trigger (daily) WooCommerce Orders → Script → Send Email Daily digest of all processing orders emailed to ops team at 08:00

Any node, any combination

WooCommerce trigger and data nodes are standard Workflow Editor nodes — they produce JSON output that flows into Script, AI, Email, Slack, HTTP Request, File Write, or any other node. There is no special "WooCommerce mode"; the full node library is available downstream. This means a single order.created trigger can fan out to an email notification, a CRM update, and a Slack ping — all in parallel branches from the same canvas.

Frequently Asked Questions

Does TotalApp support WooCommerce Subscriptions, Bookings, or other extensions?
The REST API data nodes fetch core WooCommerce resources (orders, products, customers, coupons). Extension-specific data (e.g. subscription objects, booking slots) is not directly fetched, but WooCommerce Subscriptions does fire its own webhook topics (subscription.created, subscription.updated) which are supported by the WooCommerce Webhook trigger node.
Can I use the same TotalApp connection for multiple WooCommerce stores?
Currently one WooCommerce connection is stored per TotalApp tenant. To switch stores, disconnect the current store and reconnect with the new store's credentials. Multi-store support (multiple simultaneous connections) is on the roadmap.
WooCommerce shows the webhook as "Failed" — what do I check?
  • Confirm the delivery URL is exactly https://app.totalapp.app/api/webhooks/woocommerce (no trailing slash, correct path)
  • For local dev: verify ngrok is running and the forwarding address points to port 3000, not 80
  • Confirm the Workflow Editor tab is open — the SSE bridge is only active while the tab is open
  • Check that HTTPS is correctly configured on the TotalApp server (automatic on Render production)
I have two WooCommerce Webhook nodes on the canvas — does one interfere with the other?
No. Each trigger node listens for a specific topic and executes only its own downstream chain. A product.created node and a product.updated node on the same canvas are completely independent — they never trigger each other's chains, even if both topics fire in quick succession.
Does the webhook execute if I am not looking at the Workflow Editor?
The SSE bridge requires the Workflow Editor to be open in a browser tab. If the tab is closed or the browser is shut down, incoming webhooks queue on the WooCommerce side (up to WooCommerce's retry limit — 5 attempts over 24 hours) but are not delivered until the tab reopens. For always-on execution without requiring an open browser, server-side workflow execution is planned for a future release.
Are REST API requests rate-limited?
WooCommerce itself imposes no rate limit on the REST API, but your WordPress hosting environment may. Shared hosts commonly throttle PHP processes to prevent abuse. If data node requests fail with 429 or timeout errors, increase your hosting plan or switch to a managed WordPress host with higher request concurrency.
Can I write data back to WooCommerce (e.g. update order status)?
Not yet via a dedicated node. You can use the generic HTTP Request node with a PUT request to the WooCommerce REST API endpoint (e.g. https://myshop.com/wp-json/wc/v3/orders/{id}) using your Consumer Key and Secret for Basic Auth. Dedicated write nodes (Update Order, Create Product, etc.) are planned.