Build Your First GoHighLevel Workflow Automation
Build a real GoHighLevel workflow: triggers, actions, waits, if/else branches, and the speed-to-lead automation every local business should run on day one.
By Michael Smith ·
The steps
-
Map the loop on paper before you open the builder
Write the sequence in plain English: what starts it, what happens, what stops it. Five lines maximum. Workflows built without this step become sprawling, undebuggable messes within a month.
-
Create the workflow and choose one trigger
In a sub-account go to Automation > Workflows > Create Workflow > Start from Scratch. Add one trigger — Form Submitted is the right first choice. Filter it to a specific form so it does not fire on everything you own.
-
Send the SMS first, inside 60 seconds
Add a Send SMS action as the first step, with no wait before it. Write it like a human texting, not a brand broadcasting, and use the {{contact.first_name}} merge field. Speed is the entire point.
-
Add a Wait step, then an email fallback
Add Wait > 10 minutes, then Send Email with the same call to action. The wait prevents the text and email landing simultaneously, which reads as automated and kills replies.
-
Branch on the outcome with If/Else
Add an If/Else condition checking whether an appointment was booked or the contact replied. If yes, exit the workflow. If no, continue to a second follow-up 24 hours later. Never keep messaging someone who already converted.
-
Update the pipeline and notify a human
Add Create/Update Opportunity to move the card into your pipeline, plus an internal notification or task so a person follows up if automation does not close the loop.
-
Set removal conditions so people can exit
In workflow settings, configure removal conditions (for example, contact replies or books) and decide whether contacts can re-enter. Skipping this is how businesses end up texting a paying customer a 'still interested?' message.
-
Publish, test with your own phone, then watch the history
Toggle from Draft to Publish — an unpublished workflow silently does nothing. Submit your own form with a real number, then open the Execution History tab to watch each step fire and debug what did not.
The workflow builder is the best thing in GoHighLevel. It is also where people build the messes they later abandon the platform over.
The difference between those two outcomes is almost entirely about restraint. This tutorial builds one workflow — the speed-to-lead loop — properly, with the exit conditions and the testing that most tutorials skip.
Step 1: Write it in English first
Open a text file, not the builder. Write the loop:
A lead submits the contact form. Text them within a minute. If they haven’t replied in ten minutes, email them. If they still haven’t booked in 24 hours, text once more. The moment they book or reply, stop everything and tell a human.
Five lines. That is the whole system. If you cannot express your automation in five plain lines, it is too complicated to debug in six months when it misfires and you have forgotten how it works.
This sounds like a formality. It is not. Nearly every unmaintainable workflow started as someone improvising directly in the canvas.
Step 2: One trigger, filtered properly
Automation → Workflows → Create Workflow → Start from Scratch.
Add a trigger: Form Submitted. Then — importantly — filter it to a specific form. An unfiltered trigger fires on every form in the sub-account, which means your roofing lead-magnet workflow will also fire when someone submits your careers application. This is a rite of passage and you should skip it.
Other triggers worth knowing early: Inbound Call (for missed-call text-back), Tag Added (handy for moving people between workflows manually), Appointment Status Changed, and Opportunity Stage Changed.
Step 3: SMS first, and no wait before it
Add Send SMS as the very first action, with nothing in front of it.
Write it like a person:
Hi {{contact.first_name}}, it’s Dana at Northside Dental — saw you just reached out. Were you looking to get booked in this week?
Not like a brand:
Thank you for your inquiry. A representative will contact you shortly.
The first gets replies. The second gets ignored, because it is transparently a robot and it asks for nothing.
Two mechanical notes. Use the {{contact.first_name}} merge field, and confirm it
renders — a text that opens with “Hi ,” is worse than no text at all. And keep it short:
SMS bills per segment (roughly 160 characters), so a rambling message costs you double and
converts worse. Emojis can silently push a message into a second segment by changing its
encoding.
Step 4: Wait, then email
Add Wait → 10 minutes, then Send Email.
The wait matters. If the text and the email arrive in the same second, the prospect instantly recognises an automated sequence, and the reply rate drops. Ten minutes reads like a person following up through a second channel.
The email should make the same single ask as the text — book a time — and carry your calendar link. One ask per message.
Step 5: Branch, so you stop talking to people who already said yes
Add an If/Else condition:
- Condition: appointment booked, or contact replied?
- Yes → exit the workflow (and optionally add a
bookedtag). - No → Wait 24 hours → send one more SMS → then stop.
This is the step that separates a professional setup from an amateur one. Nothing destroys trust faster than a business that texts “Still interested?” to a customer who booked an appointment yesterday and is sitting in the waiting room.
Also: know when to stop. Two follow-ups and out. A seven-message drip to a cold lead generates unsubscribes, spam complaints, and carrier filtering that damages deliverability for every other message you send.
Step 6: Move the pipeline and tell a human
Add Create/Update Opportunity to drop the lead into your pipeline at “New Lead”, and move it to “Contacted” once the first message goes out.
Then add an internal notification or a task for the owner. Automation is there to handle speed and consistency, not to replace judgement. The highest-converting setups are almost always automation for the first sixty seconds, then a human as soon as one is available.
Step 7: Removal conditions — the setting everyone forgets
Open the workflow Settings tab.
- Removal conditions: pull the contact out when they reply, book, or get a specific tag.
- Allow re-entry: decide deliberately. For a lead-magnet workflow, usually no — you do not want the same person running the sequence four times because they downloaded four PDFs.
- Stop on response: enable it for conversational sequences.
A contact can be in several workflows at once. Without removal conditions, they can receive three messages from three sequences on the same morning, and you will look chaotic.
Step 8: Publish. Then actually test it.
Two things.
Publish it. The toggle at the top says Draft or Publish. An unpublished workflow does absolutely nothing, silently, forever. This is the single most common “why isn’t it working” answer.
Test as a real lead. Submit your own form from your phone with a real number. Then open the Execution History tab — it shows every contact that entered, every step, and exactly where each one stopped. This is your debugger, and it is genuinely good. When something misfires, come here first rather than staring at the canvas.
Check: SMS arrived fast, email landed outside spam, opportunity card created, notification received, and — after you reply to the text — the workflow exited you cleanly.
Where people go wrong after this
Once the first workflow clicks, the temptation is to automate everything at once. Resist it. The agencies that get real value build a small number of workflows they fully understand and maintain. The ones that churn build forty overlapping sequences with no removal conditions, lose track of which one is texting whom, and conclude the platform is chaotic.
Sensible next builds, in order:
- Missed-call text-back — the highest-ROI automation available to any business with a phone.
- Appointment reminders — 24 hours and 1 hour before, cutting no-shows.
- Review requests — fire after an appointment is marked as showed.
Then package the whole set as a snapshot so the next client takes an hour, not a week — see how to install a snapshot.
For what all this messaging actually costs once SMS, email and AI usage stack on top of the subscription, see the pricing breakdown; for a candid take on where the platform frustrates people, the review.