How To Build A Workflow In GoHighLevel
A Step-By-Step Guide to Building GoHighLevel Workflows, Triggers, Actions, Conditions, and Automations

One of the most powerful features inside GoHighLevel is workflows. A workflow automates a process that would otherwise require someone on your team to manually repeat the same steps over and over: a new lead fills out a form, gets added to the CRM, receives an SMS, receives an email, gets assigned to a salesperson, triggers a notification to your sales team, and receives follow-up messages, all without a person manually doing each step by hand.
There is an important difference between building automation and building good automation. It is easy to create a workflow with fifty actions in it. It is considerably harder to build one that triggers at the right time, uses accurate data, sends the right communication, stops when it should, handles exceptions gracefully, does not conflict with other workflows, and keeps working reliably as the business grows. This guide walks through how to build a GoHighLevel workflow from beginning to end, and how to design workflows that genuinely support real business processes rather than just adding automation for its own sake.
01What Is A GoHighLevel Workflow?

A workflow is an automated sequence of actions that runs when a specific event or condition occurs. The two core concepts are the trigger, which answers what needs to happen for this automation to start, and actions, which answer what should happen once it starts. A simple example: the trigger is a customer submitting a contact form, and the actions that follow are creating or updating the contact, sending an SMS, sending an email, assigning a salesperson, creating an opportunity, and notifying the sales team. Real workflows frequently also include wait steps, if/else branches, conditions, goals that end the workflow early once a desired outcome happens, internal notifications, CRM updates, opportunity actions, webhooks, and connections to external integrations.
02Before Building A Workflow: Map The Business Process

Do not start by opening the workflow builder and randomly adding actions. Write down what should actually happen first, in plain language, before touching the interface at all. For example: a new lead submits a form, gets added to the CRM, gets assigned to a salesperson, receives an immediate SMS, receives an immediate email, the salesperson gets notified, the workflow waits, it checks whether the lead responded, and if they did, general follow-up stops, while if they did not, follow-up continues. Answer a specific set of questions before building anything: what starts the process, who or what actually enters the workflow, what should happen immediately, what should happen later, what conditions can change the process partway through, when should the automation actually stop, and what should happen if something along the way fails. Mapping this out first makes every subsequent step of actually building the workflow considerably faster and less error-prone.
03Step 1: Create A New GoHighLevel Workflow
Inside the correct sub-account, navigate to the Automation section and select Workflows, then click Create Workflow, generally found in the top right corner of the screen. You will be given the option to start from a pre-built recipe or template, or to start completely from scratch. Starting from scratch gives you full control and is generally the better choice once you understand the underlying logic, while templates can be useful as a faster starting point for common, well-understood processes. Name the workflow clearly and specifically from the very start. A workflow named New Workflow 7 tells nobody anything six months from now. A workflow named Inbound Lead, Website Form, Initial Follow-Up, or Appointment, 24 Hour Reminder, or Sales, Lost Opportunity, Reactivation immediately communicates its purpose to anyone who opens the account later. This matters far more than it seems to at first, specifically because naming conventions become genuinely important once an account has accumulated dozens or hundreds of workflows.
04Step 2: Choose Your Workflow Trigger
The trigger determines when someone or something actually enters the workflow, and it always has to go at the very start; a trigger cannot be inserted partway through an existing workflow, though a single workflow can have more than one trigger attached to it. Common trigger categories include a contact being created, a form being submitted, a survey being submitted, a tag being added, an appointment being booked, an appointment's status changing, an opportunity being created, a pipeline stage changing, and a customer replying to a message, among many others; GoHighLevel currently offers well over a hundred distinct workflow actions and a substantial library of trigger types, and the exact list available in your account can change as the platform is updated, so it is worth checking the current trigger menu directly inside your account rather than assuming a specific option will always be there. A website lead workflow typically uses a form submitted trigger. An appointment reminder workflow typically uses an appointment booked trigger. A lead qualification workflow often uses a tag added trigger. A pipeline automation workflow typically uses an opportunity stage changed trigger. Choosing the trigger that actually matches the real underlying business event, rather than the one that merely sounds close, is critical, since everything else in the workflow depends on this first decision being correct.
05Step 3: Configure Trigger Filters
Filters narrow down exactly who should actually enter the workflow once the general trigger event has occurred. A form submitted trigger might be filtered specifically to Form equals Roofing Estimate Request, so the workflow only fires for that particular form rather than every form in the account. An opportunity stage changed trigger might be filtered to Pipeline equals Sales Pipeline and Stage equals Estimate Sent. AND conditions require every filter to match simultaneously, while OR conditions only require one to match, and combining several filters incorrectly is a common and easy mistake to make, one that can unintentionally prevent contacts from entering a workflow that otherwise looks correctly built. It is also worth knowing that opportunity-specific fields can generally only be used inside a filter when the workflow's trigger is itself opportunity-based; standard and custom contact fields remain available more broadly for filtering regardless of trigger type.
06Step 4: Configure Re-Entry
Decide deliberately whether a given contact should be allowed to enter this specific workflow more than once. Re-entry generally makes sense for repeat appointments, repeat purchases, recurring service requests, and contacts who go on to have multiple separate opportunities over time. Re-entry generally does not make sense for one-time onboarding sequences or one-time welcome campaigns, where a contact re-entering would simply mean receiving the same introductory sequence twice. Getting this setting wrong in either direction causes real problems: disabling re-entry when it is actually needed means contacts silently fail to re-enter a workflow they genuinely should go through again, while enabling it when it is not needed means contacts can receive duplicate, redundant automation.
07Step 5: Add Your First Workflow Action
Actions are the individual steps that run after the trigger fires. Common actions include sending an SMS, sending an email, adding a tag, removing a tag, updating a contact field, assigning a user, creating an opportunity, updating an opportunity, sending an internal notification, creating a task, and firing a webhook, among many others available in the action library. Every single action added to a workflow should serve a specific, identifiable purpose tied back to the business process you mapped out earlier. Do not add an action simply because the feature exists and seems potentially useful; every additional action is one more thing that can eventually break, conflict with something else, or confuse whoever has to maintain the workflow later.
08Step 6: Send An Automated SMS
Add an SMS action where the business process actually calls for a text message. Message content should be clear, personalized using available custom fields where genuinely helpful, and appropriately timed relative to when the underlying event actually happened. Consent, Do Not Disturb status, and any existing opt-outs all have to be respected without exception; automated messaging should never attempt to bypass a legitimate suppression control, and businesses need to ensure their specific messaging practices actually comply with applicable requirements in their jurisdiction. A reasonable structural example is a short, clearly identified message acknowledging the inquiry and stating what happens next, though the exact wording and current messaging configuration requirements should be verified directly against GoHighLevel's own current documentation before publishing anything at scale, since messaging compliance requirements do continue to evolve.
09Step 7: Send An Automated Email
Add an email action with a clear subject line, genuinely relevant content, correctly configured sender information, and a properly connected sending domain, since deliverability depends heavily on sender configuration being set up correctly from the start. Use custom fields to personalize the message with real CRM data, for example structuring a greeting around the contact's first name followed by a line referencing the specific service they actually requested, rather than sending fully generic content to every recipient regardless of what is already known about them. The exact merge field syntax and available personalization options should be verified directly inside your account's current email editor, since GoHighLevel's interface and available merge categories can be updated over time.
10Step 8: Add Wait Steps
Workflows should not always execute every single action immediately back to back. A wait step can pause for a specific amount of time, wait until a specific date or time, wait until a particular event occurs, or wait relative to an appointment, and business-hour considerations may apply depending on what is currently supported for a given wait type. A common, sensible structure sends an immediate SMS and email the moment a new lead comes in, then waits roughly a day before sending a follow-up message, rather than sending several messages back to back within the first hour. Timing matters for two separate reasons: some communication genuinely needs to happen quickly to be useful, while excessive, rapid-fire automation can overwhelm and alienate the very contacts it is meant to engage.
11Step 9: Add If/Else Conditions
Conditional branches let a workflow behave differently depending on the specific contact's actual data or behavior. A common example checks whether a lead responded to the initial outreach: if yes, general automated follow-up stops; if no, follow-up continues. Another common example branches based on which specific service was requested, routing a roofing inquiry down a roofing-specific follow-up sequence, an HVAC inquiry down an HVAC-specific sequence, and a plumbing inquiry down its own separate sequence. Branches genuinely make a workflow more intelligent and more relevant to the contact going through it. Overly complicated, deeply nested branches, layered many levels deep, make a workflow considerably harder for anyone, including the person who originally built it, to actually troubleshoot later, so branch complexity is worth managing deliberately rather than letting it accumulate unchecked.
12Step 10: Update CRM Data
Workflows can add a tag, update a custom field, change a lifecycle status, assign a contact owner, or update a lead status as part of their normal execution. Every CRM update triggered by a workflow should be genuinely intentional rather than incidental, since these same fields frequently drive other workflows, reporting, and segmentation elsewhere in the account. Thinking through field ownership, which specific system or workflow is actually supposed to be the authoritative source for a given piece of data, prevents a meaningful share of the data consistency problems that otherwise accumulate as more workflows get added over time.
13Step 11: Create Or Update Opportunities
Workflows can create a new opportunity, place it into a specific pipeline, assign a salesperson to it, and trigger a notification, all as part of qualifying a new lead. It matters to keep the underlying concepts clearly distinct in your own mind while building this: a contact is the underlying person or company record, an opportunity represents a specific potential deal tied to that contact, a pipeline is the overall structure a set of opportunities move through, and a pipeline stage is the specific position within that structure a given opportunity currently sits at. Confusing contact-level automation with opportunity-level automation is a common and genuinely frequent source of workflow problems, since a contact can exist perfectly validly without having any opportunity at all in a specific pipeline a workflow happens to be watching.
14Step 12: Assign Leads To Salespeople
Lead routing can use direct assignment to a specific person, round-robin distribution across a defined team where supported, territory-based routing, or more complex conditional routing built around multiple criteria at once. Whatever specific method is used, routing logic needs to explicitly account for inactive employees who should not continue receiving new assignments, team changes that have not yet been reflected in the routing rules, missing data that a routing rule depends on, and territories or conditions that simply do not match any lead currently coming in. Every routing system genuinely needs a defined fallback owner for leads that do not cleanly match any specific rule, rather than leaving unmatched leads with no owner assigned at all.
15Step 13: Send Internal Notifications
Internal notifications can go out by email, by SMS where appropriate, through in-app notifications, or through a connected platform like Slack, and customer-facing automation and internal automation are genuinely separate concerns that both need to be built correctly. A lead can receive a flawless, perfectly timed automated follow-up sequence while the actual salesperson responsible for that lead still has no idea it exists, because the internal notification step was never built, was misconfigured, or quietly failed. Both halves of this need to be tested and verified independently.
16Step 14: Use Goals And Exit Conditions Where Appropriate
A goal, or a similarly functioning exit condition, stops or redirects a workflow the moment its actual objective has already been achieved. A lead follow-up workflow that keeps sending generic follow-up messages after the lead has already booked an appointment is a common and avoidable mistake; the workflow should instead detect that the appointment was booked, stop the general follow-up sequence, and hand the contact off to whatever workflow is actually responsible for the appointment stage of the journey. Exit logic like this directly prevents duplicate communication, irrelevant messaging sent after the relevant moment has already passed, and customers continuing to receive sales-oriented follow-up after they have already converted.
17Step 15: Test The Workflow
Never assume a workflow works correctly simply because it looks correct inside the builder. Create a genuinely controlled test contact and deliberately verify: did the trigger actually fire, did the contact actually enter, did the filters behave as expected, did the SMS actually send, did the email actually send, did custom fields actually populate correctly, did wait steps behave as designed, did branches route to the correct path, did CRM fields actually update, did opportunity actions run correctly, did internal notifications actually go out, and did the workflow stop at the correct point. Test more than one scenario deliberately: the happy path where everything works exactly as expected, a scenario with missing data in an important field, a scenario involving a contact who already exists rather than one newly created, a scenario where the same contact triggers the workflow a second time, and a scenario where the contact completes the desired action early, such as responding immediately, before the full sequence has finished running. Testing these edge cases specifically, not just the ideal path, is what actually reveals whether a workflow is genuinely reliable or simply appears correct under the single, clean scenario it happened to be built and tested against.
18Step 16: Publish Or Activate The Workflow
Once testing is genuinely complete, publish or activate the workflow to make it live, and confirm current terminology directly inside your account since specific labels can shift between platform updates. Before actually going live, deliberately re-check the trigger, every filter, re-entry settings, the SMS action's content and configuration, the email action's content and sender configuration, every wait step's timing, every branch's logic, every assignment rule, every exit condition, any external integrations the workflow depends on, and the actual results from your testing. This final review, done deliberately rather than skipped because the workflow already looks finished, catches a meaningful share of the mistakes that would otherwise only surface once real contacts start moving through the workflow live.
19A Complete GoHighLevel Workflow Example
New Lead Follow-Up Workflow
Trigger: a website estimate form is submitted. The workflow then adds a lead source tag, assigns a salesperson, creates an opportunity, sends an immediate SMS, sends an immediate email, notifies the assigned salesperson, waits an appropriate period, and checks whether the lead responded or booked an appointment. If they did, general lead follow-up stops and the contact moves to whatever process is actually appropriate next. If they did not, follow-up continues along a defined sequence. Every step here exists for a specific, identifiable reason tied directly back to the underlying business process, rather than being included simply because the feature was available.
Appointment Reminder Workflow
An appointment gets booked, a confirmation goes out immediately, the workflow waits until a defined point before the actual appointment time, a reminder goes out, the appointment occurs, and the contact then gets routed based on the actual outcome: completed, cancelled, no-show, or rescheduled. Each of these outcomes generally needs its own distinct follow-up path, since a completed appointment calls for a review request while a no-show calls for a recovery sequence entirely.
Customer Review Workflow
A service gets marked complete, the workflow waits an appropriate period, a feedback or review request goes out, and a follow-up happens where genuinely appropriate. Businesses should specifically avoid continuing to contact a customer who has already completed the desired action, whether that is leaving a review or explicitly declining to.
Lead Reactivation Workflow
An inactive lead gets identified, the workflow checks whether that specific contact is actually eligible for reactivation outreach, a reactivation message goes out, the workflow waits, and the response gets checked: a response routes the contact to sales, while no response either continues an appropriately limited sequence or exits the workflow entirely. Reactivation should never mean indefinitely and repeatedly messaging old contacts who have shown no interest in re-engaging.
20How To Organize Multiple GoHighLevel Workflows
One giant workflow attempting to handle an entire customer journey end to end is generally harder to build, test, and maintain than several clearly scoped workflows, each responsible for one specific stage. A typical architecture separates lead capture, lead qualification, lead routing, the appointment process, the sales pipeline itself, customer onboarding, the review process, and reactivation into distinct, individually named workflows that hand a contact cleanly from one to the next. This structure lets each individual workflow stay genuinely simple and focused, while the overall customer journey still gets fully covered across the complete set. Avoid unnecessary dependencies between workflows that were never intended to interact, and be deliberate about avoiding circular automation, where one workflow's action ends up being another workflow's trigger in a way that was never actually designed on purpose.
21Common GoHighLevel Workflow Mistakes
Choosing the wrong trigger for the actual underlying event, filters that are unintentionally too restrictive and silently exclude contacts that should have qualified, incorrect re-entry settings in either direction, too many actions crammed into a single workflow, no exit conditions at all, duplicate workflows built by different people covering the same process, workflows that conflict with each other without anyone realizing it, contacts receiving duplicate messages as a result, employee names hardcoded directly into routing logic, no fallback routing for unmatched leads, no consistent naming convention, no documentation, no ongoing monitoring, no genuine testing before publishing, deleting a custom field that a live workflow still actually depends on, and restructuring a pipeline without first reviewing every workflow that depends on its current stages are the recurring mistakes across accounts of every size. Every one of these becomes measurably more serious as an account accumulates more workflows over time.
22Why Isn't My GoHighLevel Workflow Working?
Choose one specific contact rather than troubleshooting in the abstract. Confirm the actual trigger event genuinely occurred. Check whether the contact actually enrolled. Check every trigger filter against that contact's real data. Check re-entry settings. Review the workflow's own execution history for that specific contact. Follow that contact through every subsequent action in the workflow. Identify the very first step where the contact's actual behavior diverges from what you expected. Fix that specific root cause. And retest before assuming the issue is fully resolved. Do not attempt to troubleshoot an entire workflow all at once; find the first genuine point of divergence between expected and actual behavior, and work from there.
23How To Monitor GoHighLevel Workflows
Workflow execution history, failed actions, contacts that appear stuck partway through a workflow, SMS failures, email failures, integration errors, unassigned leads, and contacts silently skipping a critical step in the process are all worth actively monitoring rather than discovering only after a downstream symptom appears. Genuinely critical automation, the kind that directly affects revenue or customer experience, deserves active monitoring. A business should never discover that its new-lead workflow has been broken by noticing, three weeks later, that leads simply have not been receiving any follow-up at all.
24When To Use GoHighLevel Workflows vs Zapier, Make, n8n, Or APIs
GoHighLevel's own workflow builder is generally the right tool for processes that live primarily inside the CRM itself: lead follow-up, appointment communication, internal notifications, and CRM data updates. External automation platforms become genuinely useful once GoHighLevel needs to connect to accounting software, a project management platform, a database, an ERP system, industry-specific software, another SaaS platform, or fully custom software that GoHighLevel was never built to replace. Zapier, Make, n8n, Power Automate, direct webhooks, and custom API integrations all serve this connecting role in different ways depending on the specific requirement. The goal is never forcing every single business process into one tool regardless of fit. It is using the right system for each specific process and designing reliable, well-understood data movement between all of them.
25What Should You Automate In GoHighLevel?
Good candidates for automation are genuinely repetitive, rules-based, predictable, high-frequency, and time-sensitive: lead acknowledgment, appointment reminders, internal notifications, basic lead routing, routine CRM updates, and standard follow-up sequences all fit this description well. Processes that genuinely benefit from more human involvement include complex customer complaints, high-value sales negotiations, sensitive customer situations, strategic decisions, and any genuine exception that does not fit the standard pattern the automation was actually built around. Automation should support good business processes that already work well manually. It should never attempt to replace the human judgment that a given situation genuinely requires.
26The Bigger Problem: Building Workflows Without A System
Building your first workflow is relatively straightforward. Genuine complexity appears once a business has twenty workflows, fifty workflows, a hundred workflows, multiple pipelines, multiple lead sources, multiple salespeople, multiple locations, and multiple external integrations all running simultaneously. At that point, the actual question changes. It is no longer simply how do I build a workflow. It becomes how do I design an automation architecture where all of these individually built workflows actually work together reliably without silently conflicting with each other. This is exactly the point where workflow naming, documentation, data standards, clear ownership, disciplined testing, and active monitoring stop being nice-to-haves and become genuinely critical to the business continuing to operate reliably.
27Why Businesses Reach Out To Us About This
Many businesses start using GoHighLevel by building one workflow at a time: a new lead workflow, then an appointment workflow, then a review workflow, then a reactivation workflow. Automation keeps getting added incrementally over time. Eventually, we often find duplicate workflows covering the same underlying process, conflicting triggers built by different people at different times, inconsistent tag naming across the account, broken lead routing with no fallback owner, outdated custom fields still referenced by active workflows, former employees hardcoded directly into automation logic, missing exit conditions, external integrations nobody currently at the company fully understands, no documentation anywhere, and no ongoing monitoring at all. The problem is never that GoHighLevel is incapable of automating the business. The problem is that automation kept getting added without an overall architecture governing how all of it was actually supposed to work together.
Our team helps businesses implement GoHighLevel correctly from the start, build GoHighLevel workflows around real, mapped business processes, design genuine CRM architecture rather than accumulating ad hoc automation, configure sales pipelines properly, implement real lead routing with defined fallback logic, build appointment automation end to end, troubleshoot broken workflows down to their actual root cause, integrate GoHighLevel with the other applications a business already depends on, build API integrations where a native connection falls short, clean up and structure CRM data, document automation systems so they remain understandable as the team changes, monitor critical workflows proactively, and modernize business operations more broadly. Rather than simply adding more automation, we help businesses design GoHighLevel systems around how their company actually operates.
28If You're Building Your First GoHighLevel Workflow
If you are building your first GoHighLevel workflow, start simple. Define the actual business process in plain language before opening the builder. Choose the trigger that genuinely matches the real underlying event. Decide deliberately what should happen at each subsequent step. Add filters and conditions only where the business process genuinely calls for them. Define explicitly when the workflow should stop. Test every meaningful path, not just the happy one. Then, and only then, activate it. As your automation grows beyond this first workflow, keep asking who owns each one, what specific business process it actually supports, what other workflows depend on it, what happens if it fails, and how quickly anyone would actually know if it stopped working. Whether you need help building your first GoHighLevel workflow, cleaning up an existing account, troubleshooting broken automation, or designing a complete CRM and workflow architecture, our team can help.
29Build The Simplest Reliable Automation That Actually Supports The Process
Building a GoHighLevel workflow starts with three genuinely basic questions: what starts the process, what should happen next, and when should the process actually stop. From there, triggers, actions, wait steps, conditions, CRM updates, pipeline actions, and external integrations all come together to automate the process end to end. The goal was never to build the single biggest, most elaborate workflow possible. It is building the simplest reliable automation that genuinely supports the actual business process behind it.
The best GoHighLevel workflows are built around clearly defined business processes. Start with the actual customer or operational journey, automate the repetitive steps that have clear, consistent rules, test every path that genuinely matters, monitor critical automation actively, and keep people involved wherever real judgment is required. When workflows are designed as part of a larger, coherent system rather than as isolated, individually built automations, GoHighLevel becomes considerably easier to operate and to scale.
Frequently Asked Questions
How do I build a workflow in GoHighLevel?+
What is a GoHighLevel workflow?+
How do GoHighLevel workflow triggers work?+
How do I add actions to a GoHighLevel workflow?+
How do I send automated SMS messages in GoHighLevel?+
How do I send automated emails in GoHighLevel?+
How do I use If/Else conditions in GoHighLevel workflows?+
How do I test a GoHighLevel workflow?+
Why isn't my GoHighLevel workflow triggering?+
Can a contact enter a GoHighLevel workflow more than once?+
How should I organize multiple GoHighLevel workflows?+
Should I use GoHighLevel workflows or Zapier?+
Stop Guessing At Workflow Logic. Build Automation Around Your Real Business Process.
Book a free strategy call and we will help you design GoHighLevel workflows that actually match how your business generates and closes leads.
