Makani Tech: Build. Automate. Evolve.

No-show Killer: WhatsApp Appointment Reminders with n8n + Claude (free workflow)

How to cut no-shows with WhatsApp reminders that confirm, reschedule and refill slots

FreeWorkflowBy Kishan Makani · updated 19 October 2026 · 6 min read

Google CalendarWhatsAppGoogle Sheets

Downloads

  • Download the n8n workflow (JSON)

    whatsapp-appointment-reminders-n8n.json · n8n workflow · 23 steps · starts with Every 30 minutes · uses Google Calendar, WhatsApp, Google Sheets, Anthropic, Slack · 34 KB

    Import into n8n: Create Workflow, then the menu, then Import from File.

How to import it into n8n
  1. In n8n, create a new workflow.
  2. Open the ⋯ menu at the top right and choose Import from File, then pick the downloaded .json. (Or open the file, copy everything and paste it on the canvas.)
  3. Open each node with a warning and connect your own account: the file carries no passwords or keys.
  4. Run it once with Test workflow, check the result, then switch it to Active.

What it does

Every 30 minutes the workflow reads your Google Calendar. Appointments about 24 hours and 2 hours away get a WhatsApp template with Confirm and Reschedule buttons, each sent exactly once. When the patient replies, by button or in their own words, Claude reads it as confirm, move or other. Confirmed appointments are marked in the sheet with a thank-you. Move requests go to the front desk in Slack first; after 'Free the slot' the calendar event is removed, the patient gets your booking link, and the first 3 people on your waitlist are offered the slot on WhatsApp. Anything unclear goes to the front desk.

Who it is for

Clinics, dentists, physiotherapists, salons, spas and coaches who book appointments in Google Calendar and lose time and money to no-shows.

What you need

  • An n8n account reachable from the internet
  • Google Calendar with the patient's phone in each event description
  • WhatsApp Business Cloud API with three approved templates
  • An Anthropic API key
  • A Google Sheet with tabs Appointments and Waitlist
  • Slack (#front-desk)
  • A booking link (Cal.com, Calendly or your own)

How the workflow runs, node by node

The slides show the same steps. Open the workflow in n8n and you will see a sticky note over each one.

Step 1 · Remind at 24 h and 2 h

Every 30 minutes n8n checks your calendar. Appointments 24 hours or 2 hours away get a WhatsApp with Confirm and Reschedule buttons. Each reminder goes out exactly once.

  • Every 30 minutes: Runs every 30 minutes from 7 AM to 9:30 PM, so reminders never go out at night.
  • Get upcoming appointments: Reads appointments in the next 25 hours from your clinic or salon calendar.
  • Who needs a reminder now: Picks appointments that are about 24 hours or 2 hours away, reads the patient's name from the title and phone from the description, and formats the time in IST. Events with no phone are skipped.
  • Not reminded yet: Remembers event id plus window, so each appointment gets exactly one 24 hour and one 2 hour reminder.
  • Send reminder: Sends your approved template with Confirm and Reschedule quick reply buttons: 'Hi Priya, see you tomorrow at 10:00 AM for your cleaning'.
  • Log reminder: Keeps one row per appointment in the Appointments tab, so a reply can be matched to the right booking.

Step 2 · Claude reads the reply

Buttons are easy. But people also type 'can we do 5 pm?' or 'beta ki tabiyat kharab hai'. Claude reads any reply as confirm, move or other, and notes a preferred time.

  • WhatsApp Trigger: Fires when a patient taps Confirm or Reschedule, or types a reply.
  • Clean up reply: Drops delivery receipts and turns a button tap or typed text into one clean reply with the phone number.
  • Find their appointment: Finds this phone number's appointments in the Appointments tab. The next upcoming one is the one they are replying about.
  • Understand reply with Claude: Understands both button taps and free text like 'can we do 5 pm instead?' or 'beta ki tabiyat kharab hai': confirm, move or other, plus any time they mention.
  • Claude: Claude (claude-sonnet-5-5) at temperature 0, so answers stay consistent from run to run.
  • Reply schema: Intent, preferred time and a one-line summary, so the routing is exact.
  • Route reply: Confirmed goes to the sheet. Wants to move goes to the front desk. Anything else is passed to a person.

Step 3 · Confirmed, or the desk decides

Confirm marks the sheet and sends a thank-you. A move request goes to the front desk in Slack. Nothing is cancelled until they tap Free the slot.

  • Mark confirmed: Marks the appointment Confirmed, so the front desk can see who is definitely coming.
  • Send see you: Sends a short thank-you. Free text is fine because they just replied.
  • Ask front desk: Asks the front desk in Slack before anything is cancelled: 'Free the slot' or 'I'll handle it'. Waits up to 3 hours.
  • Front desk approved?: Only 'Free the slot' changes the calendar.
  • Alert front desk: One Slack alert for replies that need a person (questions, anything unclear) and for any WhatsApp send that failed.

Step 4 · Refill the slot from the waitlist

Approved? The slot is freed in the calendar, the patient gets your booking link, and the first 3 people on your waitlist are offered the free slot on WhatsApp.

  • Free the slot: Removes the appointment from the calendar so the slot is free again. Only runs after the front desk approves.
  • Send rebooking link: Tells the patient the old slot is cancelled and sends your booking link to pick a new time.
  • Read waitlist: Reads people waiting for an earlier slot (Name, Phone, Service, Status = Waiting).
  • First 3 on waitlist: Takes the first 3 in the queue, so the slot is not offered to everyone at once.
  • Offer slot to waitlist: Sends the 3 people an approved template: 'A slot opened up on Thu 10:00 AM. Reply YES to take it.' First to reply gets it (the front desk books it).

Setup

  1. Import the JSON file into a new n8n workflow.
  2. Connect Google Calendar on Get upcoming appointments and Free the slot and replace YOUR_CALENDAR_ID. Book events as 'Priya · cleaning' with 'Phone: 98765 43210' in the description.
  3. In Meta WhatsApp Manager, create templates appointment_reminder_24h and appointment_reminder_2h (variables: name, business, time; quick reply buttons Confirm and Reschedule) and slot_available (name, time, business).
  4. Connect WhatsApp on the trigger and the five send nodes. Replace YOUR_PHONE_NUMBER_ID, YOUR_BUSINESS_NAME and the booking link.
  5. Make tab Appointments (EventId, Phone, Name, Service, Start, When, Status, RepliedAt) and tab Waitlist (Name, Phone, Service, Status, AddedAt). Replace YOUR_SHEET_ID.
  6. Create an Anthropic credential on Claude and connect Slack on Ask front desk and Alert front desk.
  7. Create a test event 24 hours from now with your own number, activate, and tap each button.

How to customise it

  • Change reminder times (for example 48 h and 3 h) in Who needs a reminder now and the schedule.
  • Colour confirmed events green: add a Google Calendar update after Mark confirmed.
  • Filter the waitlist by service (cleaning vs root canal) before First 3 on waitlist.
  • Add a 'Running late?' button and route it to the front desk too.

Guardrails

Nothing is cancelled or offered to the waitlist until the front desk taps Free the slot.

  • The calendar is only changed after the front desk taps 'Free the slot'.
  • Each appointment gets one 24 h and one 2 h reminder, never at night.
  • Replies Claude cannot place as confirm or move go to a person.
  • Reminders and waitlist offers use approved templates. Free text is only sent to people who just replied (24 hour rule).
  • Only the first 3 people on the waitlist are offered a slot, and a person books it.

Troubleshooting

  • No reminders go out. Check the event description has 'Phone:' followed by the number, and the workflow time zone is Asia/Kolkata.
  • Reply is matched to the wrong appointment. The workflow uses the next upcoming appointment for that phone. Families sharing one number should be booked with a note in the title.
  • Template error. The template name, en language and number of variables must match what Meta approved.
  • Event not deleted. The calendar credential needs write access to that calendar.

Want the members-only resources too?

A free account unlocks them all, including the ones shared in DMs.

Create a free account