Two-step appointment reminders that cut no-shows
Fewer empty slots from forgotten appointments.
The problem
No-shows waste paid staff time and slots someone else would have booked.
What it does
Every hour it checks upcoming appointments and sends a 24-hour reminder (reply C to confirm) and a 2-hour reminder, each exactly once.
- Import
appointment-reminders-no-show.n8n.json. - Set APPOINTMENTS_URL returning [{id, name, phone, start}] for the next 48h (Calendly/Acuity APIs, Google Calendar via the native node, or your booking tool).
- The code uses workflow static data to avoid double-sending. Keep the workflow active.
- Attach Twilio, set BUSINESS_NAME, activate. Optional: handle 'C' replies with a second Twilio inbound webhook workflow.
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
Calendly and Acuity have built-in SMS reminders on paid plans, so use those if you have them. Make: Google Calendar 'Search events' on schedule → Filter → Twilio.
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. Appointment reminders are transactional; don't add promos. Clinics: no diagnosis or treatment details in texts (HIPAA).
Expected result
Two-step SMS reminders commonly reduce no-shows substantially compared with no reminders.
Workflow file: appointment-reminders-no-show.n8n.json