Work / Customer Support / 03
Shopify Support Inbox, Handled End to End
E-commerce · Shopify store
Delivered — figures counted directly from the exported workflow JSON
The problem
Where is my order. I never got tracking. My item arrived broken. I entered the wrong address.
A store buried in repetitive support email, all of it handled by hand — and all of it answerable from data the store already has.
How it runs
-
One way in
01 / 07 Workflow 5 of 6 · Main — Classify & Route · 17 nodes
A single Gmail trigger reads every support email, checking labels across the whole thread rather than the one message.
-
Classify
02 / 07 five agents, five structured output parsers
An OpenAI classifier with a locked output schema names what the customer wants and routes the email to its specialist.
-
Verify the customer
03 / 07
In every branch, the name on the email must match the name on the Shopify order before anything else happens.
no match → a person
-
Resolve
04 / 07 Workflow 1 of 6 · Intent — Order Status · 48 nodes
Order Status alone chooses between seven routes — including a parcel with no carrier scan for five days or more.
-
Replace, once
05 / 07 Workflow 2 of 6 · Intent — Damage Claim · 32 nodes
A replacement is a fully discounted draft order, created only after the original order is re-fetched and re-checked.
-
Reply in the thread
06 / 07 14 wait nodes
Each reply waits fifteen minutes, then goes out as raw MIME with its threading headers, inside the customer’s own thread.
-
Escalate with context
07 / 07 Workflow 6 of 6 · Intent — Other · 5 nodes · 18 Telegram nodes
Anything that needs judgement goes to a person on Telegram, with the order context already attached.
The six workflows, as exported
Every node with its icon, as on the n8n canvasstarts a runa model or a parser, wired into the node above itHover a node for its type
-
01Intent — Order Status
48 nodes · 53 connections · live
“where is my order”, fanned out over tags, fulfilment, days since shipping and carrier status
-
02Intent — Damage Claim
32 nodes · 33 connections · live
evidence, then a replacement
-
03Intent — Address Change
27 nodes · 27 connections · live
changing an order that may already be moving
-
04Intent — Missing Tracking
26 nodes · 26 connections · live
not shipped, or shipped and lost
-
05Main — Classify & Route
17 nodes · 16 connections · 3 notes · live
the single entry point: read the mail, classify it, route it
-
06Intent — Other
5 nodes · 4 connections · live
escalate rather than guess
155 executing nodes, by type
The gates, 20 If, Switch and Filter nodes, decide whether anything happens next: a countable part of the system, not a claim about it. 158 objects on the canvas = 155 executing nodes + 3 sticky notes.
The guards, and what each one prevents
HoverTap a card to read what it prevents.
- Identity before action
Support automation that acts on an unverified claim is an account-takeover vector, not a convenience. Every branch checks the name against the real order first.
- A replacement cannot be issued twice
Checking at the start of a workflow and acting at the end is a race. Re-reading the order at the moment of the write is what closes it.
- Replies are held, then threaded
A support reply that arrives in four seconds tells the customer a machine answered, whatever the text says. The 14 wait nodes are that decision, made visible.
- The trigger reads the whole thread
A customer replying deep in an existing conversation is still caught, and sent mail and drafts are never treated as new support.
- Every model call returns a locked schema
Five agents, five structured output parsers: no branch depends on parsing free text.
- Where the answer is unknowable, it stays small
Order Status is 48 nodes because the answer is knowable. Other is 5: it recognises that it does not know, and hands over.
Limits, stated plainly
- Five intents are covered and everything else goes to a person. How much of an inbox falls into those five decides how much is automated, and it is worth measuring per store.
- The stalled-parcel rule keys on days since the last carrier scan, so it is only as good as what the carrier reports.
- Endpoint paths, credentials and access details are deliberately absent: this is a client’s live production system.
Built with
- n8n
- OpenAI
- Shopify
- Gmail
- Telegram
Next system
Google Local Services Ads Lead Responder