Guides

Guide · n8n template · 6 min read

Fill cancelled appointments from a waitlist with n8n and Twilio

A cancelled appointment is a gap someone on your waitlist would happily take, if they hear about it in time. This workflow watches your appointments sheet, texts the right waitlisted patients one at a time, and books whoever confirms first. Nobody at the front desk has to work the phones.

Free template: Fill cancelled appointments from a waitlist with Google Sheets, Google Calendar and Twilio

By MD Faizan Uzzaman · Verified n8n Creator · Published 12 Oct 2026

How does n8n fill a cancelled appointment from a waitlist?

It polls the appointments sheet every 5 minutes. When a row turns "Cancelled", it texts matching waitlist entries one at a time with a confirmation link and books the first person who confirms within 20 minutes.

  1. Every 5 minutes, n8n polls the Appointments tab in Google Sheets for updated rows.
  2. It converts the sheet's date and time values to ISO strings and works out a 30-minute end time.
  3. It continues only when Status is "Cancelled" and the row isn't already marked as waitlist-processed, then flags the row as processed.
  4. It finds "Waiting" entries in the Waitlist tab with the same ServiceType and loops through them one at a time.
  5. For each candidate it sets their entry to "Offered" and sends a Twilio SMS with a one-tap confirmation link, then waits up to 20 minutes.
  6. If they confirm: it creates the Google Calendar event, appends a "Filled - Waitlist" row, marks the entry "Booked" and texts a confirmation.
  7. If they don't: their entry becomes "Expired" and the next candidate is offered the slot.
  8. If nobody confirms: the appointment is marked "Cancelled - Unfilled" and the owner gets a Twilio text.

What columns does the Google Sheet need?

Two tabs. Appointments holds the bookings the workflow watches, and Waitlist holds the people it can offer a freed slot to.

TabColumns
AppointmentsAppointmentID, PatientName, Phone, ServiceType, Provider, Date, Time, Status, WaitlistProcessed
WaitlistWaitlistID, Name, Phone, ServiceType, AddedAt, Status

How do you set it up?

You need Google Sheets OAuth, Twilio, Google Calendar OAuth connected in n8n. Then:

  1. Import the template into n8n.
  2. Create a spreadsheet with the Appointments and Waitlist tabs and the columns above.
  3. Connect Google Sheets OAuth and point the workflow at your spreadsheet and tab IDs.
  4. Connect Twilio, set your "from" number, and set the owner's number for the unfilled alert.
  5. Connect Google Calendar OAuth and pick the target calendar.
  6. Activate the workflow. To test it, set an appointment's Status to "Cancelled" with WaitlistProcessed not "Yes".

What should you test before it goes live?

The edge cases, not just the happy path.

TestWhat should happen
Cancel a slot with two matching waitlist entriesFirst person gets the SMS; if they ignore it for 20 minutes, the second is offered
First candidate confirmsCalendar event created, row "Filled - Waitlist", entry "Booked", confirmation SMS sent
No one on the waitlist matches the ServiceTypeAppointment marked "Cancelled - Unfilled", owner texted
Same cancelled row edited againNot processed twice, because WaitlistProcessed is already set

How long does each waitlisted person get to confirm?

Up to 20 minutes. If they don't open the link in that time, their entry is marked "Expired" and the next person is offered the slot.

What happens if nobody takes the slot?

The appointment is marked "Cancelled - Unfilled" and the owner gets a Twilio SMS, so a person can step in.

Which accounts do I need?

Google Sheets, Google Calendar and Twilio, all connected in n8n.

Related

About the author

I'm Faizan, a Verified n8n Creator. I build n8n automations and the booking back-ends behind voice agents. This template is free on n8n.io.

Want this set up for your business or your clients?

I build and test these workflows for small businesses and voice AI agencies, paid through Upwork escrow.