CALIBRATING SYSTEMS
Home / Blog / GoHighLevel Workflow Triggers: List, Filters and Examples
Guides

GoHighLevel Workflow Triggers: List, Filters and Examples

· 6 min read · Ali Raza Abro

GoHighLevel workflow triggers are the events that enroll a contact into a workflow. They fall into a few groups: contact events like Contact Created and Contact Tag, form and survey submissions, appointment events, opportunity and pipeline events, communication events like Customer Replied and Call Status, payment events, and external triggers like Inbound Webhook. Each trigger can have filters, and the filters matter as much as the trigger itself.

I set up GHL workflows for marketing agencies and most misfires I fix come from the trigger, not the actions. This post walks through the triggers that matter, how to filter them and examples I actually use.

How GoHighLevel workflow triggers work

A workflow can have one or more triggers. When any of them fires and its filters match, the contact enters the workflow at the first action. A few rules to keep in mind:

  • Multiple triggers act as "or". Any matching trigger enrolls the contact.
  • Filters inside a trigger narrow it. For example, Form Submitted where form is "Free Quote".
  • Re-entry settings still apply. If re-entry is off, a contact who already went through will not enter again even if the trigger fires.
  • Some triggers are premium. HighLevel bills certain triggers and actions per execution. Check the current pricing and help docs before using them at volume.

HighLevel adds and renames triggers over time, so the trigger menu in your account is the source of truth. Below are the groups and the ones I use most.

GoHighLevel triggers list by group

Contact triggers

  • Contact Created: a new contact is added to the sub-account
  • Contact Changed: a contact field changes, filterable by field
  • Contact Tag: a tag is added or removed, filterable by tag
  • Contact DND: do-not-disturb settings change
  • Birthday Reminder and Custom Date Reminder: time-based triggers around a date field
  • Note Added and Task events

Form and survey triggers

  • Form Submitted: filter by form
  • Survey Submitted: filter by survey
  • Trigger Link Clicked: a tracked link in a message is clicked

Appointment triggers

  • Customer Booked Appointment: filter by calendar
  • Appointment Status: status changes such as confirmed, cancelled, showed or no-show

Opportunity triggers

  • Opportunity Created
  • Opportunity Status Changed: open, won, lost, abandoned
  • Pipeline Stage Changed: filter by pipeline and stage
  • Stale Opportunities: an opportunity has not moved for a set time

Communication triggers

  • Customer Replied: a contact replies on a channel, filterable by channel
  • Call Status: for example missed or answered inbound calls
  • Email Events: such as opens, clicks or bounces, depending on your setup

Payment and commerce triggers

  • Payment Received, invoice events and order events for accounts that use GHL payments

External and integration triggers

  • Inbound Webhook: receives data from outside GHL. Useful for connecting Make, n8n or a custom app. It is one of the triggers HighLevel treats as premium.
  • Facebook or other lead form triggers for connected ad platforms

Trigger filters: the part people skip

Filters turn a broad trigger into a precise one. Examples:

  • Form Submitted, filtered to the "Book a Call" form only
  • Contact Tag added, filtered to the tag "lead-hot"
  • Pipeline Stage Changed, filtered to Sales Pipeline and stage "Proposal sent"
  • Appointment Status, filtered to the "Consultation" calendar and status "No show"
  • Customer Replied, filtered to the SMS channel

A trigger without filters is the most common cause of a workflow firing for the wrong people. Contact Tag without a tag filter fires on every tag. Contact Changed without a field filter fires on almost any update.

GoHighLevel trigger examples for agencies

Speed to lead

Trigger: Form Submitted, filtered to the quote form. Also add a Facebook lead form trigger if the client runs lead ads. Both enroll the contact into the same speed-to-lead workflow.

Missed call text back

Trigger: Call Status, filtered to missed inbound calls. Action: send a short SMS and notify the team. More in GoHighLevel missed call text back.

No-show recovery

Trigger: Appointment Status, filtered to no-show. Action: rebook message plus a task for the rep.

Review request

Trigger: Pipeline Stage Changed, filtered to the "Job completed" stage. Action: wait, then send the review request. See review request automation in GoHighLevel.

Stale deal nudge

Trigger: Stale Opportunities, filtered to the sales pipeline. Action: internal notification to the owner.

Hot reply alert

Trigger: Customer Replied, filtered to SMS, with an If/Else checking for an "interested" tag or a qualifying field. Action: notify the owner and move the opportunity stage.

External lead source

Trigger: Inbound Webhook. A Make scenario sends leads from a source GHL does not connect to natively. The webhook payload maps into contact fields, and the rest of the workflow runs as normal. See GoHighLevel webhooks.

Choosing the right trigger

When two triggers could work, pick the one closest to the real business event:

  • Form Submitted vs Contact Created: use Form Submitted. Contacts get created by imports, integrations and conversations too.
  • Pipeline Stage Changed vs Contact Tag: use the stage if your team actually works the pipeline. Use tags if the pipeline is not maintained.
  • Customer Booked Appointment vs Appointment Status: use booked for confirmations, status for show and no-show logic.

Common trigger mistakes

  • No filters. The workflow fires for everyone.
  • Duplicate enrollment. Two triggers that both match the same event can cause double messages if re-entry is on.
  • Imports firing triggers. Bulk importing contacts can fire Contact Created or Contact Tag triggers and blast a whole list. Pause or filter workflows before imports.
  • Triggers on fields that integrations update. If an integration updates a field constantly, a Contact Changed trigger on it will fire constantly.
  • Draft workflows. A workflow that is not published will not run, however good its trigger.

Triggers that send data out of GHL

Triggers bring contacts into a workflow, but for agency operations the interesting part is often what happens next: sending the event to the rest of your stack. A pattern I use often:

  1. Trigger: Opportunity Status Changed, filtered to won.
  2. Action: webhook to a Make scenario, with contact name, business, deal value and owner.
  3. Make posts a short message in the agency's Slack, logs the deal in a Google Sheet and creates the onboarding project in ClickUp.

The same approach works for Customer Replied on outreach campaigns. On one live build, a positive cold-email reply pings the team in Slack, logs the lead to the outreach sheet and updates ClickUp. The trigger is different, but the shape is identical: one precise trigger, one webhook, and the routing handled outside GHL where you have better logging.

Debugging a trigger that does not fire

  1. Confirm the workflow is published.
  2. Check the trigger filters match the exact form, calendar, pipeline or tag.
  3. Check re-entry settings and whether the contact already went through.
  4. Check the contact's activity or workflow history for enrollment.
  5. Recreate the event with a test contact.

How I build this

I design GHL workflows and triggers for agencies and connect GoHighLevel to Make for anything that needs to reach Slack, ClickUp or Sheets. The GoHighLevel workflow automation guide covers the full workflow side. If your triggers misfire across many sub-accounts, Automation Rescue can fix it in 48 hours. You can also request a free teardown.

FAQ

What triggers are available in GoHighLevel workflows?

Triggers cover contact events, forms and surveys, appointments, opportunities and pipelines, communication such as replies and calls, payments, and external sources like Inbound Webhook. The trigger menu in your account shows the current list.

Can a GoHighLevel workflow have multiple triggers?

Yes. A workflow can have several triggers, and a contact enters when any one of them fires and its filters match.

What is the Inbound Webhook trigger in GoHighLevel?

It lets a workflow start from data sent by an outside system, such as Make or n8n, and map that data to contact fields. HighLevel treats it as a premium trigger, so check current pricing.

Why did my GoHighLevel trigger fire for the wrong contacts?

Usually because the trigger has no filter or a broad one, such as Contact Tag without a specific tag, or because an import or integration caused the event.

Show me the workflow you hate.

Send one workflow and get a free 15-minute Loom teardown, or book a call if you’d rather talk it through.