Auto-fill cancelled slots from a waitlist
Turn cancellations into booked revenue instead of empty time.
The problem
A last-minute cancellation usually means an empty, unpaid slot, even though people on a waitlist would have taken it.
What it does
When an appointment is cancelled, it texts the first 3 people on the waitlist with the open slot and a booking link: first come, first served.
- Import
waitlist-autofill-cancellations.n8n.json. - Send cancellation events to the Webhook (Calendly invitee.canceled webhook, Acuity, or Zapier) including the slot start time.
- Set WAITLIST_URL returning [{name, phone, sms_opt_in}] in priority order, and BOOKING_URL.
- Attach Twilio, activate. Tip: remove people from the waitlist once they book.
Credentials: each HTTP node uses a generic credential (Twilio = HTTP Basic Auth with Account SID/Auth Token; Resend/OpenAI = Header Auth Authorization: Bearer <key>). Values like $env.BUSINESS_NAME read environment variables. On n8n Cloud, replace them with literal text or n8n Variables ($vars).
Make / Zapier notes
Make: Calendly 'Watch events (canceled)' → Google Sheets 'Search rows' (limit 3) → Twilio. Zapier: same with Sheets lookup + Looping.
Compliance notes
SMS consent (TCPA / A2P 10DLC): Only text people who gave you their number for this purpose (form checkbox, booking, or past customer relationship for transactional messages). Marketing texts need prior express written consent. Register your Twilio number for A2P 10DLC, include your business name, honor STOP/HELP (Twilio handles STOP automatically), and only send 8am-9pm recipient local time. Waitlist members should have opted in to get texts about openings when they joined.
Expected result
Recovers a solid share of cancelled slots, often within minutes.
Workflow file: waitlist-autofill-cancellations.n8n.json