GoHighLevel workflow not working? How to find out why
Why GoHighLevel workflows stop firing and how to fix them, from draft mode and stale tag filters to re-entry settings, DND and tag guards blocking repeat customers.
You built the workflow, you tested it once, and it worked. Now a customer booked, nothing happened, and you only found out when they asked why nobody confirmed. GoHighLevel workflows rarely fail randomly. There is almost always a specific, findable reason, and the logs will usually point you to it.
Here is the order I work through when a workflow stops firing.
Start with the enrolment history and execution logs
Before you change anything, find out what actually happened. Every workflow has an enrolment history and execution logs. Search for the contact and you'll land in one of three situations:
- The contact never entered the workflow. The problem is the trigger, its filters, or the workflow's status.
- The contact entered but a step was skipped or failed. The problem is inside the workflow, such as a condition, a missing field or a DND setting. The log often shows a reason next to the step.
- Everything shows as run, but the message never arrived. The problem is delivery: the phone number, the email domain or the channel itself.
Also check the obvious one: is the workflow published? A workflow saved in draft mode will not enrol anyone, no matter how perfect the steps are. It is easy to make an edit, save it, and forget to switch it back.
Is the trigger the right one?
A surprising number of "broken" workflows are listening for the wrong event. Common mix-ups:
| What you wanted | Trigger people pick by mistake | What to check |
|---|---|---|
| Someone books online | Appointment status changed | Use the booking trigger, and check which calendar it watches |
| A GoHighLevel form is submitted | Survey submitted, or vice versa | Forms and surveys are separate triggers |
| A form on an outside website is submitted | Form submitted | Outside forms don't fire it; send them in by webhook or API |
| A deal moves to "Won" | Opportunity created | Use the stage or status change trigger |
| A tag is added | Contact changed | Use the tag added trigger with the exact tag |
Also check the trigger is watching the right thing. A booking trigger filtered to one calendar will ignore bookings on the new calendar you created last month.
Trigger filters that quietly stopped matching
Filters are where workflows go quiet without anyone noticing. A few patterns I see often:
- Renamed or recreated tags. If a trigger listens for the tag "new-lead" and someone starts adding "new lead" instead, the workflow sees a different tag and does nothing. When you rename or recreate a tag, open every workflow that relies on it and confirm the trigger still points to the tag that is actually being added.
- Too many filters. Multiple filters on one trigger all have to be true at once. A filter added "just to be safe" can rule out most of your contacts.
- Filters on fields that are empty. If a filter checks a custom field the form never fills in, nobody will ever match.
Re-entry, repeat customers and tag guards
This one causes the most confusion, because the workflow works perfectly for new contacts and fails for returning ones.
By default, a contact who has already been through a workflow may not be allowed back in. If a customer books again in three months and re-entry is switched off in the workflow settings, they won't get the confirmation or reminders. Turn re-entry on for anything that should run every time, like booking confirmations, and leave it off for things that should only happen once, like a welcome sequence.
The other trap is tags used as guards. A common build is "if the contact has the tag 'booked', stop", to avoid double messages. The problem is that tags belong to the contact, not to the booking. Once a customer has that tag, every future booking is blocked too. If you need to prevent duplicates, base the check on something specific to that event, such as the appointment or opportunity, rather than a tag that stays on the contact forever.
The workflow ran but the message never arrived
If the log says the step ran, look at delivery:
- DND (do not disturb). Contacts can have DND switched on for all channels or just one. If SMS DND is on, SMS steps are skipped. This often happens after someone replies STOP.
- Missing or badly formatted phone numbers. A number saved without the country code, such as 082 instead of +27 82, may not send.
- No email address, or an unverified sending domain. Email steps need both a recipient and a properly set-up sending domain.
- Stop on response. If the workflow is set to stop when the contact replies, a quick "thanks" will end the sequence early.
- Phone number or channel not set up. SMS needs a working number on the sub-account, plus any registration your country requires.
A quick troubleshooting checklist
When a workflow fails, run through this in order:
- Is the workflow published, not in draft?
- Did the contact enter? Check the enrolment history.
- Is the trigger type the right one for the event?
- Do the trigger filters still match the tags, calendars and forms in use today?
- Is re-entry switched on if the workflow should run more than once?
- Is a tag-based if/else blocking returning customers?
- Is DND on for the contact or the channel?
- Does the contact have a valid phone number and email address?
- Did a "stop on response" setting end it early?
- After fixing, test with your own contact, using the real form or calendar.
If you are seeing duplicate contacts on top of this, that is usually a separate problem, which I cover in fixing duplicate contacts in GoHighLevel.
Where I can help
Much of my 5+ years of automation work has been inside GoHighLevel, and tracking down why a workflow went quiet is part of that. Fixes and audits are R950/hour. If the whole account needs rebuilding, a sub-account foundation is R7,500. You can see what else I do on my GoHighLevel page.
If you have a workflow that has gone quiet, send me a note about what it should be doing and I'll tell you where I would look first.
Questions people also ask
Are there any hidden fees?
No. Every service page lists exactly what you pay once-off and what runs monthly (like the care plan at R350/m for hosting, security and small updates). What you see is what you pay.
Can I mix services?
That's the whole point. Most clients start with a website, then add automation, ads or video as they grow — everything is built to connect.
When can I cancel monthly services?
Anytime. Send a message saying you'd like to cancel and your subscription is closed within 72 hours — no lock-in contracts.
Do you build online stores?
Yes — e-commerce builds from 30 to 200+ products with payment gateways, reviews and abandoned-cart automation. Ask about it on the Website Design page or in the form below.
Do you work with overseas clients?
Yes — I'm based in Pretoria, South Africa, and work with select UK and US clients remotely. Time zones have never been a problem.
Why did my workflow run for one contact but not another?
Usually a filter or a guard. Compare the two contacts side by side: tags, DND settings, phone and email fields, and whether the second one has been through the workflow before with re-entry switched off. One small difference is almost always the reason.
Will publishing a workflow catch up on contacts that were missed?
No. Triggers only react to events that happen while the workflow is published. Contacts that were missed need to be added manually or in bulk, after you have checked they won't receive a message twice.
How do I test a workflow without messaging real customers?
Create a test contact with your own phone number and email address, then trigger the workflow the same way a customer would, for example by submitting the real form. That tests the whole path, not just the steps inside the workflow.