All 67 builds

Booking and scheduling

Your clinic's WhatsApp front desk

A small clinic's front desk spends its whole morning answering the same five messages: can I book, can I move Friday, what time am I in, do you take card, are you open Saturday. Below is the workflow I built: it reads each WhatsApp message, works out which of those it is, and deals with it against your real diary.

The question
this build answers

How do I let patients book, change and cancel appointments over WhatsApp, straight into the diary my practitioners already use?

From the first trigger
to the finished job.

The working version, step by step.

  1. Read the message once

    The workflow makes a single model call at temperature 0 and takes back a fixed shape: the intent, the practitioner, a preferred day and time, and any question. I built everything after that point as deterministic code, so the model is never read twice for the same message.

  2. Offer only slots that are genuinely free

    The workflow reads the practitioner's diary first, then offers the first two openings that clash with nothing and sit inside your opening hours. I built opening hours to read in your clinic's own timezone rather than the server's, so a time change doesn't move an appointment.

  3. Look up the real appointment before changing it

    Cancel, reschedule and check all look the patient's existing appointment up first, so nothing is confirmed or cancelled from memory.

  4. Answer the rest from your own information sheet

    I built it to answer anything that isn't a booking, change or cancellation from your own clinic information sheet in Settings, well away from the model's imagination.

  5. Draft first, send when you're ready

    The reply gets composed every time in one Code node, and I leave it unsent until you enable the send node yourself. Cancel ships disabled too, on purpose: a template that can delete from a live diary shouldn't prove that on its first run.

Going through n8n's review

Run a clinic WhatsApp receptionist that books, cancels and checks appointments with Google Calendar

This one is going through n8n's review. My creator page lists every template of mine that's already live, so you can see what else is available while this one clears.

See my templates on n8n

Who this is for

Single-site clinics and practices that take bookings on WhatsApp and keep the diary in Google Calendar: dental and physiotherapy practices, opticians, veterinary practices, private GPs, and salons with named practitioners.

What ships disabled, and why

The send node and the cancel-appointment node both ship disabled. I built it that way because the first run of a template that can write into or delete from a live diary shouldn't be the run you find out it does the wrong thing on.

What it costs to run

One model call per incoming message, at temperature 0, plus whatever your WhatsApp Business number, Google Calendar and OpenAI key already cost you.

Before you spend anything

The fit matters.

Who should not build this

If your practitioners don't each have their own calendar, or a shared one with clear ownership, the availability check has nothing reliable to read.

If you run more than one site with different opening hours, this workflow is built around one clinic's rules in one Settings node, and you'd be running it once per site.

Yours to keep

What lands
on your desk.

  • The workflow set up in your own n8n, on your own WhatsApp Business number and Google Calendar
  • Your clinic name, timezone, opening hours, slot length and practitioner list written into one Settings node
  • The send node left disabled until the drafts read the way you want
  • Cancel-appointment left disabled until you've tested it

A few useful
answers.

Does it book into a calendar my practitioners don't already use?

It writes into the same Google Calendar your practitioners already look at, one calendar per practitioner or one shared calendar, whichever you set up.

What stops it offering a slot that's actually taken?

It reads the practitioner's real diary before offering anything, and only offers slots that clash with nothing inside your opening hours.

Does it send replies automatically from the first run?

Sending ships disabled, so your first run shows you what it would have said before anything reaches a patient.

Can it cancel an appointment straight away?

The cancel step ships disabled too, on purpose, until you've tested it. A workflow that can delete from a live diary shouldn't prove that on its first real run.

Make this work for you

Your tools.
Your working version.

Want this built and handed over working? Tell me what your version needs to do. One line is enough to start.

Start a brief