What GHL workflows are and how they work
A GoHighLevel workflow is a set of instructions that run automatically when something specific happens. That "something specific" is a trigger. The instructions are called actions. In between actions, you can add conditions (If/Else logic) and timing delays.
Think of a workflow as a flowchart that runs without anyone pressing buttons. Someone fills out your contact form (trigger). GHL immediately sends them an SMS confirmation (action). If they reply within an hour (condition), a team member gets notified (action). If they do not reply (condition), a follow-up SMS goes out 24 hours later (action with delay). That is a workflow.
Key concepts before you build
Published vs Draft: A workflow only runs when it is published. While building and testing, keep it in Draft. Publish only when you are ready for it to go live.
Re-enrollment: By default, a contact can only enter a workflow once. If you want the same contact to go through the workflow again (for example, every time they miss a call), turn on re-enrollment in the trigger settings.
Workflow history: Every time a workflow runs on a contact, GHL logs it. Go to the contact record, click Workflow History, and you can see exactly which step they are on and what happened. This is essential for troubleshooting.
Stop on response: Most follow-up workflows should stop when a contact replies. This requires you to manually add an If/Else condition after each message. GHL does not stop workflows automatically when someone replies unless you build that logic in.
Triggers: what starts a workflow
The most commonly used triggers for service businesses are:
- Missed Call fires when an inbound call to your GHL number goes unanswered
- Form Submitted fires when someone fills out a GHL form on your website or funnel
- Pipeline Stage Changed fires when you move a contact to a specific stage
- Tag Added fires when a specific tag is applied to a contact
- Appointment Booked fires when a calendar booking is confirmed
- Appointment Status Changed fires when an appointment is confirmed, cancelled or completed
- Contact Created fires when a new contact is added to GHL
- Inbound SMS fires when a contact sends you an SMS
Most triggers let you add filters to narrow when they fire. For example, a Pipeline Stage Changed trigger can filter for one specific pipeline and one specific stage, so it only fires in exactly the right context.
Actions: what the workflow does
Actions are the steps that run after the trigger fires. The most useful ones:
- Send SMS sends a text message to the contact from your GHL phone number
- Send Email sends an email from your connected email address
- Add Tag / Remove Tag tags or untags the contact for segmentation
- Add to Pipeline creates an opportunity in a pipeline at a specific stage
- Update Pipeline Stage moves an existing opportunity to a different stage
- Send Internal Notification sends a notification to a team member or email
- Create Task creates a follow-up task assigned to a team member
- Add Contact Note adds a note to the contact record automatically
- Wait pauses the workflow for a set amount of time before the next action
- If/Else branches the workflow based on a condition
- Go To jumps to a different step in the workflow
- Remove from Workflow removes the contact from this or another workflow
Conditions: If/Else logic
If/Else branches are what make workflows smart. Instead of every contact going through the same sequence regardless of their behaviour, conditions let you send different people down different paths based on what they do.
The most useful conditions to build are:
Did they reply? After sending a message, wait 24 hours, then check: has the contact sent any inbound message in the last 24 hours? If yes, stop following up. If no, send the next message. This prevents you from chasing people who are already engaged.
What tag do they have? Check if a contact has a specific tag before deciding what to send. Customers get a different follow-up than brand new leads. Residential jobs get different templates than commercial.
What pipeline stage are they in? Check if a contact is still in the stage that triggered the workflow. If you manually moved them to Won while the follow-up sequence was running, stop the sequence.
Timing and delays
Where you put Wait steps matters as much as what you put in them. A few timing rules that produce better results:
Send the first message immediately or within 5 minutes for any inbound enquiry. Speed matters enormously for new leads. Every minute of delay reduces conversion.
For follow-up messages, use business hours filtering. Go to Workflow Settings > Allow workflow to run only during business hours. Messages that arrive during business hours feel like professional follow-up. The same message arriving at 8pm on a Sunday feels like spam.
Space follow-up messages 2 to 4 days apart for estimates and quotes. Daily messages for a sales follow-up feel pushy and result in opt-outs. Every 2 to 3 days maintains presence without becoming annoying.
6 workflow examples to build today
1. Missed call text-back
Trigger: Missed Call. Action: Send SMS immediately. Content: "Hi {{contact.first_name}}, sorry we missed your call. What can we help you with?" See our full missed call text-back guide for the complete setup.
2. New form lead follow-up
Trigger: Form Submitted. Actions: (1) Send SMS immediately confirming you received their message, (2) Wait 5 minutes, (3) Send internal notification to team member with lead details, (4) Wait 2 hours, (5) If no reply: send a second SMS asking what time suits a call.
3. Appointment reminder sequence
Trigger: Appointment Booked. Actions: (1) Send SMS confirmation immediately, (2) Wait until 24 hours before appointment, (3) Send SMS reminder, (4) Wait until 2 hours before appointment, (5) Send final reminder with any instructions they need for the visit.
4. Estimate follow-up sequence
Trigger: Pipeline Stage Changed to Estimate Sent. Actions: (1) Wait 0 hours, send SMS confirmation. (2) Wait 1 day, send email summary. (3) Wait 2 more days, send SMS check-in. (4) Wait 4 more days, send final SMS. Each step has an If/Else that stops the sequence if the contact has replied. See our full estimate follow-up guide for complete templates.
5. Review request after job completion
Trigger: Pipeline Stage Changed to Completed. Actions: (1) Wait 2 hours, (2) Send SMS review request with Google review link, (3) Wait 24 hours, (4) If no reply: send email follow-up. See our full review automation guide.
6. Re-engagement for cold leads
Trigger: Tag Added "cold lead." Actions: (1) Wait 1 day, (2) Send SMS: "Hi {{contact.first_name}}, we spoke a while back about [service]. Just checking if that is still something you are looking at.", (3) Wait 4 days, (4) If no reply: send email with a recent job example or seasonal offer, (5) Wait 7 days, (6) If still no reply: add tag "unresponsive" and end workflow.
Common mistakes and how to fix them
Forgetting to add If/Else stops: The most common issue. A contact replies "yes" after your first follow-up and still receives four more messages because the sequence runs regardless. Add reply-detection conditions after every message.
Not testing before publishing: Always run a test with your own contact before going live. Catch formatting issues, wrong phone numbers in tokens and broken links before they reach real customers.
Too many active workflows on one contact: If a contact has ten tags and you have a workflow for each tag, they can end up receiving multiple messages per day from different workflows. Audit your active workflows monthly and consolidate overlapping ones.
Sending outside business hours: Always use business hours filtering on workflows that send customer-facing messages. No exceptions.
Not using the workflow history: When a workflow is not behaving as expected, the first thing to check is the contact's workflow history. It shows exactly which step they are on, what actions fired and whether any errors occurred.
Start your 30-day free trial
Sign up through BuildOnAuto and get our contractor snapshot, automations and review sequences pre-installed on day one.
No credit card required · Cancel anytime · Setup bonuses included
