A GoHighLevel SMS automation that books appointments is a workflow that fires automatically when a lead enters your system, sends a sequence of SMS messages over several days, branches based on whether they reply, and drops a booking link at the moment they're most likely to click it.
Done right, it turns a cold lead into a booked call without a human touching anything. Done wrong — which is most of the time — it sends one generic message, gets ignored, and the lead goes cold forever.
This guide covers exactly how to build the version that works.
What a GHL SMS Booking Automation Actually Is
A GHL SMS booking automation is a trigger-based workflow in GoHighLevel that sends a series of text messages to a lead, checks whether they've responded, and automatically routes them toward a booking link based on their behaviour.
It is not a blast campaign. It is not a single message. It is a multi-step sequence with conditional logic that behaves differently depending on what the contact does — replies, clicks, ignores, or books.
The workflow connects three things: your lead source (form, ad, inbound call), your SMS number (a GHL Twilio-backed number), and your calendar (GHL calendar or Calendly). When all three are connected and the logic is right, the system runs without human input.
Before You Build: What You Need
- An active GHL phone number — go to Settings → Phone Numbers. You need a dedicated local number, not a shared one. Cost is approximately $1.15/month.
- A2P 10DLC registration — if you plan to send more than 3,000 messages per day, this is legally required. GHL supports registration natively. Without it, carriers will filter your messages. (Read our full A2P 10DLC guide here.)
- A live calendar — either GHL's built-in calendar or a Calendly link. This is what the SMS points to.
- A working lead source — a form, a Facebook Lead Ad connected to GHL, or an inbound webhook. The workflow needs a trigger to start.
Important: Never send SMS to contacts who haven't opted in. In the US, this violates the TCPA. Always include opt-in language on your lead capture form and a simple "Reply STOP to unsubscribe" line in your first message.
How to Build It: Step by Step
Create a New Workflow
Go to Automation → Workflows → Create Workflow. Choose "Start from Scratch." Name it something clear — "SMS Booking Sequence — [Lead Source]." You may build several versions for different lead sources, so the name matters.
Set the Trigger
Click Add Trigger. The most common triggers for booking automations are: Form Submitted (for website forms), Facebook Lead Form Submitted (for Meta ads), or Tag Applied (for manual or CRM-based entry). Select whichever matches your lead source and configure the filter to target the correct form or tag.
Send the First SMS Immediately
Add a Send SMS action as the first step — no wait time. This message fires within seconds of the trigger. It should be short, warm, and include your booking link. Use merge fields to personalise with the contact's first name.
Hey {{contact.first_name}}! Thanks for your interest — I'm Mujaddad from Growmated. I'd love to jump on a quick call and show you exactly how we can help. Grab a time here: [booking link] — takes 2 mins 👍
Add a Wait Step + Check for Reply
After the first SMS, add a Wait step — set it to 24 hours. Then add an If/Else branch with the condition: Last Message Direction = Inbound. This checks whether the contact replied. If yes, move them to a "Replied" pipeline stage and remove from this workflow. If no, continue to the next follow-up.
Send Follow-Up SMS (Day 2)
On the "No Reply" branch, add a second SMS. Change the angle — don't repeat the same message. Try a different hook: address a common objection, share a quick result, or ask a simple question to prompt engagement.
Hey {{contact.first_name}}, just checking in. Most of our clients see results in the first 2 weeks — happy to show you what that looks like. Still interested? [booking link]
Repeat — Day 4 and Day 7
Add a 48-hour wait, another If/Else reply check, and a third SMS on Day 4. Then a final SMS on Day 7. After 4 messages with no reply, stop SMS and add the contact to a long-term email nurture instead. Never continue texting past 5 messages — it damages deliverability and looks desperate.
Stop the Sequence When They Book
Create a separate workflow triggered by Appointment Booked. Add a Remove from Workflow action that targets your SMS sequence. This ensures the follow-up messages stop the moment someone books — so you don't text a person who already has a call scheduled with you.
The highest-converting SMS sequences we've built ask a question in the second or third message — something as simple as "Is [problem] still something you're trying to solve?" A question gets a reply. A reply moves them into a conversation. A conversation books a call.
The Conditional Logic That Makes It Work
The difference between a GHL SMS sequence that books appointments and one that gets ignored is the If/Else branching. Every step after the first message should check: did they reply? Did they book? Did they click?
Without this logic, the workflow fires the same messages to everyone regardless of what they do — which means someone who already booked keeps getting follow-up texts, and someone who replied "not interested" gets another pitch. Both outcomes damage your reputation and your deliverability.
Set up your branches so that any inbound reply pulls the contact out of the automated sequence and flags them in your CRM for a human to follow up. This is where deals are actually closed — in the conversation, not the automation.
What to Do When They Reply
When a contact replies to your SMS, GHL captures the reply in the Conversations inbox. The workflow should tag the contact as "Replied" and move them to an active pipeline stage — something like "Engaged — Needs Follow Up."
From there, a human (you or your team) takes over and continues the conversation in GHL's two-way SMS inbox. Do not try to automate the reply handling with AI keywords unless you've properly tested it — a poorly trained auto-reply to a real conversation loses more deals than it wins.
Common Mistakes That Kill Bookings
Sending the booking link too early
Some businesses drop the booking link in the very first line of the first SMS. This feels transactional and cold. Warm the lead with one or two sentences first, then give them the link. The difference in click rate is significant.
Not stopping the sequence when someone books
Without a stop trigger, your automation will keep sending follow-ups to someone who already has a call booked with you. This is one of the most common GHL mistakes and it kills trust immediately.
Using a shared number
Shared numbers have terrible deliverability because they're used by dozens of other accounts. Always use a dedicated local number for automated sequences. The $1.15/month cost is irrelevant compared to the deliverability difference.
Skipping A2P 10DLC for high volume
For volumes above 3,000 messages per day, A2P registration is not optional — it's a carrier requirement. Unregistered high-volume SMS gets filtered or blocked entirely. This is especially critical for real estate, insurance, and any industry with high outreach volumes.
Frequently Asked Questions
How many SMS messages should I send before giving up on a lead?
3–5 messages over 7–10 days is the standard range. First message fires immediately, follow-ups at 24 hours, 72 hours, and Day 7. After that, move them to long-term email nurture rather than continuing SMS outreach.
Does GHL SMS automation work for high-volume outreach?
Yes, but for volumes above 3,000 messages per day you need A2P 10DLC registration with the carriers. Without it, messages get filtered or blocked. GHL supports A2P registration natively — it's a required compliance step.
Can I use GHL SMS automation without a dedicated phone number?
No. You need a GHL phone number (Twilio-backed) to send and receive SMS within workflows. Shared numbers are not suitable for automated sequences. A dedicated local number costs approximately $1.15/month inside GHL.
What is the difference between a GHL workflow and a GHL campaign?
A workflow is trigger-based and runs per contact in real time. A campaign is a batch SMS or email blast to a list. For appointment booking automations, always use workflows — they respond to individual lead behaviour, not a fixed schedule.
How do I stop the SMS sequence when someone books?
Create a separate workflow triggered by Appointment Booked, then use the Remove from Workflow action to pull the contact out of the active sequence. Without this, follow-up messages keep firing after someone has already booked — which looks unprofessional.
Not sure if GoHighLevel is the right platform for your business? Read our honest breakdown: Is GoHighLevel Worth It in 2026?
Want This Built For You?
Growmated builds GHL SMS automations for service businesses, agencies, and real estate teams. Full setup, tested and running — in 7–10 days.
Get Your Free Automation Audit →