Food & Beverage · 12 days
WhatsApp Restaurant Ordering Bot (WATI + n8n)
The restaurant was taking phone orders. 4 locations, each with one phone, each phone ringing constantly during dinner rush. Order errors were running ~12% (wrong size, missed modifier, wrong address). Phone staff was burning out. They didn't want a delivery app like FoodPanda — too much commission. They wanted WhatsApp orders direct to the kitchen.
WhatsApp Restaurant Ordering Bot (WATI + n8n)
Client: Mid-sized restaurant chain (4 locations, Lahore)
Industry: Food & Beverage
Timeline: 12 days
Stack: n8n · WATI · Claude · Google Sheets · Stripe (for online payments)
Slug: /case-studies/whatsapp-restaurant-ordering-bot
The problem
The restaurant was taking phone orders. 4 locations, each with one phone, each phone ringing constantly during dinner rush. Order errors were running ~12% (wrong size, missed modifier, wrong address). Phone staff was burning out.
They didn't want a delivery app like FoodPanda — too much commission. They wanted WhatsApp orders direct to the kitchen.
What I built
The flow:
- Customer messages "Hi" or "Order" to the restaurant's WhatsApp number
- Bot replies with location picker (4 buttons via WATI's interactive messages)
- Customer picks location → bot sends menu PDF + "What would you like?"
- Customer types order in plain English: "2 chicken biryanis, 1 with extra spicy, and a sprite"
- Claude parses the message into structured JSON:
{ items: [...], modifiers: [...], total: ... } - Bot confirms the order with itemized total: "Got it: 2x Chicken Biryani (₨600 each, 1 extra spicy +₨50), 1x Sprite (₨150). Total ₨1400. Confirm?"
- On confirm → order pushed to Google Sheets (kitchen sees a live-updating dashboard) + Stripe payment link sent
- On payment → kitchen Sheet row turns green, customer gets confirmation + ETA
Key engineering decisions
- Claude parses freeform orders. Prompted with the menu JSON, told to return strict JSON. Way better UX than "press 1 for biryani, press 2 for karahi."
- Google Sheets as the kitchen display. Every location has an iPad showing their Sheet tab. New row = new order. Color-coded by status. Total cost: $0.
- WATI over Meta API for this client. They wanted the WATI dashboard for non-technical staff to handle escalations. Worth the $40/mo to them.
- Stripe Payment Links, not full checkout. Generated dynamically per order. No app, no cart, no PCI compliance headaches.
The numbers
- Order errors: 12% → 1.8% (parsing is more accurate than tired staff)
- Phone calls during rush: ~80% drop
- Avg order value: Up 15% (Claude suggests upsells: "Want to add naan?")
- Build cost: $1,800 fixed price + $50/mo running (WATI + Claude + Stripe is on transaction fees)
What surprised me
Customers loved typing orders more than calling. Especially women, especially older customers who didn't want to deal with the noise on the line. The bot is now the #2 ordering channel after walk-ins, ahead of the phone.