Orders come in the way
your customers already text.
Voice calls solve the phone ringing at 8pm. WhatsApp solves the customer who does not want to call at all. Same AI, same kitchen ticket, same three-second turnaround — different front door.
I can take your order right here in this chat.
Our menu: almanara.menu/link
Just tell me what you'd like — in English, Arabic, or any language you prefer. 20:38
Confirmed ✓ Order #4821
ETA 25–30 min to Marina Walk
Kitchen is starting on it now 🍳 20:41
Your restaurant lists its WhatsApp Business number on Google, Instagram, delivery flyers. Customer taps to chat. Meta delivers every incoming message to a webhook URL you register once during setup.
POST /api/whatsapp/webhook X-Hub-Signature-256: sha256=a1b2c3... { from:"+971 50 ••• 4412", text: "Hi, I want to order for delivery to Marina Walk", timestamp: 1728324521 }
Each phone number gets a persistent session. First message triggers your restaurant's welcome, subsequent messages append to the running conversation. Menu, prices, and dialect notes are cached and prepended as system context.
const session = sessions.getOrCreate({ from: "+971 50 ••• 4412", restaurant: "al_manara_grill", ttl: 7200 // 2h session window }); session.append({ role:"user", text: msg.text });
Same Claude Sonnet 4.6 model that answers phone calls, same prompt engineering, same tool-use to add items to a running order. Language detected automatically from the incoming text. Order state maintained turn-by-turn until customer confirms.
tool_use: "add_to_order" { items: [ { qty:1, name:"Chicken Shawarma" }, { qty:1, name:"Fattoush Salad" }, { qty:1, name:"Orange Juice" } ], language: "ar", delivery: "Marina Walk" }
The moment the customer says "yes", we call the same createKOT() function the voice channel uses. Kitchen ticket prints. Order gets a number. Confirmation goes back to WhatsApp with ETA. Same monitor portal shows it live — so you can edit the ticket before the kitchen starts if the AI misheard.
const kot = await createKOT({ restaurant: session.restaurant, items: session.order.items, total: 77, channel: "whatsapp", delivery: "Marina Walk" }); sendWhatsApp(from, `Confirmed ✓ Order #${kot.n}`);
The same brain, three front doors.
Voice, WhatsApp, and the manual admin channel all funnel through the same order-extraction and KOT-print pipeline. The AI does not know or care whether the customer spoke or typed — it just sees a running conversation and a menu.
Best for guests who are hungry now, want it fast, don't want to type on a phone. Regular customers who already know your menu.
- 2.8s from "hello" to KOT printed
- Works with any phone — no app
- Handles simultaneous callers
- Best conversion for dinner-rush overflow
Best for guests browsing the menu at leisure, ordering for a group, sending screenshots of what they want. Also — everyone in the UAE under 40.
- Async · they can order over 10 minutes
- Menu link, images, order history all inline
- Works from Google, Instagram, flyers
- Best for slower research-then-order behaviour
The questions restaurant owners ask.
Your customers already text.
Now they can order.
Voice and WhatsApp are both included in the Pro plan (AED 1,499/month). Same 30-day free trial, same install-in-a-day, same walk-away-if-not-happy.