GoHighLevel Workflow Mistakes: 21 Symptoms, Causes and Fixes

GoHighLevel workflow not working? 21 symptoms with the cause and fix for each, from tag triggers and opportunities to cloning, taken from real accounts.

By Carlos Familia, CRM & AI automation expert. Updated . 9 min.

When I opened a mortgage brokerage's inherited GoHighLevel account, it held 281 workflows and only 95 were active. To archive the previous agency's 190 workflows I compared everything: 1,559 actions and 257 triggers, with 0 differences. That job, and the other accounts I've built or repaired, left me with a list of the ways a workflow can look right and still behave wrongly.

In the accounts I've worked on, most workflow bugs came from five places: how triggers fire, how opportunities get matched, what a step silently skips, how messages repeat, and what a clone carries over from its source. Find your symptom below. Each has the cause and the fix I use, and a lookup table at the end lists all 21.

My workflow didn't fire when I added the tag

Cause. A "tag added" trigger fires only when the tag is newly added. If the contact already has the tag, adding it again does nothing. I hit this on a roofing build in Kentucky and on a med spa's AI caller in Pennsylvania.

Fix. Remove the tag first, then add it. Or make a separate event tag for the trigger and keep your status tag apart from it. A tag that starts a workflow is an event, not a state.

The same customer never gets the sequence a second time

Cause. Re-entry is off, so a returning customer never gets the confirmation again. On a roofing build in Kentucky, returning leads never got sequences. On an HVAC build in California, my own workflow compiler defaulted to no re-entry.

Fix. Turn on re-entry for any workflow that should repeat, and test it by running the same contact through twice.

Leads got the same message twice

Cause. The stage moved first and the guard tag arrived a second later, so the next stage's workflow ran without its guard. That's how a wellness clinic's WhatsApp funnel sent leads duplicate and triplicate follow-ups.

Two timelines. Stage first, tag second: the stage moves, the next workflow starts and checks a guard tag that does not exist yet, then the tag arrives a second late, so the lead gets the follow-up two or three times. Tag first, then move: the guard exists when the next workflow starts, so the lead gets one follow-up.
The same two steps. Only the order decides whether a lead hears from you once or three times.

Fix. Tag first, then move. Before each outbound message, check both the stage and a sent tag. More on that build in n8n WhatsApp integration.

My stage condition is always false in testing

Cause. A contact you enroll by hand or through a test has no opportunity context. A condition that reads the stage evaluates false unless a find-opportunity step has run first. I hit this on a wellness clinic's funnel.

Fix. Put a find-opportunity step before any stage condition.

A workflow moved the wrong opportunity

Cause. A find-opportunity step with no pipeline filter returns the newest opportunity from any pipeline. The next update then drags it into the wrong place. On a mortgage account in Florida, a workflow triggered by calls dragged realtor deals into the sales pipeline, and 225 contacts had to be corrected afterward.

Fix. Always filter by pipeline, and add a guard that checks the pipeline before updating.

A returning customer can't get a second deal

Cause. A pipeline holds one opportunity per contact. Once a contact has one there, won or abandoned, GoHighLevel refuses a second. The setting that lifts the limit switched itself off within about 2 hours on that mortgage account, and a real repeat client hit it.

Fix. Turn the setting on, check it every hour with a small job, and decide in advance whether a repeat client gets a new opportunity or an update.

A premium step skipped and the log doesn't say why

Cause. Premium actions, like custom webhooks, skip silently when the agency wallet is empty. The step shows as skipped, and the reason is buried in the step's response details.

Fix. Keep the wallet funded and watch its balance. When a step skips, open the execution detail and read the response message before you guess.

A converted step does nothing

Cause. On the mortgage texting build, I swapped marketplace action steps for webhook steps. The new steps kept a hidden flag from the old ones, and GoHighLevel skipped them, so 5 leads who arrived during office hours went about 2 days without a welcome message.

Fix. After you change a step type, run a real contact through and read the log. Don't trust that the canvas looks right.

My webhook doesn't have the field I sent

Cause. The workflow Webhook step sends the whole contact, and your own custom data arrives nested under customData inside the body. I met this on that same mortgage build.

Fix. Read from the nested customData and log the full payload once while building.

No task was created

Cause. An Add Task step assigned to the contact owner is skipped when the contact has no owner. I saw it on a refinance watcher for a mortgage brokerage.

Fix. Make sure an owner exists before the task step, or add a fallback assignee.

My "none of these tags" check always passes

Cause. An if/else segment that joins three "does not have tag" checks with OR passes for any contact missing at least one of the tags, which in practice is nearly everyone.

Fix. "None of these tags" needs AND. I fixed this exact bug on a roofing build in Kentucky.

Contacts vanished from my workflow after I edited it

Cause. Two things. Deleting steps that contacts are waiting on ends their enrollments within seconds. And publishing re-arms the triggers even if you saved them as inactive.

Fix. Check who is currently waiting before you delete a step. After every publish, confirm the trigger state on purpose.

My clone points at the old account's workflows

Cause. Cloned steps that add or remove contacts from other workflows keep the source account's workflow IDs and fail silently. A credit repair build showed me this.

Fix. After cloning, scan for IDs that don't exist in the new account, then reselect the targets.

I opened a migrated trigger and the evidence disappeared

Cause. Opening a migrated trigger in the editor and saving it erases orphan IDs, so you lose the proof of what was broken.

Fix. Scan before anyone touches the migrated workflows. On a franchise migration for a portable storage company in Alabama, the scan found 3 real issues among 79 workflows, all already broken in the source.

My emails changed on their own

Cause. Editing a saved email template changes what already-published workflows send. The workflow didn't change, but the template under it did.

Fix. Duplicate the template to make a new version, and check which workflows use the old one first.

Open rates look too good

Cause. Gmail fetches the open tracking pixel on delivery, so an untouched email counts as opened.

Fix. Judge emails by clicks and replies. Treat opens as a loose signal.

My loop test stopped working

Cause. Force-resuming a loop more than about 4 times hits GoHighLevel's "Loop Locked" state. I met it while testing workflows with my compiler.

Fix. Prove loops with real 1-minute waits.

My bounce handler turned email back on

Cause. Bounce and complaint workflows that used a DND step set to change one specific channel turned email DND off, the opposite of the intent.

Fix. After you build any DND step, test it on a dummy contact and read the DND panel afterward.

Review requests only go to happy customers

Cause. A rating filter on the request step means only 4-star and 5-star customers are asked. That's review gating. On the mortgage account the pattern was right: requests go to everyone, and only the thank-you message filters by rating.

Fix. Filter by rating only when thanking, never when asking.

My internal notification didn't reach the person I picked

Cause. Internal email and SMS notifications accept only the contact owner as the recipient. If you want the office manager or a second rep alerted, the notification can't do it.

Fix. Make the person you want the contact owner at that moment, or alert them with a task or another channel. I ran into this on a roofing build in Kentucky.

Booked clients keep getting nurture emails

Cause. The nurture sequence has no exit for booking. On that roofing build, nurture kept emailing booked clients, and the reschedule path had no exit. Stop-on-reply caused a second problem: it ended sequences with nobody told.

Fix. Give every sequence exits on the events that make it pointless: a rebooked appointment, a reply or a stage change. My 3-month no-show recovery for an HVAC company in California runs weekly for 12 weeks, with exits on rebook, reply and stage change. When stop-on-reply ends a sequence, tell a human.

How do I catch these before a client does?

Test every path with an isolated contact that has do-not-disturb on and no real phone, then read the execution log for each journey. On my niche demo accounts that came to 268 journeys in the second round, and 104 of 104 in the first. The full method is in how I test GoHighLevel workflows.

What's the quick lookup table?

SymptomLikely causeFirst check
Tag trigger didn't fireTag already on the contactRemove, then add
Sequence skipped a returning customerRe-entry offWorkflow settings
Duplicate messagesStage move before guard tagStep order
Stage condition false in a testNo opportunity contextAdd find-opportunity first
Wrong opportunity changedNo pipeline filterFilter on the step
No second deal for a clientOne opportunity per pipelineSetting plus hourly check
Step skipped, no reasonEmpty walletExecution detail message
Converted step silentHidden flagRead a real run's log
Custom data missingNested under customDataLog the payload
No task createdContact has no ownerAssign owner first
Tag segment always trueOR instead of ANDSegment logic
Contacts ended mid-waitSteps deleted under themWho is waiting
Clone adds to the wrong workflowSource IDs keptScan before editing
Evidence erasedMigrated trigger savedScan first
Emails changedShared template editedDuplicate the template
Opens too highPixel fetched on deliveryUse clicks and replies
Loop test lockedToo many force-resumesReal 1-minute waits
Email DND turned offDND step misconfiguredRead DND panel
Only happy customers askedRating filter on the requestFilter only the thank-you
Alert didn't reach my pickOnly the contact owner is allowedSet the owner or use a task
Booked clients still get nurtureNo exit on bookingAdd exits on rebook, reply, stage

If this reads like a list of things you'd rather not debug alone, ask any GoHighLevel expert you're considering to run one of your workflows on a test contact before they touch the account. The mortgage CRM audit shows the same account end to end, and mortgage CRM shows what it became. The calendar below is open if you'd like a second opinion.

About the author

Carlos Familia, CRM and AI automation expert

Carlos Familia, CRM & AI automation expert. GoHighLevel, n8n, AI agents, servers. Full-stack developer.

I build CRM systems in GoHighLevel, n8n automations on my own servers and AI voice and chat agents for service businesses. Full-stack developer: I write the workflow, the API integration, the database and the server it runs on, and I test every build with real journeys before handoff.

Book a call with Carlos

In 30 minutes we look at how you get customers today and what to automate first. Pick a time ยท contact@bluemiraisystems.com