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