GoHighLevel Triggers & Actions: The Complete Agency Guide
Triggers and actions are the building blocks of every GoHighLevel automation. Understanding how they work โ not just what they are, but how they interact with each other and with the rest of the platform โ is the difference between workflows that run reliably and workflows that constantly require troubleshooting.
How GHL Workflows Actually Work
Every GHL workflow operates on a simple principle: something happens (a trigger fires), and as a result, something else happens (actions execute). But the complexity is in the details โ which triggers fire under which conditions, how multiple simultaneous triggers interact, how conditions filter which contacts proceed past each step, and how actions chain together to create the behaviors you intend.
The Most Important Triggers and When to Use Them
Contact Created
Fires when a new contact is added to your GHL account. This is one of the broadest triggers and requires careful filtering. Without conditions, every contact created โ including those added manually by team members, imported in bulk, or created through API โ will enter this workflow. Always add a source condition or tag filter to limit which contacts this trigger applies to.
Form Submitted
Fires when a specific GHL form is submitted. One of the most reliable and specific triggers. You can select exactly which form activates the workflow, ensuring that only contacts who complete the intended action enter the sequence. Best practice: connect each form to its own dedicated workflow rather than using a single catch-all workflow for multiple forms.
Tag Added / Tag Removed
Fires when a specific tag is applied to or removed from a contact. This is the most flexible trigger in GHL and forms the backbone of advanced automation systems. By designing your workflows to be tag-activated, you can trigger sequences from any action in the platform โ a manual tag applied by a team member, a tag applied by another workflow, or a tag applied via API โ without needing direct connections between systems.
Appointment Status
Fires when an appointment status changes โ confirmed, cancelled, no-show, or attended. Essential for appointment-based businesses. Use this trigger to send different follow-up sequences based on what happened: a nurture sequence for no-shows, a post-call follow-up for attended, a re-booking offer for cancelled.
Pipeline Stage Changed
Fires when a contact moves to a specific pipeline stage. Allows you to trigger different communication sequences based on where a contact is in your sales or delivery process. A contact moving to "Proposal Sent" can trigger a timely follow-up. A contact moving to "Won" can trigger an onboarding sequence.
The Most Useful Actions and How to Combine Them
Send Email / Send SMS
The most basic actions. Key best practices: always use custom values for personalization ({{contact.first_name}} minimum), set a clear send window to avoid messages at 3am in the contact's timezone, and use distinct "reply-to" addresses for email actions that expect responses.
Wait
Pauses the workflow for a specified duration before the next action executes. The most underused and most important action for creating natural-feeling sequences. A nurture sequence that fires five emails in five minutes feels like spam. The same content spaced over seven days with appropriate wait steps feels like a considered communication strategy.
Add Tag / Remove Tag
Apply or remove a contact tag as part of a workflow action. Allows workflows to communicate with each other โ workflow A can apply a tag that triggers workflow B to start, while simultaneously exiting the contact from workflow A. This enables complex automation architectures without requiring direct connections between workflows.
Update Contact Field
Updates a custom field value on the contact record. Useful for tracking where a contact came from, what product they expressed interest in, or what stage of a nurture sequence they last reached โ creating a persistent record that other workflows can reference.
Move to Pipeline Stage
Moves a contact's pipeline opportunity to a specific stage. Automates CRM management as contacts progress through your automation sequences โ no manual pipeline updates required.
Condition Steps: The Logic Layer
Condition steps (If/Else branches) allow your workflow to take different actions based on contact data. A contact who has already been tagged as "Called" can be routed down a different branch than a first-time lead. A contact in one pipeline stage gets a different message than one in another stage.
Always cover both the "yes" and "no" branches. A workflow with a condition that only handles the "yes" path leaves contacts who meet the "no" condition sitting in the workflow indefinitely โ a common source of the "contacts stuck in workflows" problem agencies often report.
Need a GHL Specialist in Your Account?
Book a free 30-minute strategy call. We audit your setup, identify bottlenecks, and match you with the right specialist โ no commitment required.