No-Show Recovery SMS Workflow — GHL Automation
Last updated: 2026-05-12
This workflow fires automatically when a prospect misses a booked appointment. It runs a 4-touch SMS recovery sequence without manual setter intervention.
Trigger Conditions
In GHL, this workflow triggers on:
- Appointment Status = No Show
- Calendar: [your setter/closer calendar name]
- Trigger fires immediately when appointment window passes with no "Showed" status set
If you mark no-shows manually, the trigger can also be an internal tag: no-show-[calendar].
Workflow Structure
TRIGGER: Appointment No-Show
│
├── Action: Add Tag → "no-show-active"
├── Action: Remove Tag → "booked" (if applicable)
│
├── SMS #1 — Immediate (0 min delay)
│ "Hey [First Name] — [Agent Name] here. We had [Appointment Time] blocked today.
│ No worries. Want to reschedule? Here's a quick link: [Calendar Link]"
│
├── Wait: 2 hours
│
├── Condition: Did they reply or book? (check contact activity)
│ ├── YES → End workflow, add tag "no-show-recovered"
│ └── NO → Continue
│
├── SMS #2 — 2 Hours
│ "Just checking in, [First Name]. I've still got [tomorrow] and [day after] open
│ if you want to lock in a new time: [Calendar Link]"
│
├── Wait: 22 hours (next morning)
│
├── Condition: Did they reply or book?
│ ├── YES → End workflow, add tag "no-show-recovered"
│ └── NO → Continue
│
├── SMS #3 — Day 2 (morning)
│ "Hey [First Name] — last nudge from me. I know things get busy.
│ If timing's off, just let me know and we'll find something that works: [Calendar Link]"
│
├── Wait: 24 hours
│
├── Condition: Did they reply or book?
│ ├── YES → End workflow, add tag "no-show-recovered"
│ └── NO → Continue
│
├── SMS #4 — Day 3 (final)
│ "All good, [First Name] — I'll leave the door open.
│ If you ever want to pick back up, you know where to find me.
│ Here's my calendar if the timing works out: [Calendar Link]"
│
├── Wait: 1 hour
│
├── Action: Remove Tag → "no-show-active"
├── Action: Add Tag → "no-show-dead"
└── Action: Add to Opportunity Stage → "30-day Drip"
SMS Message Guidelines
- No guilt language. Do not say "you missed" or "you stood me up." Remove all friction.
- Always include the calendar link. Every message gives them a way to rebook with one click.
- Keep messages under 160 characters where possible to avoid MMS splitting.
- Use first name personalization on every message. Generic messages get ignored.
- Never use emojis unless the niche and brand explicitly call for them.
Conditional Branches
If prospect replies (any message)
All inbound replies should pause the workflow and create a task for the setter to respond manually. Do not continue the automated sequence while a live conversation is happening.
GHL Action: Contact Reply → Pause Workflow → Create Task "No-Show Reply — Needs Setter"
If prospect books (any message)
When a new appointment is created for this contact:
- Remove tag
no-show-active - Add tag
no-show-recovered - End workflow immediately
- Trigger the appointment confirmation workflow
CRM Stage Mapping
| Stage | Tag | Action |
|---|---|---|
| Workflow active | no-show-active | Setter monitors, does not manually contact |
| Lead replied mid-sequence | no-show-replied | Setter takes over manually |
| Lead rebooked | no-show-recovered | Moved back to Booked stage |
| Sequence completed, no response | no-show-dead | Moved to 30-day drip |
Performance Benchmarks
- SMS #1 open rate: 90%+ (near-universal for SMS)
- Recovery rate (sequence 1–4): Target 15–25% of no-shows rebook
- Best recovery SMS: SMS #2 (morning after) has the highest rebook rate
- No-shows that never recover: Move to 30-day drip, not the trash
If recovery rate drops below 10%, review your show-rate optimization processes — the problem may be upstream in your confirmation sequence, not the recovery.
Integration Notes
- Calendar link must be a direct booking link with the specific calendar and time zone pre-filled where possible
- Ensure the contact's phone number is confirmed before appointment is booked — wrong numbers are the most common cause of no-shows that look like ghosts
- If running demo site reactivation in parallel, suppress SMS #2–4 if demo site was already sent manually by setter (avoid conflicting messages)
Related Topics
- [[no-show-rebooking-with-demo-site]]
- [[appointment-show-rate-optimization]]
- [[close-won-onboarding-workflow]]
- [[ai-setter-instant-form-delayed-humanized-message]]