GoHighLevel no show automation starts with the Appointment Status workflow trigger set to No-show: when the appointment's status changes to No-show, the workflow sends a reschedule text, follows up the next day, moves the opportunity and stops as soon as the contact rebooks. HighLevel's trigger supports the statuses New, Confirmed, Cancelled, Showed and No-show, can enrol the primary contact, contacts and guests, or guests only, and can filter by calendar, event type, tag and who modified the status. The part people miss is that something has to set the status to No-show: a staff member, or an Update Appointment Status action. Below are the build, the timing and the limits.
How does GoHighLevel no show automation work?
GoHighLevel no-show automation starts from the Appointment Status trigger filtered to No-show, with a calendar filter for each calendar's wording and a choice of who enrols.
| Piece | What to set |
|---|---|
| Trigger | Appointment Status, filtered to "No-show". Add a calendar filter so each calendar gets its own wording. |
| Who enrols | Primary contact only (the default), contacts and guests, or guests only. The workflow runs once for the primary contact and once for each guest. |
| Statuses available | New, Confirmed, Cancelled, Showed, No-show (and Invalid). |
| Who sets "No-show" | A user marking the appointment, or a workflow action that updates the appointment status. Without one of those, the trigger never fires. |
| Other filters | Event type, tag, calendar group and "Modified By" (API, customer, user or workflow). |
Source: HighLevel's Appointment Status trigger article (read October 18, 2026). One article describes the trigger as also firing on rescheduled changes while the main status list does not include Rescheduled, so test it in your account before relying on a status.
- Minutes afterMarked no-show: text with a reschedule link
- Day 1Second message if they have not rebooked
- Day 3Call task for high-value visits
- Day 7Last message, then stop
A no-show recovery sequence that works
| When | Action | Example message or step |
|---|---|---|
| Minutes after marking | Send SMS | Hi {{contact.first_name}}, we missed you today. Want to pick a new time? Here is the link: {{calendar.link}} |
| Same time | Add tag "no-show", move opportunity to a No-show stage | Keeps reports honest |
| Next day | If the contact has not rebooked, send a second SMS or email | Short, one link, no guilt |
| Day 3 | Optional manual call task for the assigned user | A person closes the high-value ones |
| Day 7 | Last message, then exit | Stop after that; move to a nurture list |
The stop condition matters as much as the messages. Add an exit when the contact books again, using the Customer Booked Appointment trigger or a condition on the appointment, and when the opportunity stage changes. Without it, someone who rebooked keeps getting "we missed you" texts. A recent community thread asked when no-show chasing becomes too much, and our answer is a hard cap: two or three messages over a week, then stop.
How do you mark an appointment as a no-show in GoHighLevel?
You mark a no-show in GoHighLevel manually on the appointment, automatically with the Update Appointment Status action, or through your practice software sending the status by webhook.
- Manual: staff open the appointment in the calendar or the contact record and set the status to No-show.
- Automated: use HighLevel's Update Appointment Status workflow action after a rule you trust, such as "the appointment time passed 15 minutes ago and the contact has not checked in".
- Integrated: if your practice software knows who showed, send that status in through a webhook or integration. See GoHighLevel integrations.
Automatic marking can be wrong. Start manual, and automate only after a month of clean data.
Why is my GoHighLevel no-show workflow not firing?
A GoHighLevel no-show workflow usually does not fire because nobody marked the appointment No-show, there is no calendar filter, or guests are not enrolled.
| Symptom | Cause | Fix |
|---|---|---|
| Nothing happens after the appointment | Nobody marked No-show | Add the manual step or the update action |
| It fires for the wrong calendar | No calendar filter | Add the calendar or event-type filter |
| Guests did not get the text | Enrolment is primary contact only | Switch to contacts and guests if that is what you want |
| The contact is stuck in the workflow | No exit on rebooking | Add the exit condition. See workflows not triggering |
| Date merge fields are blank | Appointment merge fields only fill on appointment-based triggers | Use an appointment trigger, not a stage trigger |
Clinics have extra rules about what a reminder may say; see dental no-show recovery and the med spa page.
Frequently asked questions about GoHighLevel no show automation
What trigger do I use for a no-show workflow?
Use the Appointment Status trigger, filtered to No-show, for a no-show workflow. It fires when an appointment's status changes to that value.
How does GoHighLevel know someone was a no-show?
GoHighLevel does not decide on its own that someone was a no-show: a user, a workflow action or an integration sets the status.
How many follow-ups should I send after a no-show?
Two or three over about a week, then stop. More looks like pressure and risks complaints.
How do I stop messages when the contact rebooks?
Add an exit condition for a new booking or a stage change, and test with a contact who rebooks.
Can I include a reschedule link?
Yes, you can include a reschedule link with the calendar link merge field. Test that the link opens the right calendar.
Does this work for guests on group bookings?
The trigger can enrol guests only or contacts and guests, in which case it runs once per guest.
Can you set up no-show recovery for me?
Yes, as part of our automation service. The audit is free.