A workflow in GoHighLevel is an automated sequence that runs when something happens. A lead fills out a form. A customer doesn't show up to an appointment. A pipeline stage changes. A tag gets added. The workflow fires and runs whatever steps you've configured — send an SMS, update a contact field, wait 2 days, send another email, and so on.
If you've used Zapier, ActiveCampaign automations, or HubSpot workflows, the concept is identical. What makes GoHighLevel workflows distinct is the breadth: a single workflow can send SMS, email, internal notifications, voice drops, calendar invites, payment links, AI-generated responses, and webhook calls — all in one visual canvas.
Workflows are the single most valuable feature in the platform. Master these and you've mastered GoHighLevel.
Start your 30-day free trial of GoHighLevel CRM today. Get full access to all features and see why 2M+ businesses trust GoHighLevel.
Start Free TrialEvery workflow has three parts:
1. Trigger. What causes the workflow to start. Examples: form submission, new contact, tag added, calendar booking, opportunity stage change, missed call.
2. Filters and conditions. Optional logic that decides whether the workflow should actually run for this contact, or which branch to take.
3. Actions. What the workflow does. Send messages, wait, update fields, route to another workflow, send a webhook, etc.
A simple workflow might have one trigger and three actions. A complex workflow might have one trigger, ten conditional branches, and forty actions across multiple paths.
GoHighLevel has 30+ trigger types. As a beginner, you'll use these seven for 90% of your automations:
Fires when a contact fills out a GoHighLevel form. Used for lead capture, quote requests, contact forms, registration forms.
Fires when a new contact is added to the CRM by any means (form, manual entry, import, API). Useful as a catch-all "new lead" trigger.
Fires when a specific tag is added or removed from a contact. Tags are the connective tissue of GoHighLevel — most multi-step workflows trigger off tag changes.
Fires on calendar activity — booking, cancellation, no-show, completion. Critical for service businesses.
Fires when a contact's opportunity moves between pipeline stages. Used to trigger sales follow-ups, internal notifications, and stage-specific nurture.
Fires when an external system (Zapier, Make, your own app) calls a webhook URL. Used for connecting GoHighLevel to anything not natively integrated.
Fires on a contact's birthday or any custom date field. Used for retention, renewal reminders, holiday touches.
Similarly broad list of actions. The ones you'll actually use:
Send SMS. With merge fields for personalization.
Send Email. Plain or templated.
Wait. A delay before the next action — minutes, hours, days.
Add Tag / Remove Tag. Drives downstream automation.
Update Contact Field. Sets custom field values, lifecycle stages, lead scores.
Create Opportunity. Adds the contact to a sales pipeline.
Move Opportunity Stage. Progresses the contact in the pipeline.
Notify User. Internal SMS, email, or in-app notification to a team member.
Webhook. Calls an external API.
If/Else Condition. Branches based on contact properties.
Math Operation. Adds/subtracts from a custom field (lead scoring).
AI Response. Generates an SMS or email reply using AI based on the conversation context.
Walking through a real beginner workflow: an automated follow-up for new leads.
In your sub-account, navigate to Automation → Workflows → New Workflow.
Choose "Start from scratch" (the templates are useful later but not for learning).
Name your workflow something descriptive: "New Lead — 5-Step Follow-up Sequence"
Click the "+" under "Workflow Trigger" and select "Form Submitted."
Choose the form — let's say it's your "Contact Us" form on the website.
Optional: add filters (e.g., only fire if the form was submitted on a specific page).
Save the trigger.
Click "+" below the trigger and select "Send SMS."
Compose the SMS using merge fields:
Hi {{contact.first_name}}, this is [Your Name]. Got your message about {{contact.message}}. Quick question: what's the best time to call you back today?
Save the action.
Add "Wait" action: 2 hours.
This gives the lead time to respond before the next message.
Add "If/Else Condition."
Set the condition: "If contact has tag replied."
The replied tag would be set by another workflow that fires on inbound SMS — for now, just add the condition placeholder.
If yes (lead replied): end workflow (the human takes over from here).
If no (lead didn't reply): continue to next action.
Under the "If no" branch, add "Send Email."
Use a template:
Hi {{contact.first_name}},
Wanted to follow up on the inquiry you sent earlier today. I sent you a text but figured email might be easier. Here's a calendar link if you'd like to grab a 15-minute call: [calendar link]
Or just reply to this email with the best time to reach you.
Wait: 24 hours.
If/Else: "Has tag replied" — same logic.
Send SMS (in the "no" branch):
Hey {{contact.first_name}}, last attempt — if you'd still like to chat about your inquiry, here's my calendar: [link]. Otherwise no worries, hope you find what you need.
After the final SMS, add "Add Tag" with tag value cold-lead-nurture.
This drops the lead into a separate long-term nurture workflow that runs once per month for the next 12 months.
Click "Publish" and toggle the workflow to active.
Test it by submitting your own form. Verify the SMS and email actually fire correctly.
You've built your first real workflow. Most agencies running this exact pattern see 30-50% lift in lead-to-call conversion compared to manual follow-up.
Beyond the basic new-lead workflow, here are five workflows worth building from day one.
Trigger: Missed call (using GoHighLevel's call tracking)
Actions:
missed-call-recoveryImpact: Recovers 25-40% of missed calls that would otherwise go to voicemail and never call back.
Trigger: Appointment Booked
Actions:
appointment-completedImpact: Reduces no-show rate by 40-60%.
Trigger: Tag added: service-completed
Actions:
reviewed-google?review-requested-no-responseImpact: Drives 3-5x more Google reviews vs manual asking.
Trigger: Appointment status changed to "No-Show"
Actions:
lost-no-show and drop into long-term nurtureImpact: Recovers 30-50% of no-shows that would otherwise go cold.
Trigger: Tag added: cold-lead-nurture
Actions:
long-term-nurture-complete and remove from active campaignImpact: Recovers 5-15% of leads that would otherwise be permanently lost.
After 12+ months building these for clients, the rules I follow:
1. Name workflows clearly. Bad: "Workflow 23." Good: "New Lead — 5-Step Follow-up — Service Business Template."
2. Build in escape hatches. Every nurture workflow should have a "stop the workflow" exit point if the lead replies or converts. Use tag-based conditions to short-circuit when the human takes over.
3. Avoid infinite loops. A workflow that adds a tag that triggers another workflow that adds another tag back to the original... loops are easy to create accidentally. Use unique tag namespaces (auto-, manual-, lifecycle-) to keep clear.
4. Test with real contacts. Set up a test contact with your own phone and email. Run every new workflow through it before going live with customers.
5. Monitor for failures. Set up an internal notification on every workflow that includes a "fail-safe" branch — if a step fails, alert the admin.
6. Limit message volume. Three SMS messages over 7 days is fine. Three SMS messages in 24 hours triggers spam complaints. Build in adequate waits.
7. Always provide opt-out. Every SMS workflow needs a clear opt-out path. GoHighLevel handles STOP keywords automatically, but explicitly mention it in the first SMS of any campaign.
8. Layer SMS and email. Don't rely on one channel. The best follow-up sequences alternate SMS and email — SMS for urgency, email for substance.
9. Personalize with merge fields. A workflow without merge fields feels like spam. Use first name, service type, location, and other context fields to make automation feel personal.
10. Document what each workflow does. Future-you (or a teammate) will need to know what a workflow does without reverse-engineering it. Use the workflow description field liberally.
Mistake 1: Sending too many messages too fast. Building a workflow that sends 5 SMS in 48 hours sounds aggressive but converts well — until customers complain. Stick to 2-3 SMS per week max in active campaigns.
Mistake 2: No exit conditions. A workflow that keeps running after the lead has converted to a customer is annoying at best and brand-damaging at worst. Always include logic to stop sending when the lead replies, books, or buys.
Mistake 3: Building one giant workflow. A single workflow with 50 steps and 10 branches is unmaintainable. Split into smaller workflows that hand off via tags. Each workflow should do one thing.
Mistake 4: Forgetting time zones. A workflow that sends SMS at "10 AM" sends at 10 AM in the contact's time zone if you've set their time zone correctly. If you haven't, it sends at 10 AM in your account's default time zone — which might be 3 AM for the contact. Configure time zones at the contact level.
Mistake 5: No QA before going live. Always send the workflow to yourself before sending it to real customers. Embarrassing typos and broken merge fields will make it to production otherwise.
Mistake 6: Hardcoding contact data. If you write "Hi John" in a workflow, every contact gets "Hi John" — regardless of their actual name. Use {{contact.first_name}} merge fields for everything personal.
Mistake 7: Not handling the "missing data" case. What if a contact's first name is blank? Your SMS becomes "Hi , this is..." Add fallback logic: {{contact.first_name | fallback: "there"}}
Once you've mastered the basics:
Conditional logic. Build workflows that branch based on contact properties (deal value, source, lead score). This is where automation gets genuinely powerful.
Webhook integrations. Connect GoHighLevel to external tools via webhook actions and inbound webhooks.
AI conversational replies. GoHighLevel's AI feature can autonomously respond to inbound SMS using context from the conversation. Useful for first-touch qualification.
Multi-channel orchestration. Combining SMS, email, voice drops, and Facebook Messenger in a single workflow that adapts based on which channel the contact engages with.
Snapshot creation. Once you have workflows working well, save them as snapshots and reuse them across sub-accounts. This is how agencies scale.
Workflows are where GoHighLevel earns its money. The CRM, the calendar, the funnel builder — those are table stakes. The workflow engine is the lever that turns the platform from "another CRM" into a marketing machine.
Build your first three workflows this week (new lead follow-up, appointment reminders, review requests). Get them working. Watch the metrics. Then expand from there.
The agencies and service businesses winning with GoHighLevel aren't using more features — they're using the workflow engine more deeply.
Start your 14-day GoHighLevel trial here and build the new lead workflow on day one. By day three, you'll see why this is the most important feature in the platform.