GoHighLevel Appointment Reminders and No-Show Workflow
GoHighLevel appointment reminders run from a workflow that starts on the booking, sends a confirmation, then reminders timed before the appointment with a Wait Step, and checks the appointment status before each send. No-show recovery must be a second workflow, because a status change to No Show removes the contact from the first.
Part of the guide: GoHighLevel automation
Key takeaways
- Use two workflows, not one. HighLevel's appointment scenarios article says a status change from New, Confirmed or Showed to Cancelled, Invalid or No Show removes the contact from the running workflow, so no-show recovery needs its own Appointment Status trigger.
- Time reminders with the Wait Step option 'an upcoming appointment or booking', set to a duration before the scheduled time. If that time has already passed, choose to skip outbound messages rather than send a stale reminder.
- Customer Booked Appointment fires only when the customer self-books through a booking link. Appointments your team books manually do not fire it, so use the Appointment Status trigger if staff also book.
- A rescheduled appointment is treated as a new one and the contact re-enters from the start, per HighLevel, which can double reminders unless the first run exits cleanly.
- Reminder cadence has no official HighLevel default to copy. Two to three touches are common; test your own cadence and read your no-show count, using the illustrative arithmetic here only as a template.
How do you build appointment reminders in GoHighLevel?
Trigger on the booking, send a confirmation, then use a Wait Step timed to the appointment before each reminder. HighLevel’s Wait action has a type called ‘an upcoming appointment or booking’ (Appointment/Calendar Event, Service Booking or Invoice Due Date) with the option to proceed at the scheduled time or a set duration before or after it. That is the whole mechanism; the rest is choosing the trigger, the cadence and the exits.
Reminder workflow, in order
- Create the calendar first. See the calendar and booking setup guide.
- In Automation, Workflows, create a workflow (or start from HighLevel’s Appointment Confirmation + Reminder recipe) and add the appointment trigger, filtered to the calendar.
- Add Send SMS and Send Email for the confirmation.
- Add a Wait Step: ‘an upcoming appointment or booking’, proceed 24 hours before.
- Add an If Else on appointment status so a cancelled booking exits.
- Add the reminder SMS. Repeat steps 4 to 6 for the same-day reminder.
- On the Settings tab, set the Time Window and Stop on Response, then test and Publish.
Which trigger should start the workflow?
Use Appointment Status if staff ever book appointments; use Customer Booked Appointment only for self-service booking. HighLevel’s Customer Booked Appointment article (modified April 6, 2026) says the trigger fires when a customer books through a booking link, does not fire for manually booked appointments, and does not support recurring appointments.
| Trigger | Fires on | Misses |
|---|---|---|
| Customer Booked Appointment | Customer self-books | Staff-booked, recurring |
| Appointment Status | Status changes: New, Confirmed, Cancelled, Showed, No-show, Invalid | Services v2 bookings, which have a separate Service Booking trigger |
The Appointment Status trigger (modified April 6, 2026) adds filters for event type, status, tag, calendar, calendar group and Modified By (API, Customer, User or Workflow). Both can enroll the contact only, contact and guests, or guests only.
What reminder cadence works?
There is no official HighLevel cadence. Practitioner guides disagree, with examples ranging from a day plus an hour before, to a day plus two hours, to two days, a day and two hours, so treat any cadence as a starting hypothesis. A reasonable start for most service businesses is three touches: an immediate confirmation, one the day before, one a few hours before.
The same-day row matters. If a booking is made inside the 24-hour window, the ‘before’ wait time has already passed. HighLevel’s wait options for a past date are: continue to the next action, exit the contact, go to a specific step, or skip outbound communication until the next wait or event-date action. Choose skip, or you send a ‘24 hours until your appointment’ text to someone whose appointment is in two hours.
Which calendar and workflow settings change the results?
Four settings decide whether reminders arrive on time and only once.
| Setting | Where | Why it matters |
|---|---|---|
| Time Window | Workflow, Settings tab, Communication Settings | Pauses SMS and email outside your hours and resumes at the next slot. A same-day reminder can slip past the appointment if the window closes. |
| Timezone | Same section | Account Timezone or Contact Timezone for waits and windows; contacts with no timezone fall back to the account’s. |
| Allow Re-entry | Workflow, Settings tab | Appointment triggers always allow re-entry per HighLevel, so each new booking starts a run. |
| Stop on Response | Workflow, Settings tab | Ends the workflow if the customer replies to a message from it, which is wrong for a confirm-by-reply flow if you need to read the reply. Decide deliberately. |
Calendar-side checks (buffer time, minimum notice, per-user sync) are in the calendar setup guide. If external calendars drift, use Google Calendar not syncing. Keep the standing details, such as the address or video link, in custom values.
How do you handle confirmation replies?
Treat a reply as its own small workflow. Trigger on Customer Replied, filter by phrase, and update the appointment. HighLevel’s Customer Replied trigger offers filters including Contains Phrase, Exact Match Phrase, Has Tag, Doesn’t Have Tag, Intent Type, Replied to Workflow and Reply Channel, and fires each time a qualifying message arrives by default.
- Word the reminder with one clear instruction: ‘Reply C to confirm.’
- Customer Replied trigger, Reply Channel SMS, Replied to Workflow set to the reminder workflow, Contains Phrase ‘C’.
- Action: Update Appointment Status to Confirmed. HighLevel says the action updates the triggering appointment, or the contact’s most recent one when the workflow did not start from an appointment event, so test with a contact who has two bookings.
- For any other reply, create a task for a person. Do not auto-cancel on a stray word.
A single letter will match unrelated replies, so use Exact Match Phrase where you can, and send the unmatched replies to a human.
How do you recover no-shows without a second reminder loop?
Build a separate workflow on the Appointment Status trigger with the status filter set to No-show. It has to be separate: HighLevel’s appointment scenarios article says a change from New, Confirmed or Showed to Cancelled, Invalid or No Show counts as cancelled and the contact is removed from the workflow, with no further actions performed.
| Step | Setting |
|---|---|
| Trigger | Appointment Status, status No-show, calendar filter set |
| Condition | If Else: skip if the contact already has a new appointment or is tagged Do Not Contact |
| Wait | Same day or next morning, inside the Time Window |
| Action | Send SMS: no blame, one link to rebook; Add Task for high-value bookings |
| Wait | Wait for the contact to reply, with a timeout |
| End | One follow-up at most; then tag for review |
Two caveats from HighLevel’s documentation. First, it defines No-show but does not say how the status gets set, so give someone the job: staff mark it on the appointment, or a workflow uses the Update Appointment Status action. Second, changing a status to Showed or No-show does not push an update to a connected Google, Outlook or iCloud calendar, so do not expect the external calendar to show it.
For a paid or deposit-based booking, add a line about the policy in the message and make the rebooking link carry the same rules. Cancellation fees and notice periods are policy decisions that belong in your Booking rules and terms, not in workflow logic alone.
What is it worth? An illustrative calculation
The value of reminders is the no-shows they prevent times the revenue per slot. The numbers below are invented to show the arithmetic; replace each with your own four-week data.
| Input (illustrative) | Value |
|---|---|
| Appointments per month | 120 |
| Average value per kept appointment | $180 |
| No-show rate before reminders | 20% (24 no-shows) |
| No-show rate after reminders | 14% (about 17 no-shows) |
| No-shows prevented | about 7 |
| Revenue recovered | about $1,260 per month, before any slots you refill |
If your measured drop is smaller, the build still costs a few hours; if your appointments are worth more, it is larger. Do not borrow a percentage reduction from a vendor blog: published ranges mix industries and cadences. Record no-shows for four weeks before launch, then compare.
How do reminders and no-show recovery fail?
Most failures are re-entry, status or timing mistakes.
| Symptom | Cause | Fix |
|---|---|---|
| Reminder sent for a cancelled booking | No status check, or a second workflow still running | Add If Else on status before each send; check Enrollment History |
| Two reminders after a reschedule | Reschedule treated as a new appointment, old run not exited | Test a reschedule; confirm the first run exits |
| Reminder arrives after the appointment | Time Window closed, or wrong timezone | Check Time Window and timezone on the Settings tab |
| Staff-booked appointments get nothing | Customer Booked Appointment trigger used | Switch to Appointment Status |
| ‘Reminder’ arrives minutes after booking | Booking inside the window with ‘continue’ selected | Choose ‘skip outbound communication’ |
| Reminders go out twice | Recipe workflow plus a hand-built one | See duplicate messages |
For workflows that never start, use workflow not triggering. Reminders are one of several layers; the others, and the order to build them, are in the GoHighLevel automation guide and the workflow examples. Consent for texting and quiet hours are covered in the compliance guide. If you want the calendar, reminders and recovery built and tested together, see GoHighLevel implementation services.
Sources
- HighLevel Support, Wait action, modified September 7, 2026. Supports the appointment wait type and past-date options. Checked 2026-10-13.
- HighLevel Support, Customer Booked Appointment trigger, modified April 6, 2026. Checked 2026-10-13.
- HighLevel Support, Appointment Status trigger, modified April 6, 2026. Checked 2026-10-13.
- HighLevel Support, Appointment scenarios in workflow, modified April 21, 2025. Supports cancel, reschedule and no-show behavior. Checked 2026-10-13.
- HighLevel Support, Update Appointment Status action, via search summary; no full-page read. Verify in your builder. Checked 2026-10-13.
- HighLevel Support, Customer Replied trigger, via search summary. Checked 2026-10-13.
- HighLevel Support, Workflow settings overview, modified October 12, 2026. Checked 2026-10-13.
- Reminder cadence examples come from third-party setup guides found by search (Growwstacks, Growthable, GHL Experts); they disagree, and none is a HighLevel default. Not used for any statistic.