{"slug":"ghl-booking-reminder-workflow","title":"GHL Booking Confirmation & Reminder Workflow (SMS + Email)","tags":["ghl","workflows","sms","booking","no-show-prevention"],"agent_summary":"A complete GoHighLevel workflow for appointment booking confirmations and reminders via SMS and email to reduce no-shows, including timing sequence and copy examples.","trigger_phrases":["booking reminder workflow ghl","reduce no shows go high level","appointment confirmation sms sequence","ghl booking flow automation","appointment reminder text messages","how to prevent no shows with automation"],"runnable":true,"markdown":"## GHL Booking Confirmation & Reminder Workflow\n\n### Trigger\n- Appointment Status: Confirmed\n- Calendar: Discovery Call calendar\n\n### SMS + Email Sequence\n\n**Immediately after booking:**\n- **SMS 1:** \"Booked! Your Google Meet with [Scott] is all set for [appointment date/time]. This reflects your time zone. [Google Meet Link]\"\n- **Email 1:** Booking confirmation with appointment details, Google Meet link, and reply-yes CTA\n\n**2 minutes after booking:**\n- **SMS 2:** \"Hey [first name], Scott here again. Just double checking you've got the Google Meet on your calendar so nothing slips through the cracks.\"\n\n**24 hours before appointment:**\n- **SMS 3:** \"Hey [first name], we have a call tomorrow. See you then.\"\n- **Email 2:** Reminder with meeting link\n\n**1 hour before appointment:**\n- **SMS 4:** \"See you on the meet in an hour. Just sent the link to your email in case you can't find it.\"\n- **Email 3:** 1-hour reminder with link\n\n**5 minutes before appointment:**\n- **SMS 5:** \"I'll send it over in 5 minutes as well in case you want to join on your phone. Here it is as well: [link]\"\n\n**At appointment time:**\n- **SMS 6:** \"Talk to you in 10 if possible. Joining on laptop/computer is better. Here's a link to join on your phone if you need to: [link]\"\n- **SMS 7:** \"I'm on the meet whenever you're ready. Here's a link if you want to join on phone too: [link]\"\n\n### Key Configuration Notes\n- Use `{{appointment.startTime}}` for dynamic time display\n- Use `{{contact.first_name}}` for personalization\n- From name should match the person taking the call (e.g., Scott)\n- Set up SMTP with Gmail app passwords (not GHL native) for email sending\n- **CRITICAL:** Add wait nodes back before publishing — removing them for testing caused a real prospect to get ALL messages instantly (\"nuked\")\n- Use custom values for the Google Meet link and rebooking calendar link\n- Gate SMS sends within business hours (8am-5pm)\n\n### Email Configuration\n- From Email: Use shared email (e.g., hello@ironautomations.com) with aliases\n- Gmail SMTP with app passwords\n- Variables: `{{appointment.user.first_name}}`, `{{appointment.user.email}}`\n\n### Testing Protocol\n1. Create test contact\n2. Book appointment on calendar\n3. Verify SMS and email delivery\n4. Check custom values resolve correctly\n5. **Always coordinate with team** — if someone books a real lead while you're testing without wait nodes, they get blasted\n","html":"<h2>GHL Booking Confirmation &#x26; Reminder Workflow</h2>\n<h3>Trigger</h3>\n<ul>\n<li>Appointment Status: Confirmed</li>\n<li>Calendar: Discovery Call calendar</li>\n</ul>\n<h3>SMS + Email Sequence</h3>\n<p><strong>Immediately after booking:</strong></p>\n<ul>\n<li><strong>SMS 1:</strong> \"Booked! Your Google Meet with [Scott] is all set for [appointment date/time]. This reflects your time zone. [Google Meet Link]\"</li>\n<li><strong>Email 1:</strong> Booking confirmation with appointment details, Google Meet link, and reply-yes CTA</li>\n</ul>\n<p><strong>2 minutes after booking:</strong></p>\n<ul>\n<li><strong>SMS 2:</strong> \"Hey [first name], Scott here again. Just double checking you've got the Google Meet on your calendar so nothing slips through the cracks.\"</li>\n</ul>\n<p><strong>24 hours before appointment:</strong></p>\n<ul>\n<li><strong>SMS 3:</strong> \"Hey [first name], we have a call tomorrow. See you then.\"</li>\n<li><strong>Email 2:</strong> Reminder with meeting link</li>\n</ul>\n<p><strong>1 hour before appointment:</strong></p>\n<ul>\n<li><strong>SMS 4:</strong> \"See you on the meet in an hour. Just sent the link to your email in case you can't find it.\"</li>\n<li><strong>Email 3:</strong> 1-hour reminder with link</li>\n</ul>\n<p><strong>5 minutes before appointment:</strong></p>\n<ul>\n<li><strong>SMS 5:</strong> \"I'll send it over in 5 minutes as well in case you want to join on your phone. Here it is as well: [link]\"</li>\n</ul>\n<p><strong>At appointment time:</strong></p>\n<ul>\n<li><strong>SMS 6:</strong> \"Talk to you in 10 if possible. Joining on laptop/computer is better. Here's a link to join on your phone if you need to: [link]\"</li>\n<li><strong>SMS 7:</strong> \"I'm on the meet whenever you're ready. Here's a link if you want to join on phone too: [link]\"</li>\n</ul>\n<h3>Key Configuration Notes</h3>\n<ul>\n<li>Use <code>{{appointment.startTime}}</code> for dynamic time display</li>\n<li>Use <code>{{contact.first_name}}</code> for personalization</li>\n<li>From name should match the person taking the call (e.g., Scott)</li>\n<li>Set up SMTP with Gmail app passwords (not GHL native) for email sending</li>\n<li><strong>CRITICAL:</strong> Add wait nodes back before publishing — removing them for testing caused a real prospect to get ALL messages instantly (\"nuked\")</li>\n<li>Use custom values for the Google Meet link and rebooking calendar link</li>\n<li>Gate SMS sends within business hours (8am-5pm)</li>\n</ul>\n<h3>Email Configuration</h3>\n<ul>\n<li>From Email: Use shared email (e.g., hello@ironautomations.com) with aliases</li>\n<li>Gmail SMTP with app passwords</li>\n<li>Variables: <code>{{appointment.user.first_name}}</code>, <code>{{appointment.user.email}}</code></li>\n</ul>\n<h3>Testing Protocol</h3>\n<ol>\n<li>Create test contact</li>\n<li>Book appointment on calendar</li>\n<li>Verify SMS and email delivery</li>\n<li>Check custom values resolve correctly</li>\n<li><strong>Always coordinate with team</strong> — if someone books a real lead while you're testing without wait nodes, they get blasted</li>\n</ol>\n"}