GoHighLevel Blueprint

Med Spa Missed-Call Recovery Automation

Step-by-step guide to building the complete automation in GoHighLevel — from missed-call trigger to booked appointment.

Automation Overview

Full flow from missed call to booked appointment to no-show reminder

📞 Missed Call
💬 AI SMS (<60s)
⏳ Wait 5 min
🔍 Qualify Reply
📅 Booking Link
📧 Confirm
What you need in GoHighLevel before starting
Make sure these are set up in your GHL account before configuring the automation.
Requirement Where to find it Notes
SMS Pipeline / Inbox Conversations → Inbox Enable SMS channel. Add your Twilio number.
Contact Custom Fields Settings → Custom Fields Need: missed_call_time, qualification_score, booking_date
Calendar / Booking Link Scheduler → Booking Links Create a booking link for med spa appointments. e.g. book.luminaraesthetics.com
Triggers App Marketplace → Integrations Install "Call Rail" or "Aloware" for missed-call detection, or use GHL's built-in Call Tracking.
OpenAI Integration Settings → Integrations → OpenAI Connect your OpenAI key to enable AI-generated SMS responses.
1

Step 1 — Configure the Missed-Call Trigger

Set up the event that fires the automation every time a call goes unanswered

1
Create a New Automation in GoHighLevel
Go to Marketing → Automations → Create Automation. Name it "Med Spa Missed-Call Recovery".
Automation Settings Name: Med Spa Missed-Call Recovery Trigger Type: Webhook (from call tracking platform) // OR use GHL's built-in call tracking trigger Trigger: Missed Call → Contact Source = "Missed Call"
⚠️
If using a third-party call tracking app (CallRail, CallHippo), set up a Webhook Trigger in GHL. Point it to the call tracking app's missed-call webhook URL. GHL receives the event with the caller's phone number as a contact property.
2
Set Trigger Conditions
Configure what counts as a "missed" call and which location handles it.
SettingValueWhy
Call Duration <30 secondsShort calls = unanswered inquiries
DispositionMissed / No AnswerFilter out voicemails
LocationLuminara AestheticsMatch your specific spa location
Time of DayAny24/7 coverage — after-hours too
💡
After-hours calls are gold — people calling after 8pm are often ready to book. Don't filter these out!
2

Step 2 — AI SMS Within 60 Seconds

Send a personalized, warm SMS immediately after the missed call fires the trigger

3
Add Send SMS Action (Immediately)
After the trigger fires, add an SMS action. Use AI Personalization to dynamically insert the contact's name and missed-call time.
SMS Template — Initial Outreach To: {{contact.phone}} Message: Hi {{contact.first_name}}! We missed your call at {{custom.missed_call_time}}. Did you want to book an appointment? Reply YES to connect with our team. // Personalization tokens: // {{contact.first_name}} — contact's first name // {{custom.missed_call_time}} — time the call was missed // {{location.name}} — your spa's business name // {{custom.calendar_link}} — pre-saved booking URL
SettingValue
SendImmediately — 0 second delay
From Number+1 (555) 000-1234 — your GHL number
SMS TypeBusiness (not marketing — lower deliverability risk)
Track ReplyEnable — wait for inbound
4
Set Up OpenAI Integration for Smart Responses
Optionally route inbound replies through OpenAI to score intent and generate intelligent follow-ups.
OpenAI Action — Analyze Reply Prompt: The contact replied: "{{Inbound SMS Content}}" Is this person interested in booking a med spa appointment? Score 1-100. Reply with just the score and one word: YES if interested, NO if not. // Store score in custom field {{custom.qualification_score}}
💡
Interest keywords to look for: "yes", "book", "appointment", "interested", "sure", "schedule", "available", "price", "cost", "when". Negative signals: "later", "not now", "wrong number", "stop", "unsubscribe".
3

Step 3 — Lead Qualification via Text

Score the inbound reply and route to the right follow-up path

5
Add Wait Step (5 Minutes)
Give the lead time to see and respond to your initial SMS.
Wait Step Settings Duration: 5 minutes Option: Wait for specific keyword instead of time // If you'd rather wait for their reply: Wait for Reply: Yes (don't auto-advance until they respond) Timeout: 2 hours (then proceed to next step anyway)
6
Add Split Based on Qualification Score
Create two branches: interested leads (score ≥ 50) and not-ready leads (score < 50).
Condition Split IF {{custom.qualification_score}} >= 50 → Branch A: "Send Booking Link" ELSE IF {{custom.qualification_score}} < 50 Branch B: "Soft Nudge" ELSE Branch C: "No Response — Wait 24h"
Contact Update — Mark Qualified Update Contact Field: status = "Qualified" pipeline_stage = "Hot Lead" last_contact = NOW()
4

Step 4 — Send Booking Link on Qualified Reply

Two paths: one for interested leads, one for not-yet-ready leads

7
Branch A: Send Booking Link (Score ≥ 50)
Warm, direct, action-oriented SMS with a clear booking link.
SMS Template — Hot Lead Great! You can book online right here: {{custom.calendar_link}} Pick a time that works for you — we're open Mon-Sat 9am-7pm. // OR with AI generated: Hi {{contact.first_name}}! Since you're interested in {{custom.service_interest}}, here's our direct booking link: {{custom.calendar_link}}
8
Branch B: Soft Nudge (Score < 50)
Low-pressure follow-up — no sales pressure, just leave the door open.
SMS Template — Soft Nudge No pressure at all! If you change your mind, here's our booking link: {{custom.calendar_link}} We'd love to help you feel your best. 😊
⚠️
Keep it short. SMS has a 160-character soft limit before segmentation. Keep messages under 160 characters for best deliverability. Use a URL shortener (Bitly) if your booking link is long.
9
Confirmation SMS — After Booking Click
When the lead clicks the booking link and books, GHL's booking integration fires a "Appointment Booked" event. Use that to trigger a confirmation SMS.
Trigger: Appointment Booked Automation: "Appointment Confirmation SMS" Trigger: Appointment Created SMS: ✅ You're confirmed! Appointment: {{appointment.date}} at {{appointment.time}}. We'll send a reminder 24 hours before. Questions? Reply here.
5

Step 5 — No-Show Reminder Sequence

Automated 24-hour reminder for leads who don't show up to their appointment

10
Create No-Show Detection Trigger
Use the "Appointment Status Changed" trigger with status = "No Show".
Trigger: No-Show Detection Automation: "No-Show Reminder" Trigger: Appointment Status = "No Show" // Alternative: schedule a "check" task 24h before appointment // If appointment status is still "Scheduled" → send reminder // If appointment status is "Completed" → skip
11
No-Show Reminder SMS
Warm, non-judgmental reminder to reschedule.
SMS Template — No-Show Reminder Hi {{contact.first_name}} — just a heads up, your appointment slot has passed. No worries if things came up! Reschedule here whenever you're ready: {{custom.calendar_link}} We're always happy to find a time that works. 😊
💡
After the no-show reminder, set a task for your front desk to follow up manually within 48 hours. 35% of no-shows will rebook if followed up with a phone call.
6

Step 6 — Monthly Stats Summary

Automatically send yourself a performance digest so you know what's working

12
Set Up Scheduled Report (Monthly)
Use GHL's reporting or an external tool (Zapier + Google Sheets) to pull these metrics. Send via email or Slack.
MetricWhere to pull it in GHL
Total missed callsConversations → Missed Calls Report
SMS sent / reply rateConversations → SMS Analytics
Qualified leadsPipeline → Hot Lead stage
Bookings from automationPipeline → Booked stage (source = "automation")
No-show rateAppointments → No-Show Report
Booking conversion rateMissed calls → Booked / Total missed calls
13
Monthly Digest Email Template
Set this up in your email tool (GHL Email, Mailchimp, or Zapier email).
Monthly Stats Digest — Email Template Subject: Luminara Aesthetics — Monthly Missed-Call Recovery Report Here's how your missed-call automation performed this month: 📞 Missed Calls: {{missed_calls}} 💬 SMS Sent: {{sms_sent}} ({{reply_rate}% reply rate) 🎯 Qualified Leads: {{qualified_leads}} 📅 Bookings: {{bookings_from_automation}} 📊 Booking Conversion: {{booking_rate}}% ⏰ No-Shows: {{no_shows}} Top-performing service: {{top_service}} Best time to reach leads: {{best_time}} Want to optimize further? Reply to this email and we'll help.
💡
Automate the monthly digest with a Zap: GHL Report → Google Sheets → Gmail. Or use GHL's built-in Workflow with an Email action, scheduled on the 1st of each month.

Full Automation Timeline

Every step, in order, with timing

# Step Action Timing Type Branch
1 Missed call detected Automation triggered via webhook / call tracking T+0 API Trigger Both
2 Outbound SMS sent Personalized greeting with lead's name + missed time T+0-60s SMS Both
3 Wait for reply Hold until inbound SMS received or 2h timeout 0–2h Wait Both
4 Qualify via AI Score reply 1–100 based on interest keywords T + reply API/OpenAI Both
5A Booking link sent Direct booking URL for interested leads T + score SMS Score ≥ 50
5B Soft nudge sent Low-pressure booking link for not-yet-ready leads T + score SMS Score < 50
6A Appointment confirmed Confirmation SMS + calendar invite On booking click Email Booked
6B No-show reminder Reschedule prompt for missed appointments 24h after no-show SMS No-show
7 Monthly digest Owner stats summary: calls, SMS rate, bookings, conversion 1st of month Email Summary

By the Numbers

60s
Max response time
6
Automation steps
3
SMS templates
23%
Expected booking rate
0
Manual work after setup

Want this built for your med spa?

AutoReach can build and manage this automation for you. Book a free demo call and we'll have it live in your GHL account within 48 hours.

Book Your Free Demo →