GoHighLevel appointment reminders are built with a workflow that starts on an appointment trigger (Customer Booked Appointment or Appointment Status), waits until a set time before the appointment using the Wait action's appointment option, and then sends a text or email; a common pattern is one reminder 24 hours before and one an hour before. The Wait action can hold a contact until before, at or after a scheduled appointment, with an offset in months, days, hours and minutes, and lets you choose what happens if that time has already passed. The usual gotcha: appointment merge fields such as the start time can come through blank when the workflow does not start from an appointment trigger, so test with a real booking. Steps, wording and fixes below (HighLevel help articles read October 19, 2026).
How to set up appointment reminders in GoHighLevel
- Trigger: Customer Booked Appointment, filtered to the calendar. If you want only confirmed appointments, use Appointment Status set to Confirmed.
- Wait: choose the appointment option and set "Before" 24 hours.
- Send SMS or email: use the start-time merge field and a link to reschedule or confirm.
- Wait: "Before" 1 hour.
- Send the second reminder.
- Exit rules: if the appointment is cancelled or rescheduled, the contact should leave the workflow so a stale reminder is not sent.
Sources: HighLevel's Wait action and Customer Booked Appointment trigger articles, and the Appointment Status trigger article for the Confirmed status. An older article describes a "Wait for Event/Appointment Time" step that needs an event start date set first; check which one your account shows.
- On bookingConfirmation by text and email
- 24 hours beforeReminder with confirm or reschedule
- 1 hour beforeFinal reminder with address and parking
- If a no-showRecovery sequence takes over
What should a GoHighLevel appointment reminder say?
A GoHighLevel appointment reminder should confirm the booking with a change link, remind 24 hours before with a reply option to confirm or reschedule, and send a short note an hour before.
| When | Channel | Message |
|---|---|---|
| On booking | SMS and email | You are booked with {{location.name}} on {{appointment.start_time}}. Need to change it? Reply here or use this link. |
| 24 hours before | SMS | Reminder: your appointment with {{location.name}} is tomorrow at {{appointment.start_time}}. Reply C to confirm or R to reschedule. |
| 1 hour before | SMS | See you at {{appointment.start_time}} today. Address and parking: [link]. |
| After a no-show | SMS | See no-show recovery. |
Handling replies like "C" and "R" needs a workflow that listens for the reply; test it before you promise it. Clinics should keep reminders generic and avoid putting a service or condition in the text; see the HIPAA add-on guide.
What happens if the reminder time has already passed?
Someone who books for tomorrow morning at 5 pm today is already inside the 24-hour window. HighLevel's Wait action lets you choose what to do if the time has passed: continue to the next action, go to a specific step, exit the contact, or skip all outbound communication until the next wait. For reminders we usually continue, so the person still gets the one-hour reminder, and skip the 24-hour one. Test each case with real bookings.
Why are my GoHighLevel appointment reminders not sending?
GoHighLevel appointment reminders usually fail to send because the trigger is a stage change instead of an appointment, the offset or time zone is wrong, or rescheduled bookings have no exit.
| Symptom | Cause | Fix |
|---|---|---|
| Start time shows blank | The trigger is a stage change, not an appointment (in our builds) | Use an appointment trigger and test with a real booking |
| Reminder sent after the appointment | Offset set to "After" or time zone mismatch | Check Before/After and the calendar time zone |
| Rescheduled booking gets old reminders | No exit on reschedule | Add an exit and re-enrol from the new booking |
| Nothing sends | Registration, wallet or workflow off | Check A2P, the wallet, and that the workflow is published |
| Google Calendar conflicts | Sync issue | See calendar not syncing |
Sources and further reading
Checked at the time of writing; prices, features and policies change. Checked 2026-10-19.
- HighLevel: Workflow action, Wait (modified September 7, 2026) for the appointment option, the Before and After offsets and what happens if the time has passed
- HighLevel: Workflow trigger, Customer Booked Appointment (modified April 6, 2026) for the trigger and the calendar filter
- HighLevel: Workflow trigger, Appointment Status (modified April 6, 2026) for the Confirmed status filter
Frequently asked questions about GoHighLevel appointment reminders
How do I send a reminder 24 hours before an appointment in GoHighLevel?
Start on an appointment trigger, add a Wait action set to the appointment option "Before" 24 hours, then add the Send SMS or Email action.
Why is {{appointment.start_time}} blank?
In our builds the appointment merge fields come through blank when the workflow starts from a pipeline stage change rather than an appointment trigger. HighLevel's help articles do not spell this out, so use an appointment trigger and test with a real booking.
How do I handle rescheduled appointments?
Exit the old workflow run when the appointment changes and let the new booking start a fresh one. Test it end to end.
Can I send both SMS and email reminders?
Yes, use both actions in the sequence, and keep the texts short to avoid extra segment charges; see SMS and email costs.
How many reminders should I send?
Two is a common balance: one a day before and one an hour before. Add a confirmation request if no-shows are a problem.
What if someone books at the last minute?
Choose what happens when the wait time has passed: continue, skip or exit. Continue is usually right for the one-hour reminder.
Can you build reminders for my business?
Yes; it is part of our automation service.