Workflow Examples · Small Business
GoHighLevel Workflow Examples for Small Businesses
Not theory — five full, worked GoHighLevel workflows built for the way a small business actually operates: a limited team that can't manually follow up on everything. Each example below shows the exact trigger, the step-by-step sequence, and why it matters when there's nobody free to chase every lead, patient, or customer by hand.
On This Page
How These Workflows Are Actually Built
Every workflow below is built from the same four block types in GoHighLevel's native workflow builder — no code, no separate tool. A trigger starts the workflow off a real event (a missed call, a booked appointment, a submitted order, a form fill). A wait step pauses the contact — for a fixed duration, until a specific time, until they reply, until they click something, or relative to an appointment's own start time. An if/else branch checks a condition at that exact point and splits the contact onto a Yes path or a No path. And an action does something concrete — sends a message, adds a tag, assigns a team member, or fires an internal notification.
For what GoHighLevel is more broadly and how its workflow engine fits into the rest of the platform, see the complete GoHighLevel guide. This page assumes you already know roughly what GHL is and goes straight into the mechanics of five specific, small-business-shaped builds.
Local Service Business — Plumber, HVAC, Salon
Missed Call to Booked Job
A one- or two-tech outfit can't have someone sitting by the phone all day. A call comes in while the plumber's hands are literally on a job, it rings out, and the caller moves straight to the next name on Google. This is the single most common way small service businesses bleed leads — not bad marketing, a phone nobody could answer.
The Workflow
TriggerMissed Call
Fires the moment an inbound call to the business number goes unanswered. GHL's built-in Missed Call Text Back feature (Settings → Phone System → Voice) can trigger the same response automatically, or you can build it as a standalone Call Status trigger if you want more control over the branching below.
ActionSend SMS
An instant text within seconds: "Sorry we missed your call! Here's a link to grab a slot: [booking link]" — with the business name and a merge field for the caller's name if it's already a known contact.
WaitWait — Contact Reply
Holds the contact until they reply on SMS or click the booking link, with a 15-minute timeout so the sequence doesn't sit open indefinitely.
If / ElseIf / Else — did they reply or book?
Splits into a Yes path (they engaged) and a No path (still silent after 15 minutes).
YesActionAdd Tag + Assign to User
Tags the contact "booked-callback" and assigns them to whichever tech or dispatcher is on rotation, with an Internal Notification so a real person knows to expect the job.
NoWaitWait — Fixed Duration (1 hour)
Gives it an hour before trying again, rather than immediately re-pinging someone who's simply busy.
NoActionSend SMS (second nudge)
A shorter, different message — not the same text repeated, which reads as spam. Something closer to: "Still need a hand? Here's the link whenever you're ready: [link]"
NoIf / ElseIf / Else — clicked the link this time?
A second check before giving up on automation and handing it to a human.
NoActionAdd Tag + Create Task
Tags the contact "cold-missed-call" and creates a task for a manual callback the next morning — so nobody falls through entirely, it just moves from automated to a human's to-do list.
Why it matters: A two-person plumbing or HVAC business doesn't need a receptionist. The lead gets acknowledged in seconds and nudged twice automatically, and only the calls that genuinely need a human touch land on someone's desk — instead of every missed call being an opportunity that quietly evaporated.
Clinic / Appointment-Based Business
No-Show Reduction, Booking to Recovery
A small clinic — dental, physio, aesthetics — runs on a fixed number of billable slots per day, and every no-show is revenue that can't be recovered later. Front desk staff calling every patient the day before doesn't scale past a handful of appointments, so the reminders either don't happen or happen inconsistently.
The Workflow
TriggerAppointment Status → New
GHL's Appointment Status trigger fires on the moment a booking is made (status options are New, Confirmed, Cancelled, Showed, No-show, and Invalid) — this workflow filters on New.
ActionSend Email + SMS confirmation
An immediate confirmation on both channels with the date, time, and location or video link.
WaitWait — Appointment-Based (24 hours before)
A relative wait tied to the appointment's own start time rather than a fixed date, so it holds correctly no matter when the appointment was originally booked.
ActionSend SMS reminder #1
"Reply C to confirm or R to reschedule" — a reply-based confirmation, not just a one-way reminder.
WaitWait — Appointment-Based (2 hours before)
A second, shorter-window reminder for same-day forgetfulness, which the 24-hour reminder alone won't catch.
If / ElseIf / Else — Appointment Status = Confirmed?
Checks whether the patient actually confirmed through either reminder.
NoActionInternal Notification to front desk
Flags the unconfirmed appointment so a staff member can make one targeted personal call instead of calling every patient blind.
NoTrigger(Separate workflow) Appointment Status → No-show
A second, connected workflow that only fires once a booked slot is actually marked as a no-show.
NoWaitWait — Fixed Duration (1 hour)
Lets the missed slot settle before reaching back out, rather than messaging the moment they're marked absent.
NoActionSend SMS — rebooking link
"We missed you today — here's a link to grab a new slot: [link]"
NoIf / ElseIf / Else — did they rebook?
Checked via a Contact Action wait (did they click the rebooking link) with a 2-day timeout.
NoActionAdd Tag "at-risk" + Assign to User
Routes patients who ignored the rebooking link to a front-desk staff member for one direct, personal call.
Why it matters: A clinic with one or two front-desk staff can't personally call every patient the day before and again after every no-show — this runs the reminder cascade and the recovery attempt automatically, and only escalates to a human call for the patients who genuinely need one.
Small E-Commerce / Local Retail
Order Follow-Up and Repeat Purchase
A solo shop owner running orders through a GHL funnel can confirm and ship an order, but rarely has time to also check in after delivery, ask for a review, or win back the customer who never came back. Those are exactly the touches that turn a one-time buyer into a repeat one — and exactly the touches that get skipped when you're the only one packing boxes.
The Workflow
TriggerOrder Submitted
Fires when a customer completes and submits a 1-step or 2-step order form (GHL v2 funnels). It also fires a second time on an upsell purchase, so "Allow Multiple" needs to be on in the workflow settings if the funnel includes an upsell step.
ActionSend Email — confirmation
Order confirmation with an estimated delivery window, plus Add Tag "customer" on the contact record.
WaitWait — Fixed Duration (5 days)
Timed to roughly match the estimated delivery window for the product being sold.
ActionSend SMS / WhatsApp — delivery check-in
"Your order should have arrived — how did it go?" with a review link.
WaitWait — Contact Reply or Contact Action
Holds until they reply or click the review link, timing out after 3 days if there's no response either way.
If / ElseIf / Else — did they respond?
Splits based on whether the check-in actually got engagement.
YesActionInternal Notification + Add Tag
Logs the response for the owner and tags the contact so the review-routing workflow (see the fifth example below) can pick it up.
NoWaitWait — Fixed Duration (14 days)
A longer gap before the win-back attempt, so it doesn't read as pushy right after a purchase.
NoActionSend Email — win-back offer
"Here's 10% off your next order" with Add Tag "win-back-sent" so the same offer doesn't go out twice.
Why it matters: A one-person retail operation gets delivery check-ins, review requests, and win-back offers running quietly in the background — the parts of the customer relationship that actually build repeat revenue, instead of the business only ever touching a customer once, at checkout.
Solo Consultant / Coach
Lead to Discovery Call
A freelance consultant or coach working alone gets a website inquiry or lead-magnet opt-in mid-client-session and can't reply for hours. By the time they check their inbox, the lead has often already forgotten why they reached out — or booked a call with someone who replied faster.
The Workflow
TriggerForm Submitted
Fires on a contact-form inquiry or a lead-magnet opt-in — whichever is the actual entry point into the funnel.
ActionSend Email — instant reply
A same-second reply with a direct booking link to a free discovery call, so the lead never has to wait on the consultant personally.
WaitWait — Contact Action (60-minute timeout)
Holds until the booking link is clicked, timing out after an hour if it isn't.
If / ElseIf / Else — did they book?
Checks whether the click (and the booking) happened inside that first hour.
YesActionAdd Tag "discovery-booked"
Ends this sequence and hands off to a standard appointment-reminder workflow for the booked call itself.
NoWaitWait — Fixed Duration (1 day)
Waits a full day before the follow-up, rather than nudging again within the same hour.
NoActionSend SMS nudge
Shorter and more direct than the original email, with the same booking link.
NoWaitWait — Contact Action (2-day timeout)
A second, longer window to catch the link click.
NoIf / ElseIf / Else — booked now?
The final check before the lead moves to manual follow-up.
NoActionAdd Tag "cold-lead" + Internal Notification
Notifies the consultant directly as a personal follow-up reminder — so a genuinely interested lead who just didn't click a link doesn't vanish silently.
Why it matters: The consultant's calendar fills without babysitting an inbox between client sessions. The sequence behaves like a virtual assistant that never forgets a lead — and it only asks for a personal follow-up once automation has genuinely run its course.
Any Small Business — Local Service, Clinic, or Retail
Job-Complete Review and Referral Routing
Happy customers rarely leave a review unless asked at the right moment, and a small team without a dedicated front-desk or ops person forgets to ask consistently — or asks everyone the same way, including the customer who wasn't actually happy, which is how a bad experience ends up as a public one-star review.
The Workflow
TriggerAppointment Status → Showed (or Order Submitted)
Fires once the job, visit, or order is actually complete — not at booking, and not before the work is done.
WaitWait — Fixed Duration (2 hours)
Lets the appointment or job genuinely finish before asking anything.
ActionSend SMS — two trigger links
"How did everything go today?" with two separate trigger links: "Great!" and "Not quite."
If / ElseIf / Else — which link did they click?
A Contact Action wait checks which of the two trigger links was clicked, and routes accordingly.
YesAction"Great!" → Send SMS with Google review link
Routes the happy customer straight to a public review link, then Add Tag "reviewer" and an Internal Notification logging the positive feedback for the owner.
NoAction"Not quite" → Internal Notification only
Sends an urgent Internal Notification straight to the owner with the contact's details — and deliberately never sends the public review link — then Add Tag "needs-follow-up" so it's handled as a private conversation, not a public one.
Why it matters: This is the routing judgment call a solo operator can't apply consistently by hand for every single customer, every single day — happy customers get funneled to public reviews automatically, and anyone less than happy gets a private, direct line back to the owner instead of a public complaint.
Frequently Asked Questions
No. Every trigger, wait type, and action used in these five examples — Missed Call, Appointment Status, Order Submitted, Form Submitted, Wait steps, If/Else branching, Send SMS/Email/WhatsApp, Add Tag, Assign to User, Internal Notification — is available on GoHighLevel's standard workflow builder, not gated behind an agency-tier plan. What does change by usage is the cost of SMS, calls, and email sending, which bills separately from the plan itself.
- Sources: GoHighLevel's official Workflow Action — Wait, Workflow Trigger — Appointment Status, Missed Call Text Back configuration, and Standard Triggers — Order Submitted. Trigger and action names reflect the GoHighLevel workflow builder as of 2026 and are worth re-verifying inside your own account before building, since the platform ships changes regularly.
Want One of These Built and Connected to Your Business?
Every workflow on this page is genuinely buildable yourself inside GoHighLevel's native builder — I'd rather you ship it than not. If you'd rather not spend the afternoons on trigger logic and branch testing, this is exactly what I build for small businesses through GoHighLevel automation: missed-call systems, no-show reduction, order follow-up, and lead-to-booking sequences, wired directly into your CRM and tested against real scenarios before they ever touch a real customer.
- 7+ years building GoHighLevel and CRM automation for small businesses
- 100,000+ leads delivered through systems built the same way this page describes
- One real estate automation system alone responsible for 50,000+ of those leads
Ready to Build One of These for Your Business?
Fastest way to start: message me directly on WhatsApp with what your business does and where leads are currently slipping through. Or send the details below and I'll get back to you.