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.
- Every 5 minutes, n8n polls the Appointments tab in Google Sheets for updated rows.
- It converts the sheet's date and time values to ISO strings and works out a 30-minute end time.
- It continues only when Status is "Cancelled" and the row isn't already marked as waitlist-processed, then flags the row as processed.
- It finds "Waiting" entries in the Waitlist tab with the same ServiceType and loops through them one at a time.
- 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.
- If they confirm: it creates the Google Calendar event, appends a "Filled - Waitlist" row, marks the entry "Booked" and texts a confirmation.
- If they don't: their entry becomes "Expired" and the next candidate is offered the slot.
- 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.
| Tab | Columns |
|---|---|
| Appointments | AppointmentID, PatientName, Phone, ServiceType, Provider, Date, Time, Status, WaitlistProcessed |
| Waitlist | WaitlistID, Name, Phone, ServiceType, AddedAt, Status |
How do you set it up?
You need Google Sheets OAuth, Twilio, Google Calendar OAuth connected in n8n. Then:
- Import the template into n8n.
- Create a spreadsheet with the Appointments and Waitlist tabs and the columns above.
- Connect Google Sheets OAuth and point the workflow at your spreadsheet and tab IDs.
- Connect Twilio, set your "from" number, and set the owner's number for the unfilled alert.
- Connect Google Calendar OAuth and pick the target calendar.
- 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.
| Test | What should happen |
|---|---|
| Cancel a slot with two matching waitlist entries | First person gets the SMS; if they ignore it for 20 minutes, the second is offered |
| First candidate confirms | Calendar event created, row "Filled - Waitlist", entry "Booked", confirmation SMS sent |
| No one on the waitlist matches the ServiceType | Appointment marked "Cancelled - Unfilled", owner texted |
| Same cancelled row edited again | Not 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