
GoHighLevel Workflow Triggers Explained: The Complete 2026 Reference
GoHighLevel Workflow Triggers Explained: The Complete 2026 Reference
Every GoHighLevel workflow begins with a trigger. It is the single decision that determines who enters your automation, when they enter, and under what conditions. Get the trigger right and the rest of the build falls into place. Get it wrong and you will spend hours debugging an automation that either fires for the wrong people, fires at the wrong moment, or never fires at all. After building hundreds of workflows for Australian service businesses, I can tell you that most "broken automation" problems are not actually logic problems. They are trigger problems.
This reference covers every major trigger category in the GoHighLevel Workflow Builder, what each one actually does, and how to choose the correct one for the job in front of you. I have grouped the triggers logically rather than alphabetically so you can find the right category by thinking about what just happened in your account. Whether you are setting up your first lead-nurture sequence or auditing a sprawling sub-account, treat this as the page you keep open while you build.
Triggers, trigger actions and actions: the difference
Before we list anything, it is worth being precise about three terms that newer users frequently confuse, because the confusion leads directly to badly designed workflows.
A trigger is the event that starts a workflow and enrols a contact into it. Examples include a form being submitted, a tag being added, or an appointment being booked. A workflow does nothing until a trigger fires.
An action is a step inside the workflow that does something to or for the contact once they are in it: sending an email or SMS, adding a tag, creating an opportunity, or pausing on a wait step. Trigger actions are a special class of action available inside Conversation AI and Workflow AI that respond conditionally during the run. If you are weighing up which AI tool to use for inbound replies, my breakdown of Workflow AI vs Conversation AI will save you some trial and error.
In short: the trigger gets them in, the actions decide what happens next. Keep these mental categories separate and your builds become far easier to reason about.
How a trigger actually starts a workflow
When you open the Workflow Builder and click Add New Trigger, you are defining the entry condition. The moment a contact meets that condition, GoHighLevel evaluates whether they should be enrolled. Two settings govern this evaluation and you must understand both.
Trigger filters
Most triggers let you attach filters that narrow down which events qualify. A Form Submitted trigger can be filtered to a specific form. A Tag trigger can be filtered to a particular tag name. A Customer Replied trigger can be filtered by reply channel. Filters are the difference between "every form on the account" and "only my Discovery Call request form". Always set the tightest filter that still captures everyone you want. Vague triggers are the leading cause of contacts landing in workflows that were never meant for them.
Re-entry settings
Each workflow has a re-entry setting that decides whether a contact who has already been through it can enter again. For a one-time onboarding sequence, you almost always want re-entry off. For a recurring monthly review nudge, you want it on. Forgetting to check this is how a customer receives the same welcome email three times. Set it deliberately on every workflow rather than trusting the default.
Trigger categories, grouped by what just happened
Here is the practical way to think about the trigger library. Ask yourself what event in the account should kick things off, then match it to one of these groups.
Contact and tag changes
These fire when something changes on the contact record itself. The Contact Tag trigger (tag added or removed) is the workhorse of GoHighLevel because tags are how you segment everything. Contact Created, Contact Changed, and Contact DND triggers sit in this group too. Use tag triggers as connective tissue: one workflow adds a tag, a second workflow listens for it. This keeps individual workflows small and testable.
Form, survey and funnel activity
The Form Submitted and Survey Submitted triggers fire when someone completes a form or survey. Trigger Link Clicked belongs here as well and is one of the most underused tools in the platform. Trigger links let you start a workflow simply because someone clicked a tracked link inside an email or SMS, which is perfect for measuring intent. I have written a full guide on using trigger links for tracking if you want to go deeper on attribution.
Appointment and calendar events
The Appointment trigger fires on a booking status: booked, confirmed, cancelled, showed, no-show, or rescheduled. Filter by calendar and by status so you can run different sequences for confirmations versus no-show recovery. This category is essential for any business that runs on bookings.
Pipeline and opportunity changes
The Opportunity Stage Changed and Opportunity Status Changed triggers fire when a deal moves through your pipeline. These are the backbone of sales automation: move a deal to "Proposal Sent" and a follow-up sequence begins automatically. Filter by pipeline and stage to keep each automation focused.
Conversation and reply events
The Customer Replied trigger fires when a contact responds via SMS, email, or another channel. This is how you build two-way conversations and how you implement "stop on response" behaviour, which I will cover shortly. Email and SMS engagement events (opened, clicked, bounced) also live in this group and are useful for re-engagement logic.
Commerce and payment events
The Order Submitted and payment-related triggers fire when money changes hands. Use these to deliver products, start onboarding, send invoices, or flag failed payments for recovery. For Australian businesses, remember to set currency and amounts in AUD across the connected products so your conditions evaluate correctly.
Call and communication status
The Call Status trigger fires based on the outcome of a call, such as completed, missed, or voicemail. Pair this with no-answer follow-up sequences so a missed call never goes cold.
Time-based and external events
The Birthday trigger fires on a contact's birthday date, ideal for goodwill touchpoints. The Inbound Webhook trigger is the most flexible of all: it fires when an external system posts data to a unique URL, letting you connect tools that have no native integration. Use webhooks when nothing else fits.
| Trigger category | When it fires | Example use |
|---|---|---|
| Contact Tag | A tag is added to or removed from a contact | Start a nurture sequence when the "Hot Lead" tag is applied |
| Form Submitted | A contact completes a specific form | Send an instant confirmation when the booking enquiry form is filled |
| Survey Submitted | A contact completes a survey | Route a contact based on their qualifying answers |
| Appointment | A booking reaches a chosen status | Trigger no-show recovery when status changes to "no-show" |
| Opportunity Stage Changed | A deal moves to a new pipeline stage | Begin a follow-up sequence when a deal hits "Proposal Sent" |
| Customer Replied | A contact responds via SMS, email or another channel | Stop an outbound sequence and notify a human the moment they reply |
| Trigger Link Clicked | A contact clicks a tracked link | Tag a contact as interested when they click a product link |
| Order Submitted | A purchase or payment is completed | Kick off product delivery and onboarding after checkout |
| Call Status | A call reaches a recorded outcome | Send a follow-up SMS after a missed call |
| Birthday | A contact's birthday date arrives | Send a goodwill message or offer |
| Inbound Webhook | An external system posts data to a unique URL | Enrol contacts from a tool with no native integration |
When to use multiple triggers in one workflow
A single workflow can have several triggers, and they behave as an OR condition: a contact enters if they match any one of them. This is genuinely useful when several different events should lead to the same outcome. For example, a "request callback" workflow might be triggered by a form submission, a trigger link click, and an inbound webhook all at once, because each represents the same intent arriving through a different channel.
The discipline here is consistency. If contacts arriving from three different triggers will need different first messages, do not cram them into one workflow with branching logic that quickly becomes unreadable. Split them, or use an If/Else branch immediately after entry. As a rule of thumb, combine triggers only when the contacts they enrol genuinely deserve identical treatment.
Wait steps, goal events and stop on response
Triggers get contacts in; three downstream features shape how they move through.
Wait steps pause a contact for a set time, until a specific date, or until a condition is met. They are how you space out a drip sequence without sending everything at once.
Goal events let a contact jump ahead in the workflow when a defined event occurs, skipping the steps in between. A common pattern is a goal that fires when a contact books a call, pulling them out of the chasing sequence the instant they convert.
Stop on response is a setting on SMS and email actions that halts the sequence the moment a contact replies. Combined with the Customer Replied trigger, it ensures you never keep robotically messaging someone who is already talking to you. Always enable it on outbound nurture sequences.
Common mistakes to avoid
- Leaving triggers unfiltered, so every form or tag on the account enrols contacts into a workflow that was meant for one specific source.
- Ignoring re-entry settings, which causes contacts to receive the same one-time sequence repeatedly.
- Forgetting to enable stop on response, so people who have already replied keep getting automated chases.
- Stacking unrelated triggers into one workflow and then patching the differences with tangled branching logic.
- Building with no failure path, so a bad webhook or missing field silently breaks the run; read my guide on workflow error handling to close that gap.
- Choosing a Contact Changed trigger when a precise Tag or Appointment trigger would have fired more reliably and been easier to debug.
Choosing the right trigger for the job
When you are unsure which trigger to reach for, work backwards from the outcome. Identify the single, unambiguous event that should start the automation, then pick the most specific trigger that matches it. Specificity beats cleverness every time. A tightly filtered Form Submitted trigger will always be more reliable than a broad Contact Changed trigger doing the same job, because it fires on a clean, predictable event rather than guessing at a record change. Build small, name your workflows clearly, and connect them with tags. That is how robust GoHighLevel architecture is built.
If you want your GoHighLevel workflows architected with the right triggers from the start, book a strategy call with the HL Growth Partner team.
Frequently asked questions
Can a GoHighLevel workflow have more than one trigger?
Yes. A workflow can hold several triggers, and they act as an OR condition: a contact is enrolled if they match any one of them. Use multiple triggers only when the contacts arriving from each one should receive the same treatment, otherwise split the workflow or branch immediately after entry.
What is the difference between a trigger and a trigger action?
A trigger is the event that starts a workflow and enrols a contact, such as a form submission or a tag change. A trigger action is a conditional response step used inside Conversation AI and Workflow AI that reacts during the run. The trigger gets the contact in; trigger actions help decide what happens while they are inside.
How do I stop a workflow from messaging someone who has already replied?
Enable the stop on response setting on your SMS and email actions, and where appropriate use the Customer Replied trigger to route them elsewhere. Stop on response halts the sequence the moment the contact responds, so you never keep chasing someone who is already in conversation with you.
When should I use an Inbound Webhook trigger?
Use an Inbound Webhook trigger when you need to start a workflow from an external system that has no native GoHighLevel integration. The tool posts data to a unique URL, which enrols the contact and lets you map the incoming fields. It is the most flexible trigger and the right choice when nothing more specific fits.
Why are my contacts entering the wrong workflow?
The most common cause is an unfiltered trigger. If a Form Submitted or Tag trigger has no filter, it fires for every form or every tag on the account rather than the specific one you intended. Tighten the filter to the exact form, tag, calendar or pipeline stage, and confirm your re-entry setting is configured the way you want.
