WhatsApp Appointment Bot — n8n workflow with Meta Cloud API

Built this for a real physiotherapy clinic and packaged it as a reusable template.

What it does:

  • Receives incoming WhatsApp messages via Meta Cloud API webhook
  • Processes an interactive appointment menu (date, time, service)
  • Sends automatic confirmation messages with typing delay simulation
  • Logs all incoming/outgoing messages to your own API/database

Nodes: Webhook, IF filter, Code (menu logic), HTTP Request (Meta API), Wait

Tested in production. Import the JSON, swap your Phone Number ID and Access Token, point it to your database URL — done.

Available here: WhatsApp Appointment Bot — Ready-to-use n8n Workflow ($9)

Happy to answer questions about the setup.

2 Likes

Welcome @PRAGMA_Automations!

Clean setup - the typing delay before sending the confirmation is a nice touch for UX. One production edge case worth handling: Meta Cloud API sometimes delivers the same webhook event twice (especially on unstable connections). Adding a deduplication step using the messages[0].id field from the webhook payload - store it in your DB on first receipt and skip processing if it’s already there - prevents users from getting duplicate confirmations. Also worth noting for others who implement this: the webhook verification (GET request with hub.challenge) needs to respond before your workflow continues, so the “Respond Verification” branch at the start is the right pattern to keep that separate.

2 Likes

"Thanks for the feedback! Really appreciate the edge case notes.

The deduplication via messages[0].id is something we hadn’t handled explicitly — we’ll add a check against our SQLite DB before processing. Good catch on unstable connections causing duplicate deliveries.

The hub.challenge branch is already separated at the start of the workflow as you noted, so that part’s covered. We’ll prioritize the dedup step in the next iteration.

Appreciate the insight!"