Solution guide · GoHighLevel

GoHighLevel appointment reminders not sending: causes and fixes

GoHighLevel appointment reminders not sending? Fix calendar notification settings, Wait steps, triggers, time zones and blocked SMS step by step.

GoHighLevel appointment reminders not sending: causes and fixes — guide thumbnail

Key takeaways

  • GoHighLevel sends appointment reminders in two separate ways: the Reminder notification inside each calendar’s Notifications tab, and a workflow with an appointment trigger and a Wait step, so first find out which one is meant to send yours.
  • Most workflow reminders fail because the trigger is wrong (a non-appointment trigger, the wrong calendar, or a filter that skips recurring bookings) or because the Wait step’s time had already passed when the contact reached it.
  • Reminders that arrive at the wrong hour almost always come from the workflow time zone setting: it uses either the account’s time zone or the contact’s, and falls back to the account time zone when the contact has none.
  • A reminder text is blocked when the contact has SMS DND switched on or the message is filtered, even though appointment emails can bypass Email DND.
  • Test with a real booking on the right calendar, then read the workflow’s execution history and the message status in Conversations to confirm the fix.

When GoHighLevel appointment reminders are not sending, the cause is nearly always one of five things: the reminder was never switched on for that calendar, the reminder workflow uses the wrong trigger or calendar, the Wait step’s time had already passed, the workflow is working in the wrong time zone, or the text was blocked by DND or a carrier. Each one leaves a clear trace in the calendar settings, the workflow history or the conversation, and each has a short fix.

This guide shows you how to tell which one you have, then fixes each cause step by step with the exact settings to use, as of November 2026. It is the same checklist I use when I set up GoHighLevel calendars and automations for clinics, trades and agencies.

Two ways GoHighLevel sends reminders

HighLevel has two separate reminder systems, and a lot of confusion comes from mixing them up.

  1. Calendar notifications. Each calendar has its own Notifications tab. HighLevel’s notifications guide lists six notification types (booked unconfirmed, booked confirmed, cancellation, reschedule, reminder and follow-up), each with Email, In-App, SMS and WhatsApp tabs. For a reminder you set how far before the appointment it goes, and you can add several timings.
  2. Workflows. A workflow starts from an appointment trigger, then uses a Wait step set relative to the appointment time followed by Send SMS or Send Email.
Calendar notifications Reminder workflow
Where Calendar settings → calendar → Notifications Automation → Workflows
Set-up time Minutes 15–30 minutes
Branching and logic No Yes (If/Else, tags, internal alerts)
Typical failure Toggle off, no timing, wrong recipient Wrong trigger, past Wait, time zone
Where to check The calendar’s Notifications tab Workflow execution history

Pick one system per calendar. If both are on, the contact gets two reminders; if you think one is on but neither is, nobody gets anything.

InfographicGet reminderssending again
  1. 1Find the sending systemCalendar notification or workflow?
  2. 2Switch the reminder onReminder type, toggle on, timing set.
  3. 3Fix the triggerAppointment Status, right calendar.
  4. 4Fix the Wait stepChoose what happens if time passed.
  5. 5Set the time zoneAccount or contact time zone.
  6. 6Clear DND and errorsRead the status in Conversations.
Source: HighLevel Support Portalscalewithhunaid.com

Find your cause in five minutes

Book a test appointment on the affected calendar with your own phone and email, with a start time more than 24 hours away. Then check, in this order:

What you see Likely cause Go to
Nothing in the workflow history for the contact Reminder is a calendar notification that is off, or the trigger does not match Cause 1 or 2
Contact entered the workflow, then left or finished early Wait time already passed, or the appointment was cancelled or rescheduled Cause 3
Reminder sent, but at the wrong hour Workflow time zone setting Cause 4
Reminder sent with blank date or time Not started from an appointment trigger Cause 2
SMS step ran, message shows failed or error DND, invalid number or carrier filtering Cause 5

Cause 1: the calendar reminder is not switched on

Do not assume a new calendar sends reminders: the setting is per calendar, so a reminder you set on one calendar does nothing for the others. HighLevel’s guide also notes that SMS needs phone numbers with country codes, and WhatsApp needs a connected, verified WhatsApp Business Account with approved templates.

The fix:

  1. Go to Calendars → Calendar Settings, open the affected calendar and click the Notifications tab.
  2. Choose the Reminder notification type.
  3. Open the Email tab, turn the toggle on and set the timing, for example 24 hours before. Use add trigger timing for a second reminder, for example 2 hours before.
  4. Open the SMS tab and do the same. Keep the message short and include the date, time and a way to reschedule.
  5. Check the recipients: the contact must be selected, not only the assigned user.
  6. Repeat for every calendar that should send reminders, including round-robin and class calendars.
  7. If a workflow also sends reminders for this calendar, turn one of them off.

Cause 2: the reminder workflow has the wrong trigger

A reminder workflow needs an appointment trigger so it knows which appointment to count down to. HighLevel says appointment custom values such as {{appointment.start_time}} only fill in when the workflow uses an appointment trigger, and that you should test with a real booking. Adding a contact to the workflow by hand is a common trap: a request on HighLevel’s ideas board describes manually added contacts getting the current date instead of the appointment’s and leaving the workflow straight away.

The trigger to use is Appointment Status. Its filters include In Calendar, In Calendar Group, Appointment Status Is and Modified By. HighLevel’s recurring appointments article says the older Customer Booked Appointment trigger is being deprecated, with Modified By covering the same cases (Customer for widget bookings, User for bookings made inside the CRM, API for API bookings). The same article explains a quiet cause of missing reminders: existing Appointment Status triggers were given an Event Type: Normal filter, so they do not fire for recurring appointments.

The fix:

  1. Open the workflow and click the trigger. Use Appointment Status, not a form, tag or pipeline trigger.
  2. Add In Calendar and select every calendar that should get these reminders. A filter on the wrong calendar is the most common reason a workflow never starts.
  3. Set Appointment Status Is to New and Confirmed (or leave status unfiltered if you want every booking).
  4. Leave Modified By empty unless you really want to exclude bookings made by staff or through the API.
  5. If you use recurring appointments, set Event Type to Any.
  6. Click Publish. A workflow left in Draft does nothing; see my guide to GoHighLevel workflows not triggering for the other trigger checks.
  7. Book a real test appointment and confirm the contact appears in the workflow’s execution history.

Cause 3: the Wait step’s time had already passed

This is the cause I see most. A workflow says “wait until 1 day before the appointment, send SMS; wait until 2 hours before, send SMS”. Someone books at 4pm for 10am the next morning. When they reach the first Wait step, “1 day before” is already in the past.

HighLevel’s Wait action guide says that when an event or appointment time has already passed, the workflow follows the step’s If already in the past setting: go to the next step, go to a specific step, or skip all outbound communication actions until the next Wait or Event Start Date action. The right choice depends on what comes next; the wrong one either sends a stale “see you tomorrow” text or skips everything.

Cancellations and reschedules also stop reminders. HighLevel’s appointment scenarios article says a contact whose appointment is cancelled, marked invalid or no-show is pulled out of the workflow, and a change of start or end time counts as a reschedule that also removes them. The Appointment Status article says a rescheduled appointment is treated as new and the contact starts again from the beginning, so the two articles differ; test a reschedule on your own workflow.

The fix:

  1. Open each Wait step in the reminder workflow and choose Event/Appointment Time, then Before, with the amount (for example 1 day, then 2 hours).
  2. In If already in the past, choose Skip all outbound communication actions till next wait for every reminder except the last. A late booking then skips the stale 24-hour text and still gets the 2-hour one.
  3. For the final Wait step, choose Go to next step only if the next message still makes sense close to the start time.
  4. If you use a Set Event Start Date action, place it before the Wait steps that use it. The Set Event Start Date guide describes it as the reference point for later Wait steps.
  5. Add an If/Else with the Appointment → Rescheduled condition if you want rescheduled contacts to get a different first message.
  6. Book one test appointment for tomorrow and one for next week, then reschedule one, and check the history for each.

Cause 4: reminders go out at the wrong time

If the reminder arrives but at the wrong hour, look at the workflow’s time zone. HighLevel’s workflow settings guide says every time-based step in a workflow uses one setting: the account time zone or the contact’s time zone. If it is set to the contact’s time zone and the contact has none on their record, it uses the account time zone. Changing the setting only affects contacts who enter after the change.

There is a second, text-level problem: {{appointment.start_time}} prints the time without a time zone label. A thread on HighLevel’s ideas board describes a client who booked in one time zone and received reminders showing the business’s local time.

The fix:

  1. Check the account time zone in Settings → Business Profile matches where appointments take place.
  2. In the workflow, open Settings and choose the time zone. For local businesses where clients come to you, use the account time zone. For online calls with clients in several regions, use the contact’s time zone and make sure forms capture it.
  3. Save and publish. Remember that contacts already waiting in the workflow keep the old setting.
  4. In the SMS text, write the time zone into the message, for example Your appointment: {{appointment.start_time}} (Eastern time).
  5. Check the workflow history for the next booking: it shows which time zone was used for each action.

Cause 5: the reminder text was blocked

If the workflow history shows the SMS step ran but the client says nothing arrived, open the contact in Conversations and click the message to see its status and error. HighLevel’s SMS troubleshooting article covers the main reasons: DND on the contact, invalid or landline numbers, sender problems and opt-outs. A contact who replied STOP gets permanent SMS DND, and messages to them fail with Twilio error 21610. Note that HighLevel says calendar notification emails can bypass Email DND, but this does not cover SMS.

The fix:

  1. Read the error code on the failed message before changing anything.
  2. If the contact has SMS DND on because they replied STOP, do not switch it off yourself. Ask them to text START or use email reminders instead.
  3. If the number is invalid or a landline, correct it and make sure your booking form requires a mobile number with the country code.
  4. If messages show as filtered or undelivered, check your A2P 10DLC campaign covers appointment reminders. My guides to SMS error 30007 and A2P 10DLC campaign rejections cover those fixes, or I can handle A2P registration for you.
  5. Keep links in reminders on your own domain and avoid public link shorteners, which carriers often filter.

Why reminders are worth getting right

Reminders are one of the cheapest ways to cut no-shows. A Cochrane review of randomised trials in healthcare found attendance rose with text reminders and phone-call reminders compared with no reminder, and text reminders cost less per attended appointment than calls.

ChartAppointment attendance by type of reminder
  • No reminder67.8%
  • Text reminder78.6%
  • Phone call reminder80.3%

Pooled attendance rates in healthcare trials. Text reminders came close to phone calls at a lower cost.

Source: Cochrane, Mobile phone messaging reminders for attendance at healthcare appointments (2013)

Common mistakes to avoid

InfographicReminders thatactually arrive

Silently fail

  • Avoid: Reminder set on one calendar only
  • Avoid: Tag or form trigger
  • Avoid: Recurring bookings filtered out
  • Avoid: Wait skips everything if late
  • Avoid: Testing by adding contacts by hand

Arrive on time

  • Do: Every calendar checked
  • Do: Appointment Status trigger
  • Do: Event Type set to Any
  • Do: Skip to next Wait if late
  • Do: Testing with a real booking
Source: HighLevel Support Portalscalewithhunaid.com
  • Running calendar and workflow reminders together. Clients get two texts and assume it is spam. Choose one.
  • No reschedule link. A reminder that only says “see you tomorrow” turns a reschedule into a no-show. Add the reschedule link from the calendar.
  • Never reading the history. The workflow execution history shows exactly which step ran, skipped or failed. Check it weekly for a busy calendar.

Confirm it is fixed

You are done when a real test booking on each calendar shows the contact in the reminder workflow (or the calendar notification is on with the right timing), each reminder arrives at the expected local time with the correct date and time filled in, a late booking skips the stale reminder but still gets the last one, and the message status in Conversations shows delivered.

Get reminders working across every calendar

Reliable reminders come from one clear system per calendar, the right trigger, Wait steps that handle late bookings, and a sending number that carriers trust. If calls are the problem too, see missed call text back not working.

If you would rather hand it over, I set up and repair GoHighLevel calendars, workflows and reminders, and register your A2P campaigns so reminder texts are delivered.

Hunaid Zia

Hunaid Zia

GoHighLevel Expert, Developer & Automation Specialist

I have built GoHighLevel systems, AI agents and websites for 50+ businesses since 2020, and written this guide from that work. Questions about your own setup? Book a free call.

References

  1. Calendars & Services: SMS, Email & In-App Notifications — HighLevel Support Portal
  2. Workflow Action - Wait — HighLevel Support Portal
  3. Workflow Action - Set Event Start Date — HighLevel Support Portal
  4. Workflow Trigger - Appointment Status — HighLevel Support Portal
  5. Appointment scenarios in Workflow — HighLevel Support Portal
  6. Workflow Settings - Overview — HighLevel Support Portal
  7. How to Set Up Recurring Appointments — HighLevel Support Portal
  8. When {{appointment.start_time}} or any other appointment custom values are not showing up — HighLevel Support Portal
  9. If/Else Workflow Action - Appointment Filter Options — HighLevel Support Portal
  10. SMS Not Sending / Delivering to Contacts in HighLevel — HighLevel Support Portal
  11. Twilio Error 21610 “The message from/to pair violates a blacklist rule” when sending SMS — HighLevel Support Portal
  12. Add “Wait Until Specific Time on Day Before Appointment” Option in Workflows — HighLevel Ideas
  13. {{appointment.start_time}} needs time zone added — HighLevel Ideas
  14. Cater for manually adding contacts to appointment confirmation workflow — HighLevel Ideas
  15. Mobile phone messaging reminders for attendance at healthcare appointments — Cochrane

FAQ

Quick answers.

The questions people ask most about gohighlevel appointment reminders not sending.

Ask me directly

The usual causes are a reminder that was never switched on in the calendar’s Notifications tab, a workflow that uses the wrong trigger or calendar filter, a Wait step whose time had already passed, or a contact with SMS DND turned on. Check the calendar settings first, then the workflow’s execution history for the test contact.

Calendar notifications are quicker to set up and need no workflow. Workflows give you more control: branching, different messages per calendar, If/Else checks and internal alerts. Pick one per calendar, because running both sends the contact two reminders.

If the appointment was booked less than 24 hours ahead, the Wait step’s time had already passed when the contact reached it. HighLevel then follows the Wait step’s “if already in the past” setting, which can move on, jump to a set step or skip outbound messages until the next Wait.

The workflow uses either the account time zone or the contact’s time zone for every time-based step. If it is set to the contact’s time zone and the contact has none, it falls back to the account time zone. Changing the setting only affects contacts who enter afterwards.

Appointment custom values only fill in when the workflow starts from an appointment trigger and the contact has a real appointment. Adding a contact to the workflow by hand, or using a form or tag trigger, leaves them empty. Test by booking a real appointment.

Not by default in workflows. HighLevel gave existing Appointment Status triggers an Event Type filter set to Normal, so they ignore recurring appointments. Set the filter to Recurring or Any on the trigger that should cover them.

According to HighLevel, a cancelled appointment pulls the contact out of the workflow, so no more reminders go out. A rescheduled appointment also removes them, and HighLevel’s articles differ on how they re-enter, so test a reschedule on your own workflow.

Not with a single Wait step as of November 2026: “1 day before” waits until exactly 24 hours before the start time, and a fixed-hour option is still a request on HighLevel’s ideas board. The workaround is to wait until a set time before the appointment and then add a time-of-day window to the SMS step.

Yes, if you send from a US long-code number. Unregistered or poorly registered traffic is more likely to be filtered by carriers, which looks exactly like a reminder that was never sent. Check the message status in Conversations for an error code.

Rather have it fixed?

I can do thisfor you.

If you would rather not work through this yourself, tell me what is going on and I will fix it — usually faster than reading the guide twice.

Spots fill fast — most weeks I take on two new builds.

Chat with Hunaid Zia on WhatsApp (+92 340 422 2101), opens in a new tab