Customer conversations
Answer the most-asked question without a person
"Where is my order" is the message a shop receives more than any other, and answering it is a lookup, not a conversation. The hard part is not the reply. It is having a status a machine can read, and knowing that the free-text answer is only allowed because the customer wrote first — a few hours later the same sentence needs a template WhatsApp approved in advance.
- Triggers
- Two
- Runs
- Every 15 minutes
- Stack
- 5 tools
- Durable execution
- Not required
The flow
The top track keeps an answer worth giving. The bottom track is the conversation, and it reads that answer rather than going back to the courier.
Every 15 minutes
n8n 排程
Pull fulfilment status
n8n · Make
Write the status table
Sheets · Airtable
Customer writes in
WhatsApp Cloud API
Read intent and order number
OpenAI · Anthropic
Order found?
n8n IF
Reply with the status
WhatsApp Cloud API
Hand it to a person
Slack · WhatsApp
Step by step
- 01
Every 15 minutes
n8n 排程The status refresh runs on its own clock, so the answer is already sitting there when somebody asks — not fetched while the customer waits.
- 02
Pull fulfilment status
n8n · MakeRead the current state for every open order from the store and the courier. Keep the tracking reference, because that is the one thing customers ask for that you cannot paraphrase.
- 03
Write the status table
Sheets · AirtableOne row per open order, keyed on the order number the customer actually has. This table is what the reply is built from, which means a wrong answer is a wrong row and can be found.
- 04
Customer writes in
WhatsApp Cloud APIThe webhook fires when the message arrives. That moment also opens the 24-hour service window, which is the only reason the reply below can be free text.
- 05
Read intent and order number
OpenAI · AnthropicClassify whether this is an order-status question and extract the order number from the wording. The model does that and nothing else — it does not look up the status and it does not write the reply.
- 06
Order found?
n8n IFMatch the extracted number against the status table. Treat a near-match as a miss: the cost of confidently telling somebody about another person's parcel is far higher than the cost of a hand-off.
- 07
Reply with the status
WhatsApp Cloud APISend the state and the tracking reference. If more than one order is open, offer them as an interactive list — the customer picks rather than types the number again.
- 08
Hand it to a person
Slack · WhatsAppNo match means a person, immediately, with the original message attached. Self-serve without a way out is a wall.
What the platform will not allow
The free-text answer is not a design choice. It is a permission that expires, and what replaces it has to exist before you need it.
"When a WhatsApp user messages you or calls you, a 24-hour timer called a customer service window starts. If the user messages or calls you again before the timer expires, the timer resets to 24 hours." The instant reply is inside that window, which is why it needs no approval.
WhatsApp Cloud API — Send messages"When the window closes, you can only send pre-approved template messages." An answer written at 2am to a question asked two days ago cannot be free text, so the overnight version of this reply has to be a template that already exists.
WhatsApp Cloud API — Send messagesAn interactive list supports "up to 10 sections, with up to 10 rows for all sections combined", a row title of at most 24 characters and a row description of at most 72. A customer with a long order history cannot be shown all of it, and a row title will not hold a full product name.
WhatsApp Cloud API — Interactive list messagesReply buttons are capped at three, each with a label of at most 20 characters. "Track another order / Talk to us" is about the whole budget — anything richer has to be a list.
WhatsApp Cloud API — Interactive reply buttons messages
When this is not worth building
Three cases where the upkeep costs more than the repetition.
Your order status does not live anywhere a machine can read. If tracking sits in a courier's PDF or in one person's memory, the flow has nothing to answer from — and it will still answer, confidently, with whatever it found.
The question you actually get is not "where is my order" but "can I have this in another size". Deflecting the wrong question leaves the volume where it was and adds a step for the customer to get past.
Nobody will own the no-match branch. Every self-serve flow eventually fails to match, and if that path leads nowhere the customer meets a machine that cannot help and cannot pass them on.