GoHighLevel workflow Wait step not working, or contacts stuck

Short answer
Most contacts stuck on a GoHighLevel Wait step are waiting exactly as it was set: for a reply, a click or a condition with no timeout, or only on the days and hours in its advanced window. Editing a Wait step doesn't change the timing for contacts already in it. The workflow's time window holds messages, not waits. Check the wait type, add a timeout, and read the contact's path in the logs.
How to fix it
- Check which kind of wait it is. HighLevel has eight: a fixed time, a specific date and time, a recurring schedule, an appointment or invoice due date, a contact reply, a contact action like a trigger link click or email event, conditions, and a user reply.
- Add a timeout to event waits. Waits for a reply, an action, a condition or a user reply can run forever. Turn on the timeout so contacts move on if it never happens.
- Check the advanced window. Resume On (weekdays) and Resume Between Hours limit when contacts can move on. A contact whose wait ends outside them waits for the next allowed time.
- Check the workflow's settings. On the Settings tab: the time window (which holds texts, emails and calls), the time zone, re-entry and stop on response.
- Find where the contact is. Open the workflow's Execution Logs and Enrollment History. Automation > Workflows > Workflow Maps > Contacts shows one contact across every workflow for the last 60 days: finished, waiting or errored.
- Re-enroll after editing a wait. Contacts already in a Wait step keep the old timing after you edit it. Remove them with the Remove from Workflow action and enroll them again if they need the new timing.
- Waits on a date that's passed. Date and appointment waits have a fallback for times already past: continue, exit, go to a step, or skip outbound messages until the next wait.
Common questions
- Does the workflow time window pause Wait steps?
- No. HighLevel says it mainly affects communication steps like texts, emails and calls. The Wait step's own advanced window controls when a wait can finish.
- Can I move one stuck contact on?
- Remove them from the workflow with the Remove from Workflow action, from another workflow if needed, then add them back where they should be.
More workflow fixes
GoHighLevel sending duplicate text messages
Usually two triggers firing on one event, re-entry left on, or the same person saved as two contacts.
GoHighLevel workflow not triggering: a checklist
Usually it's still in Draft, the trigger filters don't match, or re-entry is off. The execution logs tell you which.
GoHighLevel workflow Goal Event not firing
Only one goal per workflow, each contact is checked against it once, and the event or filter has to match exactly.
GoHighLevel trigger links not tracking clicks
Usually a pasted URL instead of the trigger link itself, no workflow listening for the click, or a filter pointing at a different link.
GoHighLevel If/Else branch not matching
Usually AND and OR grouped wrong, a field updated in the same second as the check, or data that isn't there when the step runs.
GoHighLevel custom values or fields showing blank in messages
The contact has no value saved, the workflow doesn't supply it (appointment fields need an appointment trigger), or it was typed instead of picked.
GoHighLevel birthday or date triggers firing at the wrong time
The birthday trigger runs at 8 AM in the account's time zone and skips badly formatted dates. Waits set the hour; workflow settings set the time zone.
Related fixes
GoHighLevel appointment reminders going out at the wrong time
Usually the workflow's time zone, a fixed wait instead of one timed from the appointment, or calendar notifications sending a second copy.
Read the fix
Want GoHighLevel set up and running for you?
Book a free 15-minute call. Tell us what you sell and where your leads come from, new account or the one you have, and we'll tell you what we'd set up, how long it takes and what it costs.