DEV Community

Muhammad Mohsin
Muhammad Mohsin

Posted on

How I Automated WhatsApp Orders for a Small Business with n8n (Full Workflow Breakdown)

If you run a small business, your "storefront" probably isn't a website. It's a WhatsApp number.

And your "checkout flow" is a stream of chat messages like this:

"Hi, is the blue one available?"
"2 chicken burgers and a fries, deliver to Green Town"
"How much total?"

Every one of those messages needs a human to read it, figure out what the customer actually wants, reply, and write the order down somewhere before it gets buried under newer chats. On a slow day, that's fine. On a busy day, messages get missed, orders get mixed up, and sales are lost simply because nobody could type fast enough.

So I built an automation for it in n8n. This post is the full breakdown: what the workflow does, why each step exists, and the gotchas to avoid if you build your own.

The problem: one chat, four separate headaches

WhatsApp ordering looks simple from the outside — "just take the order." In practice, four different jobs land in the same chat window:

  1. Order capture. Someone has to turn a free-form message ("send 2 of the chicken one and one zinger") into a structured order: item, quantity, name, delivery address.
  2. Lead qualification. Not every message is an order. Some people are price-shopping, some want a bulk quote, some are just browsing. They shouldn't all get the same treatment.
  3. FAQs. "What time do you close?" "Do you deliver to my area?" "Is cash on delivery available?" The same handful of questions, answered again and again, every single day.
  4. Follow-ups. The customer who asked about a price three hours ago and went quiet. Without a nudge, that conversation just dies.

A good automation has to handle all four — which is why "just connect WhatsApp to a chatbot" usually disappoints. The trick is to route first, automate second.

The workflow, step by step

Here's the architecture I ended up with. It's a single n8n workflow with a clear path:

WhatsApp message → Webhook trigger → Parser → Intent router → branch (sheet + confirmation reply) → Human handoff for everything else

Step 1: The trigger (webhook)

The workflow starts with a Webhook node. When a customer sends a WhatsApp message, the WhatsApp Business API (or a provider built on it) POSTs the message to that webhook URL, and n8n wakes up with the sender's number and the message text in the payload.

Why a webhook: it's event-driven. You don't poll anything, you don't burn executions while idle, and the customer gets a reply in seconds instead of whenever someone notices the phone buzzing.

Step 2: The parser

Raw chat text is useless to a database, so the next step extracts structure from it: which items were mentioned, what quantities, a name if the customer gave one, and the delivery address if present. A simple approach is keyword matching against your menu or product list. A more flexible one is sending the message to an LLM with a strict JSON output schema (item, quantity, name, address) and validating the result before anything downstream touches it.

Why this step exists on its own: parsing fails sometimes ("the usual pls"). If parsing is a separate step, you can inspect exactly what it extracted, log the failures, and improve it without touching the rest of the workflow.

Step 3: The intent router

This is the heart of the design. A Switch node classifies each message into one of three intents:

  • Order — the customer wants to buy something.
  • Question — they're asking about hours, delivery areas, payment methods.
  • Lead — bulk orders, catering, resale, anything that deserves a real conversation and a follow-up.

Why route before acting: each intent needs different handling, different data, and a different tone. An order needs accuracy. A question needs speed. A lead eventually needs a human — but a logged human conversation, not one buried in a chat list.

Step 4: Log the order (Google Sheets or Airtable)

Order-branch messages get written as a row in Google Sheets (or Airtable, if you want nicer views): timestamp, customer number, name, items, quantities, address, status = "New". The team works from the sheet, moving the status from "Preparing" to "Delivered".

Why a spreadsheet and not something fancier: the business owner already knows Sheets. Zero training, zero new logins. The fanciest system in the world loses to the one people actually open.

Step 5: The automatic confirmation reply

Immediately after logging, n8n sends a WhatsApp reply back through the API: a summary of the order exactly as it was parsed — something like "2× Chicken Burger, 1× Fries, deliver to Green Town. Reply YES to confirm, or tell me what to change."

Why this matters more than it looks: the confirmation doubles as an error check. If the parser misread the order, the customer corrects it before anyone starts preparing anything. And customers stop sending "???" follow-ups, because they know the order landed.

Step 6: The human handoff rule

Anything the router can't confidently classify — complaints, unusual requests, a plain "call me" — does not get an automated guess. It gets flagged, written to a "Needs attention" list, and the owner gets a notification. A human takes over from there, in the same chat.

The gotchas (learned the hard way)

  • Always keep a human fallback. The goal is to remove repetitive work, not to remove humans. A bot that confidently misunderstands a customer is worse than no bot at all.
  • Never let a bot guess prices. Prices must come from your actual price list — a lookup in the same sheet — never from the parser's imagination. If the item or price isn't found, that's a handoff, not a hallucination opportunity.
  • Confirm before you commit. The confirmation message in Step 5 isn't politeness. It's your validation layer.
  • Log everything, even failures. The messages your automation can't handle are a goldmine: they're your next FAQ entries and your parser's best test cases.

This pattern generalizes

Swap "orders" for "bookings" and the same shape works in a lot of places:

  • Salons and barbers — booking requests get parsed into service + time, logged to a sheet, and confirmed automatically; rescheduling questions route to the FAQ path.
  • Clinics — appointment requests vs. general questions vs. "I need to speak to someone" (always a human, and fast).
  • Course sellers and coaches — lead qualification up front: which course, what level, ready to enroll or just curious — each answer gets a different follow-up.

The industries change. The pattern — trigger, parse, route, log, confirm, hand off — doesn't.

If you want the ready-made version

Full disclosure: after building this pattern more than once, I packaged it as WhatsAppKit — 4 production n8n workflows covering the four headaches from earlier: an Order Bot, a Lead Qualifier, an FAQ Bot, and an Opt-in Broadcast workflow. It's the same architecture described in this article, just pre-built and tested, so you can import it instead of wiring every node yourself.

It's $49 one-time on Gumroad, and the code WHATSAPP10 brings it to $39: https://onyxailabs.gumroad.com/l/ttxqw

The full catalog of tools is here, if you want to browse: https://onyxailabs.github.io/Catalog/

And honestly, if you'd rather build it yourself, everything above is genuinely enough to do it — that's the point of the breakdown.


What would you automate first in your business chats? Order-taking, FAQs, follow-ups — or something else entirely? I'm curious what breaks first in other people's inboxes, so drop it in the comments.

Top comments (0)