How to Set Up a GoHighLevel Workflow.GoHighLevel’s workflow builder is the automation engine at the centre of the platform. Every speed-to-lead response, appointment reminder, nurture sequence, review request, and database reactivation campaign runs through a workflow. Get the workflow builder right, and the entire automation stack runs reliably. Build workflows incorrectly — with missing exit conditions, wrong triggers, or absent time restrictions — and you create the automation failures that damage client relationships and waste implementation investment.
This guide covers the GoHighLevel workflow builder from the ground up: how the interface works, what triggers and actions are available, how conditions and branches work, how wait steps and time windows function, how exit conditions are configured and tested, and how to build the seven highest-impact workflows for a service business. Every step is written for a UK service business context, with specific UK configuration considerations (time zones, phone number formats, GDPR opt-out handling) called out where they differ from US defaults.
Whether you are building your first GoHighLevel workflow or auditing existing workflows that are not performing as expected, this guide provides the complete operational reference for the GoHighLevel workflow builder in 2026.
Understanding the GoHighLevel Workflow Builder
Access the workflow builder in GoHighLevel by navigating to Automation → Workflows in the left sidebar. The workflow builder uses a drag-and-drop interface with two primary components: triggers (the events that start the workflow) and actions (the steps the workflow takes after the trigger fires). Between triggers and actions, conditions and wait steps control timing, branching, and decision logic. → Read: GoHighLevel for UK Businesses: The Complete Implementation Guide
Every workflow in GoHighLevel is either active or inactive. Inactive workflows do not fire for any contact. Active workflows fire for every contact who meets the trigger criteria. Before activating any workflow, test it thoroughly with a dummy contact — an active workflow fires for real contacts immediately, and errors in an active workflow affect live client relationships rather than test data.
The workflow interface
The workflow builder interface has four primary areas: the trigger panel (top left, where you define what starts the workflow); the action canvas (the central area where you build the sequence of steps); the action library (right sidebar, where you select new steps to add); and the settings panel (accessed via the workflow name at the top, where you configure workflow-level settings including the active/inactive toggle, re-enrolment settings, and the workflow name).
Every workflow should be named clearly and consistently before building begins. A naming convention that includes the workflow type, the target audience, and the version makes the workflow library manageable as the automation stack grows: “Speed-to-Lead — All Web Form Enquiries — v2”, “Appointment Reminder — Main Calendar — v1”, “Nurture — New Leads Unbooked — 14-Day Primary”. A poorly named workflow library becomes unmanageable quickly when the business has 15 to 20 active workflows.
GoHighLevel Workflow Triggers: How to Choose the Right One
The trigger is the event that starts the workflow for a specific contact. GoHighLevel offers over 40 trigger types. For UK service businesses, the following triggers cover 95 per cent of practical automation requirements:
Contact Created
Fires when a new contact is created in GoHighLevel, typically from a form submission, Facebook Lead Ad, or API integration. Use for: speed-to-lead workflows that respond to every new enquiry regardless of source. Configuration note: add a filter to the trigger — “Contact Source = [specific form or source name]” — if you want the workflow to fire only for contacts from a specific channel rather than all new contacts. Without a filter, this trigger fires for every new contact including those manually added by staff.
Form Submitted
Fires when a specific GoHighLevel form is submitted. More precise than Contact Created because it can be scoped to a specific form without requiring a filter. Use for: form-specific workflows where different forms should trigger different responses (e.g., a new enquiry form triggers the speed-to-lead workflow; a contact form from an existing client page triggers a different response).
Appointment Status
Fires when an appointment status changes to a specific value. The available status values are: Scheduled, Rescheduled, Cancelled, Showed, No-Show, Invalid. Use for: appointment reminder workflows (trigger: Status = Scheduled); no-show follow-up workflows (trigger: Status = No-Show); post-service review request workflows (trigger: Status = Showed). This is the most important trigger for appointment-based service businesses and the one most likely to be misconfigured — verify that your team is updating appointment statuses consistently before building workflows against them.
Tag Added
Fires when a specific tag is added to a contact record. The most versatile trigger in GoHighLevel because tags can be applied manually by staff, automatically by other workflows, or through pipeline stage changes. Use for: campaign-specific workflows (apply a tag to trigger a reactivation campaign); retention risk workflows (apply an “At Risk” tag to trigger a retention sequence); and any situation where you want a human decision to trigger an automated response.
Pipeline Stage Changed
Fires when a contact moves to a specific pipeline stage. Use for: client onboarding workflows (trigger: Stage = Closed Won); proposal follow-up workflows (trigger: Stage = Proposal Sent); and retention check-in workflows (trigger: Stage = Active Client at a defined time interval). Configure this trigger carefully — moving a contact between stages in bulk (e.g., during a CRM cleanup) can trigger workflows for contacts who should not be enrolled.
Missed Call
Fires when an inbound call to a GoHighLevel-connected phone number goes unanswered. Use for: missed call text-back workflows. This trigger requires that the incoming calls are received on a GoHighLevel LC-Phone number — calls to an external phone number that is not connected to GoHighLevel do not trigger this workflow. Test by calling the GoHighLevel number and allowing it to ring to voicemail, then verifying the text-back fires within 60 seconds.
Date/Time
Fires at a specific date and time, or on a recurring schedule. Use for: monthly report delivery workflows (fire on the first business day of each month); annual renewal reminder workflows; birthday or anniversary communications. The Date/Time trigger is less commonly used than the event-based triggers above but is valuable for any communication that is calendar-driven rather than contact-behaviour-driven.
GoHighLevel Workflow Actions: What You Can Do
Actions are the steps the workflow takes after the trigger fires. GoHighLevel provides over 60 action types. The most important for UK service business workflows:
Send Email
Sends an email to the enrolled contact from the configured sending email address. The email body supports GoHighLevel’s merge field system — insert contact custom fields using double curly bracket notation (e.g., {{contact.first_name}}, {{contact.custom_field.service_type}}). The send time is controlled by the Wait step immediately before the action — a Send Email action with no preceding Wait step fires immediately when the workflow reaches it. Configure From Name and From Email in the email action settings to use the business owner’s name and authenticated domain address.
Send SMS
Sends an SMS to the contact’s mobile number from the configured GoHighLevel LC-Phone UK number. SMS content supports merge fields in the same way as email. Limit SMS messages to 160 characters (one segment) where possible — messages over 160 characters are split into multiple segments and billed per segment. Always include an opt-out instruction in marketing SMSes: “Reply STOP to opt out.” GoHighLevel’s SMS action has a “Send to Mobile Only” option that prevents the message from attempting delivery to landlines — enable this for all outbound SMS automations.
Wait
Pauses the workflow for a defined period before executing the next action. The Wait step is the most important action for controlling reminder timing. Configuration: the wait duration can be set as a fixed time period (e.g., “wait 24 hours”) or as a wait-until a specific time before or after an appointment. For appointment reminders, use “Wait Until [X] hours before appointment start time” rather than a fixed wait — this ensures the reminder arrives at the right time regardless of when the booking was made. For nurture sequences, use fixed wait periods between messages (e.g., “wait 3 days” between messages 1 and 2).
All Wait steps should have a time window restriction configured. In the Wait step settings, enable “Send in Timezone” and set allowed days and hours. For UK service businesses: Monday to Friday or Monday to Saturday, 8am to 8pm in the contact’s time zone (set to Europe/London as the default). This prevents the workflow from advancing past the Wait step at inappropriate hours and sending the next action at 2am or 5:30am.
If/Else Condition
Creates a branching point in the workflow where contacts are routed to different paths based on a condition. Conditions can be based on: contact field values (e.g., “if Service Type = Legal, take path A; otherwise take path B”); contact tags (e.g., “if tag Active Client exists, exit workflow; otherwise continue”); or SMS/email reply content (e.g., “if last inbound SMS contains YES, take path A; if contains NO, take path B”). The YES/NO confirmation mechanic in appointment reminder workflows depends entirely on correctly configured If/Else conditions routing YES and NO replies to appropriate response paths.
Add Tag / Remove Tag
Applies or removes a tag from the contact record. Tag actions are the primary mechanism for: marking a contact as converted (apply “Active Client” tag to trigger exit conditions in prospect sequences); recording campaign participation (apply “reactivation-q3-2026” tag before launching a reactivation campaign); and triggering other workflows (applying a tag that another workflow uses as its trigger). Build a consistent tag naming convention before creating any workflows — a disorganised tag structure becomes the single most common cause of automation confusion in mature GoHighLevel accounts.
Update Pipeline / Opportunity
Moves a contact to a specific pipeline stage or updates the associated opportunity. Use to: automatically move a contact to “Discovery Call Booked” when they book an appointment; move a contact to “Active Client” when they pay; or create a new opportunity when a tag is applied. Combining pipeline stage changes with If/Else conditions creates the dynamic pipeline movement that keeps deal tracking accurate without requiring manual updates for every contact.
Remove from Workflow
Immediately removes the contact from the current workflow, stopping all further actions. Use in exit condition branches: when a contact books an appointment, a Remove from Workflow action stops the nurture sequence immediately. This is the action that implements exit conditions — without it, contacts continue through the workflow regardless of what they do externally.
Building Exit Conditions: The Most Critical Workflow Configuration
Exit conditions are the triggers that remove a contact from a sequence when they take the action the sequence was designed to generate. Missing exit conditions are the single most common GoHighLevel configuration error — producing scenarios where converted clients receive prospect-stage messages, opted-out contacts continue receiving sequences, or clients who have already booked receive three more “book a call” emails. → Read: Marketing Automation Mistakes That Cost You Clients
Exit conditions in GoHighLevel are implemented through one of two mechanisms: workflow triggers with Remove from Workflow actions (e.g., a separate workflow triggered by “Appointment Status = Scheduled” that removes the contact from the nurture workflow); or If/Else conditions within the existing workflow that route converted contacts to a Remove from Workflow action.
Every nurture or follow-up workflow requires these exit conditions at minimum: booking made (appointment status = scheduled removes from all prospect sequences); pipeline stage converted (moved to Closed Won removes from all prospect sequences); contact reply received (inbound SMS or email routes to team inbox and pauses or removes from automated sequence); opt-out keyword detected (STOP in SMS reply removes from all sequences and applies opted-out tag); and Active Client tag applied (removes from all prospect sequences).
Test every exit condition before activating the workflow. Create a dummy contact, enrol them in the workflow, trigger each exit event manually, and verify the contact is removed from the workflow within the expected time window. This test takes 20 minutes and prevents the most damaging GoHighLevel failure mode — automation that continues firing after conversion.
The 7 GoHighLevel Workflows Every UK Service Business Needs
The following seven workflows, built in this priority order, constitute the minimum viable automation stack for a UK service business. Each is described with its trigger, key actions, exit conditions, and UK-specific configuration notes.
Workflow 1: Speed-to-Lead Response
Trigger: Contact Created or Form Submitted (from all enquiry sources). Actions: (1) Send SMS immediately — brief warm acknowledgement with booking link, personalised with {{contact.first_name}} and {{contact.custom_field.service_type}}; (2) Send Email simultaneously — 100 to 150 word personalised response with qualifying question and booking link; (3) Wait 1 hour; (4) If no reply received (check: last inbound SMS time = null AND last inbound email time = null), send follow-up SMS; (5) Wait 23 hours; (6) Remove from this workflow and add to nurture sequence. Exit conditions: contact reply received (remove from workflow); appointment booked (remove from workflow). UK configuration: ensure the SMS action uses the LC-Phone UK number and sends during all hours — speed-to-lead fires 24/7 with an after-hours message variant. → Read: Speed to Lead: Why Response Time Kills Conversions
Workflow 2: Missed Call Text-Back
Trigger: Missed Call on GoHighLevel LC-Phone number. Actions: (1) Wait 30 seconds (to ensure the call has genuinely been missed rather than answered on another device); (2) Send SMS immediately — warm acknowledgement of the missed call, invitation to reply or book via booking link. Exit conditions: contact reply received (remove from workflow, route to team inbox). UK configuration: frequency limit — send maximum one text-back per contact per 24-hour window to prevent multiple text-backs if a prospect calls several times. Verify the trigger fires by calling the GoHighLevel number from a personal mobile and allowing it to ring to voicemail.
Workflow 3: Appointment Reminder with YES/NO Confirmation
Trigger: Appointment Status = Scheduled. Actions: (1) Wait Until 24 hours before appointment start time (business hours only: Mon–Sat 8am–8pm UK time); (2) Send Email — appointment details, preparation instructions, prominent rescheduling link; (3) Send SMS simultaneously — brief reference to the email; (4) Wait Until 2 hours before appointment start time (no business hours restriction for daytime appointments); (5) Send SMS — “Reply YES to confirm you’re coming or NO to reschedule: [link]”; (6) If reply = YES → Send confirmation receipt → Remove from workflow; (7) If reply = NO → Send rescheduling message with booking link → Remove from workflow; (8) If no reply after 4 hours → Send gentle follow-up prompt. No-show follow-up: separate workflow triggered by Appointment Status = No-Show, fires 30 minutes after the trigger with a warm rescheduling message. → Read: How to Reduce No-Shows With Automation
Workflow 4: Five-Message Lead Nurture Sequence
Trigger: Tag Added (“nurture-active”) — applied by the speed-to-lead workflow when a contact has not booked within 24 hours. Actions: five emails with 3-day wait steps between each — message 1 (value delivery); message 2 (case study from similar client); message 3 (addressing common objection); message 4 (direct booking invitation); message 5 (graceful exit with booking link). After message 5: wait 7 days, then add to extended nurture workflow (weekly email for 90 days) if still not converted. Exit conditions: appointment booked; pipeline stage = Closed Won; tag “Active Client” applied; contact reply received; opt-out keyword in SMS. UK configuration: all Wait steps restricted to Mon–Fri 8am–8pm. → Read: How to Set Up a Lead Nurture Sequence
Workflow 5: Post-Service Review Request
Trigger: Appointment Status = Showed (updated by staff after each appointment). Actions: (1) Wait 24 hours; (2) Send SMS — personalised thank-you referencing the specific service, with direct Google review link; (3) Wait 3 days; (4) If no review left (check via reputation management integration), send email follow-up with the review link. Exit conditions: review submitted (remove from workflow). UK configuration: use the Google Business Profile integration to surface the review request link directly to the GBP listing. BrightLocal‘s research shows 76 per cent of consumers asked to leave a review do so — the timing (24 to 48 hours after service) is the key variable.
Workflow 6: Database Reactivation Campaign
Trigger: Tag Added (“reactivation-[campaign-name]”) — applied manually to the target contact segment before campaign launch. Actions: five messages over 12 to 14 days — message 1 (personal reconnection, Day 1); message 2 (value delivery, Day 3–4); message 3 (case study, Day 6–7); message 4 (direct invitation, Day 9–10); message 5 (graceful exit, Day 12–14). After Day 14: if no response, add to monthly nurture sequence. Exit conditions: contact reply; appointment booked; pipeline stage = Closed Won; opt-out keyword. Pre-campaign requirement: apply unique campaign tag to all target contacts before activating the workflow to enable accurate ROI attribution. → Read: Database Reactivation: How to Win Back Dormant Leads
Workflow 7: Client Retention and At-Risk Trigger
Trigger: Tag Added (“client-at-risk”) — applied by account manager when declining engagement signals are detected. Actions: (1) Immediately create a task in GoHighLevel for the business owner or senior account manager — “High-priority: [client name] flagged at risk — personal call required within 24 hours”; (2) Wait 24 hours; (3) If task not completed (check task status), send escalation notification to business owner; (4) Wait 48 hours; (5) Send a value-delivery email from the business owner’s email address — a relevant insight or case study, with a low-pressure invitation to reconnect. Exit conditions: “At Risk” tag removed (by account manager after successful retention intervention); client churns (pipeline stage = Cancelled, remove from all sequences). This workflow combines automation (the notifications and escalation) with human action (the personal call) in the ratio that retention conversations require.
Advanced Workflow Features for UK Service Businesses
Re-enrolment settings
By default, GoHighLevel prevents a contact from being enrolled in the same workflow twice. For most workflows, this is the correct setting — a contact should not receive the same speed-to-lead sequence twice. However, some workflows benefit from allowing re-enrolment: the appointment reminder workflow should re-enrol a contact every time they book a new appointment (each booking should trigger a new reminder sequence); the reactivation campaign should re-enrol contacts after a 6-month rest period. Configure re-enrolment in the workflow settings panel — enable it for workflows where repeated enrolment is appropriate, leave it disabled for all others.
Workflow goals
GoHighLevel’s workflow goals feature allows you to define a specific outcome that marks the workflow as “complete” for a contact. When a contact achieves the goal (e.g., books an appointment, reaches a specific pipeline stage), they are automatically removed from the workflow regardless of where they are in the sequence. Goals are a cleaner implementation of exit conditions for outcome-based workflows — configure a goal on every nurture and follow-up workflow as the primary exit mechanism, with tag-based exit conditions as the backup for scenarios the goal does not cover.
Conditional splits for personalisation
GoHighLevel’s conditional split action routes contacts to different message branches based on their CRM data. For a UK service business serving multiple client types, a conditional split based on the “Service Type” custom field delivers industry-specific case studies and references in message 3 of the nurture sequence without requiring separate workflows for each service type. Build the conditional split immediately before message 3, create a branch for each primary service type with the relevant case study, and add a default branch for all other service types. This single addition consistently doubles the reply rate for message 3 without increasing the workflow complexity significantly.
Webhook actions for external integrations
GoHighLevel’s webhook action sends contact data to an external URL when the workflow reaches that step. For UK service businesses using tools without native GoHighLevel integration (Xero, Clio, practice management systems), a webhook action in the “Closed Won” pipeline stage can trigger a Zapier workflow that creates the corresponding record in the external system. Configure the webhook with the external system’s API endpoint and the specific contact fields required — typically: contact name, email, phone, service type, deal value, and closed date.
Troubleshooting Common GoHighLevel Workflow Problems
Workflow not firing for new contacts
The most common cause is a trigger filter that is too restrictive. Check: is the trigger filter set to a specific form or source that is not receiving contacts? Is the trigger set to “Contact Created” when contacts are being created via an integration that uses a different trigger type? Test by creating a contact manually in GoHighLevel and verifying whether the workflow fires. If it fires for manual contacts but not for integrated contacts, the integration is not creating contacts with the expected field values that the trigger filter requires.
Messages sending at wrong times
Check the Wait step time window restrictions. Navigate to each Wait step in the workflow and verify: “Send in Timezone” is enabled; the allowed hours are set to 8am to 8pm (or the appropriate business hours for the service type); and the allowed days are set correctly. UK businesses must also verify that the GoHighLevel account time zone is set to Europe/London — US time zone defaults cause UK business hours restrictions to fire at the wrong UK local times.
Exit conditions not working
Test each exit condition individually with a dummy contact: enrol the contact in the workflow, trigger the exit event, and verify the contact is removed from the workflow within the expected time window. If the exit condition is implemented via a separate workflow (e.g., a workflow triggered by appointment booking that removes contacts from the nurture sequence), verify that the second workflow is active and that its trigger correctly identifies contacts enrolled in the nurture sequence. → Read: Marketing Automation Mistakes That Cost You Clients
SMS not delivering to UK numbers
Check: is the GoHighLevel LC-Phone number a UK number (beginning with +44)? Is the contact’s phone number stored in international format (+44 7XXX XXXXXX)? Is the SMS action configured to send from the UK LC-Phone number rather than a US number? UK mobile numbers must be stored without the leading 0 (e.g., +44 7912 345678 rather than 07912 345678) for GoHighLevel’s SMS system to deliver correctly. Use GoHighLevel’s bulk contact update feature to convert existing UK numbers to international format if they were imported in national format.
Low email open rates
The most common cause of persistently low open rates in GoHighLevel is an unauthenticated sending domain. Check: are SPF, DKIM, and DMARC records correctly configured in the DNS for the sending domain? Navigate to Settings → Email Services in GoHighLevel and verify all authentication records show green. If they do not, the records need to be added or corrected in the domain registrar’s DNS settings. Unauthenticated domains produce spam delivery rates of 20 to 40 per cent even for well-written, relevant content.
Testing Your GoHighLevel Workflows Before Going Live
Every workflow must be tested with a dummy contact before activation. The test should replicate the complete contact journey: trigger the workflow via the expected trigger event (not just by manually enrolling a contact); verify each action fires in sequence with the correct content and timing; trigger each exit condition and verify the contact is removed; and check the contact record after the test to verify all tags, pipeline stage changes, and field updates have been applied correctly.
Run the test on a real mobile device — not a browser inbox or email simulator. The experience of receiving a GoHighLevel SMS or email on a physical phone is the most reliable test of whether the message will be well-received by actual contacts. Check font rendering, image loading, button tappability, and link functionality on both iOS and Android before activating any workflow.
For appointment reminder workflows specifically: create a test appointment via the public booking link, set the appointment time to one hour from now, and verify the 2-hour reminder fires immediately (because the appointment is already inside the 2-hour window). Then create a second test appointment for 25 hours from now and verify the 24-hour reminder fires at the correct time the following morning. These two tests verify the “Wait Until” logic is working correctly for both short-notice and advance bookings.
Document the test results for each workflow. A simple log — workflow name, test date, trigger event tested, actions verified, exit conditions tested, pass/fail — creates an audit trail that is useful when diagnosing future problems and when demonstrating compliance with ICO direct marketing requirements. Store the test log in the same Google Drive folder as the GoHighLevel implementation documentation. → Read: Marketing Automation ROI: How to Measure It
Maintaining and Optimising GoHighLevel Workflows Over Time
GoHighLevel workflows require quarterly review to maintain performance. The review covers: open rates and reply rates per message (declining rates indicate content staleness or deliverability degradation); exit condition trigger counts (exit conditions that are never triggering may indicate a configuration problem); workflow entry volume (a workflow receiving fewer entries than expected may indicate an integration failure upstream); and any GoHighLevel platform updates that affect workflow behaviour or introduce new capabilities.
The quarterly review should also include a test of every active workflow with a dummy contact — platform updates occasionally introduce changes to workflow behaviour that only become visible through a full end-to-end test. Maintaining the habit of quarterly testing prevents the silent performance degradation that affects unreviewed workflows over time.
Quarterly optimisation should also include a review of the workflow’s entry volume trend. A workflow receiving significantly fewer entries than expected may indicate an integration failure upstream — for example, a website form that has stopped connecting to GoHighLevel due to a plugin update, or a Facebook Lead Ads integration that was disconnected during an account change. Entry volume is the leading indicator of integration health; declining entry volume should trigger an immediate integration audit.
When updating an existing workflow, make changes while the workflow is inactive — editing an active workflow can affect contacts currently enrolled in it. Clone the existing workflow, make changes to the clone, test the clone with a dummy contact, then swap: deactivate the old workflow, activate the new one. This swap approach ensures existing enrolled contacts complete the original version while new contacts enter the updated version.
Conclusion: Workflows That Work Are Workflows Built Correctly
GoHighLevel’s workflow builder is the most powerful automation tool available to UK service businesses at this price point. The businesses that extract the highest return from it are not those with the most complex workflows — they are those that build simple, well-configured workflows with correct triggers, appropriate time restrictions, tested exit conditions, and a quarterly optimisation schedule.
The seven workflows in this guide — speed-to-lead, missed call text-back, appointment reminder, five-message nurture, review request, database reactivation, and retention trigger — constitute the complete automation stack that AutomateToGrow implements for every service business client. Together, they address every major revenue leakage point in the typical service business client journey. Built correctly and maintained quarterly, they generate the 8:1 to 15:1 automation ROI that this guide’s companion articles document in detail.
The businesses that generate the highest GoHighLevel ROI are not those with the most workflows — they are those with the fewest well-built workflows. Seven correctly configured, tested, and maintained workflows outperform twenty poorly built ones consistently. Start with the seven in this guide. Build them correctly. Measure the results. Then, and only then, consider what additional automation could improve on an already-performing foundation.
AutomateToGrow builds and configures GoHighLevel workflows for UK service businesses across all sectors — from initial build and testing through to quarterly optimisation and ongoing performance review. Implementation engagements include a full workflow library (all seven core workflows), GDPR compliance configuration, integration testing, and a 30-day post-launch support period to catch any edge-case issues that only surface with live contact volumes. Book a free implementation consultation at automategrow.com, available to UK service businesses in every sector and region. Every implementation engagement includes a 30-day post-launch review meeting to verify all workflows are performing correctly, address any edge cases that only emerge with live traffic, and prioritise the next optimisation cycle.

Article produced by Damian Qualter, AutomateToGrow — GoHighLevel Expert and Keap Certified Partner with 20+ years of marketing automation experience and 200+ service business implementations across the UK, US, Canada, and Australia. automategrow.com | Published 2026.
Frequently Asked Questions
The following 35 questions are formatted for Google’s featured snippet and People Also Ask placement.
How do I create a workflow in GoHighLevel?
Navigate to Automation → Workflows in the GoHighLevel left sidebar. Click “Create Workflow” and select “Start from Scratch.” Name the workflow clearly (include the workflow type, target audience, and version number). Click “Add New Trigger” and select the event that should start the workflow. Click the “+” button below the trigger to add your first action. Build the sequence of actions, using Wait steps between messages to control timing. Add If/Else conditions for branching logic and Remove from Workflow actions for exit conditions. Test with a dummy contact before toggling the workflow from Inactive to Active.
What triggers are available in GoHighLevel workflows?
GoHighLevel offers over 40 trigger types. The most commonly used for service businesses are: Contact Created (fires when a new contact is added); Form Submitted (fires when a specific form is completed); Appointment Status (fires when an appointment status changes to Scheduled, No-Show, Showed, etc.); Tag Added (fires when a specific tag is applied to a contact); Pipeline Stage Changed (fires when a contact moves to a specific pipeline stage); Missed Call (fires when an inbound call to a GoHighLevel number is unanswered); and Date/Time (fires at a specific date or on a recurring schedule).
How do I add a time delay in a GoHighLevel workflow?
Use the Wait action. Click the “+” button to add a new step, search for “Wait” in the action library, and configure the wait duration. Options: wait for a fixed period (e.g., “24 hours” or “3 days”); wait until a specific time of day (e.g., “wait until 9am tomorrow”); or wait until a time relative to an appointment (e.g., “wait until 2 hours before appointment start time”). Always enable the time window restriction on every Wait step — this prevents the workflow from advancing at inappropriate hours by holding the wait until the allowed time window begins.
How do I set up exit conditions in GoHighLevel?
Exit conditions in GoHighLevel are implemented through one of two approaches. The first is a workflow goal: in the workflow settings, define a goal (e.g., “Appointment Status = Scheduled”) that automatically removes contacts who achieve it. The second is an If/Else condition within the workflow that checks for conversion events at each step and routes converted contacts to a Remove from Workflow action. Both approaches should be used together — goals as the primary mechanism, If/Else conditions as the backup. Test every exit condition with a dummy contact before activating the workflow.
How do I make a GoHighLevel workflow send messages only during business hours?
Configure the time window restriction on every Wait step in the workflow. Click the Wait action, enable “Send in Timezone,” and set the allowed days (e.g., Monday to Saturday) and allowed hours (e.g., 8am to 8pm). When the workflow reaches the Wait step outside these hours, it holds until the next allowed time window opens. For UK businesses, set the time zone to Europe/London in both the Wait step settings and the GoHighLevel account settings — US time zone defaults cause UK business hours restrictions to fire at wrong local times.
What is the difference between a trigger and an action in GoHighLevel?
A trigger is the event that starts the workflow — the “what happened” that begins the automation. An action is the step the workflow takes in response — the “what we do next.” Every workflow has exactly one trigger at the top and one or more actions below it. Examples: Trigger: Form Submitted → Action: Send Email. Trigger: Missed Call → Action: Send SMS. Trigger: Appointment Status = No-Show → Action: Wait 30 minutes → Action: Send SMS with rescheduling link.
How do I personalise messages in GoHighLevel workflows?
Use GoHighLevel’s merge field syntax: double curly brackets around the field name ({{contact.first_name}}, {{contact.email}}, {{contact.custom_field.service_type}}). In the email or SMS action, click the merge field icon or type the field name directly. Common merge fields for UK service business personalisation: {{contact.first_name}}, {{contact.custom_field.service_type}}, {{contact.custom_field.business_name}}, {{contact.custom_field.geographic_area}}, {{appointment.start_time}}, {{appointment.location}}. The more specific the merge field reference, the more personal the message feels to the recipient.
How do I test a GoHighLevel workflow before activating it?
Keep the workflow in Inactive status. Create a dummy contact in GoHighLevel with a personal mobile number and email address. Trigger the workflow via its expected trigger event (submit the form it monitors, call the GoHighLevel number, or manually apply the trigger tag to the dummy contact). Monitor the workflow history for the dummy contact to verify each action fires in sequence with the correct content and timing. Trigger each exit condition and verify the contact is removed. Only toggle the workflow to Active after all steps have been verified.
How do I set up a YES/NO confirmation in GoHighLevel appointment reminders?
In the appointment reminder workflow, after the 2-hour SMS action, add an If/Else condition. Configure the condition to check: “Last Inbound SMS Contains ‘YES'” → path A; “Last Inbound SMS Contains ‘NO'” → path B; default path (no reply) → path C. Path A: send a confirmation receipt and remove from workflow. Path B: send a rescheduling message with booking link and remove from workflow. Path C: wait 4 hours, then send a gentle follow-up prompt. Test by sending “YES” and “NO” replies from the dummy contact’s mobile number and verifying the correct response fires.
Can I have multiple triggers in one GoHighLevel workflow?
Yes — GoHighLevel allows multiple triggers on a single workflow using the OR logic: the workflow fires if trigger A occurs OR trigger B occurs. This is useful for speed-to-lead workflows that should respond to enquiries from multiple sources (website form OR Facebook Lead Ad OR Google Ads). Click “Add New Trigger” in the trigger panel and add each additional trigger. The workflow will enrol a contact when any of the configured triggers fires. Apply filters to each trigger independently to prevent cross-trigger conflicts.
How do I clone a GoHighLevel workflow?
In the Workflows list view, hover over the workflow name to reveal the options menu. Click the three-dot icon and select “Clone.” GoHighLevel creates an exact copy of the workflow in Inactive status with “Copy of” prepended to the name. Rename the clone immediately, make your changes, test with a dummy contact, then swap: deactivate the original, activate the clone. This cloning approach is the recommended method for updating active workflows — it prevents the workflow modification from affecting contacts currently enrolled in the original.
What is a GoHighLevel workflow goal?
A workflow goal is a defined outcome that marks the workflow as complete for a contact, automatically removing them when the outcome is achieved regardless of where they are in the sequence. Goals are configured in the workflow settings panel. Example: a nurture sequence with a goal of “Appointment Status = Scheduled” removes any contact who books an appointment, even if they are still on message 2 of a five-message sequence. Goals are the cleanest implementation of exit conditions for outcome-based workflows.
How do I connect a GoHighLevel workflow to a pipeline stage?
Use the Pipeline Stage Changed trigger (to start a workflow when a contact reaches a stage) or the Update Pipeline action (to move a contact to a stage as a workflow step). For the trigger: select Pipeline Stage Changed, choose the pipeline, and select the specific stage. For the action: select Update Pipeline, choose the pipeline, and select the target stage. Combining both — a workflow triggered by stage X that moves contacts to stage Y after a defined action sequence — is the mechanism for stage-based automation like client onboarding (triggered by Closed Won, moves to Active Client after onboarding completion).
How do I handle contacts who opt out in a GoHighLevel workflow?
GoHighLevel automatically detects opt-out keywords (STOP, UNSUBSCRIBE, QUIT, CANCEL) in inbound SMS replies and applies an “unsubscribed” tag. Configure an additional exit condition in every workflow: If/Else condition checking “Tag = unsubscribed” → Remove from Workflow. Verify this condition is present in every active workflow. Additionally, configure a standalone workflow triggered by the “unsubscribed” tag being added that removes the contact from any other active workflows — this catch-all ensures an opt-out in one workflow removes the contact from all simultaneous sequences.
Can GoHighLevel workflows send WhatsApp messages?
Yes. GoHighLevel’s Send Message action includes a WhatsApp option for accounts connected to a WhatsApp Business API number. WhatsApp workflow messages are configured in the same way as SMS actions: select the Send Message action, choose WhatsApp as the channel, and write the message content using the same merge field syntax. WhatsApp message templates must be pre-approved for the first message in any new conversation with a contact — subsequent messages in an active conversation can be sent as free-form text.
What is re-enrolment in GoHighLevel workflows?
Re-enrolment determines whether a contact can be enrolled in the same workflow more than once. By default, re-enrolment is disabled — a contact who has been enrolled in a workflow once cannot be enrolled again. For appointment reminder workflows, re-enrolment should be enabled (so each new appointment triggers a new reminder sequence for the same contact). For nurture sequences, re-enrolment should typically be disabled (a contact should not receive the same nurture sequence twice). Configure re-enrolment in the workflow settings panel.
How do I track workflow performance in GoHighLevel?
Navigate to Automation → Workflows and click on any active workflow to access its performance data. The workflow analytics panel shows: total contacts enrolled; current active contacts; contacts who completed the workflow; step-by-step completion rates; email open and click rates per email action; SMS delivery and reply rates per SMS action; and exit condition trigger counts. Review this data monthly for every active workflow and flag any metric that shows a declining trend over two consecutive months for investigation and optimisation.
How do I set up a GoHighLevel workflow for a missed call?
Create a new workflow. Set the trigger to Missed Call. Configure a filter if you want the trigger to apply only to missed calls on a specific GoHighLevel number (useful for agencies with multiple client sub-accounts). Add a Wait step of 30 seconds (to avoid firing for calls answered on another device). Add a Send SMS action with the missed call text-back message: warm acknowledgement of the missed call, invitation to reply or book via booking link. Add a frequency limit in the workflow settings to prevent multiple text-backs if a prospect calls several times in quick succession.
How many workflows should a UK service business have?
A minimum viable automation stack requires seven core workflows: speed-to-lead response; missed call text-back; appointment reminder with YES/NO confirmation; five-message lead nurture sequence; post-service review request; database reactivation campaign; and client retention/at-risk trigger. A mature automation stack for a UK service business typically has 12 to 18 active workflows, adding: extended 90-day nurture for non-converters; post-no-show rescheduling; referral request at client milestones; expansion/upsell at 90-day and 6-month client milestones; and monthly client reporting workflow.
What is the difference between a GoHighLevel workflow and a campaign?
In GoHighLevel’s current interface, “Campaigns” is a legacy feature that has been largely superseded by Workflows. Workflows are more powerful: they support If/Else branching, Wait Until logic, goal-based exit conditions, and multi-channel actions (email, SMS, WhatsApp, tasks, pipeline updates) in a single flow. Campaigns are simpler sequential message sequences without branching or goal logic. All new automation should be built in the Workflows builder. Existing campaigns should be migrated to Workflows when they next require significant changes.
How do I prevent GoHighLevel workflows from sending duplicate messages?
Duplicate messages in GoHighLevel are almost always caused by one of three issues: a contact being enrolled in two workflows that both send the same message; re-enrolment being enabled on a workflow where it should be disabled; or a workflow trigger firing twice for the same event (possible when an integration sends duplicate webhook events). Audit the active workflow membership of any contact receiving duplicates — GoHighLevel shows all active workflow enrolments in the contact record. Resolve by removing the contact from duplicate workflows and checking the trigger configuration for the affected workflow.
Can I use GoHighLevel workflows with external tools?
Yes. GoHighLevel workflows can interact with external tools through: native integrations (Facebook Lead Ads, Google Business Profile, Stripe, Google Calendar, Outlook Calendar — all connectable via GoHighLevel settings); webhook actions (sending contact data to any external API endpoint, enabling connection to Xero, Clio, practice management systems, or custom databases); and Zapier (GoHighLevel triggers Zapier, which can interact with virtually any external tool). For UK-specific tools without native integration, the Zapier webhook approach is the most reliable connection method.
How do I set up a GoHighLevel workflow for client onboarding?
Trigger: Pipeline Stage Changed to “Closed Won.” Actions: (1) Immediately send welcome email with onboarding agenda, key contacts, and login details; (2) Create task for account manager — “Day 2: send kickoff call invitation”; (3) Wait 2 days; (4) Send kickoff call invitation email with calendar booking link; (5) Wait 3 days; (6) Send pre-kickoff questionnaire link; (7) Wait 5 days; (8) Send onboarding progress update; (9) Wait 4 days; (10) Send first-impression check-in email. Exit condition: contact replies to any message (route to team inbox for personal response). Personalise every message with client name, company name, service package, and assigned account manager custom fields.
What is the best way to organise GoHighLevel workflows?
Use a consistent naming convention: [Workflow Type] — [Target Audience] — [Version]. Examples: “Speed-to-Lead — All Web Enquiries — v2”, “Appointment Reminder — Main Calendar — v1”, “Nurture — New Leads Unbooked — Extended 90-Day”. Create workflow folders (available in GoHighLevel’s workflow list view) to group workflows by function: New Business, Client Management, Reputation, Reactivation. Document each workflow’s purpose, trigger, exit conditions, and last test date in a shared implementation document — this documentation is invaluable when onboarding a new team member or diagnosing a problem six months after build.
How do I get started building GoHighLevel workflows?
Start with the workflow that delivers the fastest financial return for your business type — for most UK service businesses, that is the speed-to-lead response and missed call text-back. Build it, test it thoroughly with a dummy contact on a real mobile device, activate it, and measure the enquiry-to-booking conversion rate change over the following 30 days. Then build the appointment reminder workflow. Then the five-message nurture sequence. Build sequentially, test at each stage, and measure before building the next. AutomateToGrow provides GoHighLevel workflow building services and training for UK service businesses — book a free consultation at automategrow.com.
How do I copy a workflow action in GoHighLevel?
In the workflow builder, click on the action you want to copy. A small copy icon appears in the action’s top-right corner. Click it to duplicate the action directly below the original. This is particularly useful for reminder sequences where multiple similar SMS or email actions share the same structure but different content — duplicate the action and modify the content rather than building each from scratch.
What is the maximum number of actions in a GoHighLevel workflow?
GoHighLevel does not publish a hard limit on the number of actions in a single workflow. In practice, workflows above 30 to 40 actions become difficult to audit and maintain — at that complexity level, splitting into two linked workflows (where the first workflow’s final action applies a tag that triggers the second workflow) produces a more manageable architecture. The exception is simple message sequences where the same action type (Send Email, Wait) repeats — these can extend to 20 or 30 steps without becoming unmanageable.
How does GoHighLevel handle contacts who are in multiple workflows simultaneously?
A contact can be enrolled in multiple GoHighLevel workflows simultaneously. This is intentional for some scenarios — a contact enrolled in a nurture sequence and simultaneously enrolled in an appointment reminder workflow for a booked appointment is correct behaviour. Problems arise when a contact is enrolled in two conflicting workflows that both send similar messages — for example, a speed-to-lead workflow and a reactivation workflow running simultaneously. Audit active workflow membership in contact records weekly during the first 90 days of implementation and configure appropriate global frequency caps to prevent message overlap.
Can I trigger a GoHighLevel workflow from a Zapier event?
Yes. Configure a GoHighLevel webhook trigger in Zapier that applies a specific tag to a contact when the Zapier event fires. In GoHighLevel, create a workflow triggered by that tag being added. This Zapier-to-GoHighLevel trigger pattern enables any Zapier-connected tool to activate a GoHighLevel workflow — useful for integrating practice management systems, accountancy tools, or e-commerce platforms that do not have native GoHighLevel integrations.
How do I stop a GoHighLevel workflow from sending messages to existing clients?
Add an If/Else condition at the start of every prospect-stage workflow that checks for the presence of the “Active Client” tag (or your equivalent client tag). If the tag is present, route the contact to a Remove from Workflow action immediately. This catches any scenario where an existing client enters a prospect workflow due to a trigger misfire or a data import. Combine this with a workflow goal set to remove contacts when they reach the “Closed Won” pipeline stage — the goal handles real-time conversion exits while the opening condition handles pre-existing clients.
What is a smart list in GoHighLevel and how does it relate to workflows?
A GoHighLevel smart list is a dynamic contact list that automatically includes contacts matching defined filter criteria — for example, “all contacts with the tag Lead-Unbooked AND last activity within 60 days.” Smart lists update automatically as contacts meet or stop meeting the criteria. Smart lists are used to: build reactivation campaign audiences (filter for dormant contacts, apply the campaign tag in bulk, which triggers the reactivation workflow); audit workflow performance (filter for contacts in a specific workflow who have not yet converted); and create reporting segments. Smart lists are the primary audience management tool that complements the workflow builder.
How do I measure the open rate of a GoHighLevel email?
In the workflow builder, click on any active workflow, then click the analytics icon or navigate to the workflow’s reporting view. GoHighLevel shows open rate, click rate, and unsubscribe rate for each email action in the workflow. Open rates are tracked via a tracking pixel embedded in the email — contacts using email clients that block tracking pixels (including some Apple Mail configurations with Privacy Protection enabled) will appear as unopened even if the email was read. Treat GoHighLevel email open rates as directional rather than exact — they undercount true opens by an estimated 15 to 30 per cent for UK audiences using privacy-enabled email clients.
What happens when a GoHighLevel workflow encounters an error?
GoHighLevel logs workflow errors in the contact’s workflow history. Navigate to the contact record, scroll to the Workflows section, and click the active or completed workflow to view its step-by-step history. Error events show in red with a description of the failure type. Common errors: SMS delivery failure (incorrect phone number format); email delivery failure (bounced address); action timeout (external API did not respond). For recurring errors on multiple contacts, check the relevant integration and configuration settings rather than troubleshooting individual contact records.
Can GoHighLevel workflows send voice calls?
Yes. GoHighLevel’s workflow builder includes a Call action that initiates an automated voice call to the contact using a pre-recorded or text-to-speech message. Voice call automation is less commonly used in UK service business implementations than SMS and email — UK contacts generally respond better to written communications for appointment reminders and follow-up sequences. However, voice call workflows are valuable for high-priority scenarios: urgent appointment reminders for high-value clients, or outbound call campaigns where a human follow-up call is triggered by the workflow applying a task to the relevant team member.
How do I use GoHighLevel workflows to generate more Google reviews?
Create a workflow triggered by Appointment Status = Showed. Add a Wait step of 24 hours (business hours restricted). Add a Send SMS action with a direct link to your Google Business Profile review form: “Thanks for coming in today, [Name] — if you have 60 seconds, we’d really appreciate a Google review: [GBP review link].” Add a Wait step of 3 days. Add a Send Email action as a follow-up for non-reviewers. BrightLocal‘s research shows 76 per cent of consumers asked to leave a review do so — the SMS channel and the 24-hour timing after service consistently produce the highest review conversion rates.

