@elitedcs/ghl-mcp 3.97.0 → 3.97.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,7 +3,7 @@
3
3
  "presetVersion": "1.0.0",
4
4
  "schemaVersion": "0.1",
5
5
  "title": "Wellness Clinic",
6
- "description": "A trial-to-program system for red light, body contouring, IV, peptide, longevity and recovery clinics, built from live wellness trial accounts (read 2026-09-29). Patient Journey pipeline (10 stages), a 90-minute trial calendar with 24 hours' notice and a deposit, an A2P-ready trial form with two separate consent boxes, and 19 workflows: Speed to Lead (booking link in seconds, 4 and 24 hour nudges), Missed Call Text-Back, Lead Nurture (31 days), Win-back (31 days, led by the best-performing real first text), exact-match N / STOP / TEAM / BOOK reply routing, trial booking, reminders, balance, cancel and no-show rescue, the 72-hour program follow-up, program confirmation and a review request. Real copy wherever a live account had it; everything else marked proposed. No health or weight claims, no named testimonials, no text-to-pay for programs.",
6
+ "description": "A trial-to-program system for red light, body contouring, IV, peptide, longevity and recovery clinics, built from live wellness trial accounts (read 2026-09-29). Patient Journey pipeline (10 stages), a trial calendar as long as the intake's visit length with 24 hours' notice and a deposit, an A2P-ready trial form with two separate consent boxes, and 19 workflows: Speed to Lead (booking link in seconds, 4 and 24 hour nudges), Missed Call Text-Back, Lead Nurture (31 days), Win-back (31 days, led by the best-performing real first text), exact-match N / STOP / TEAM / BOOK reply routing, trial booking, reminders, balance, cancel and no-show rescue, the 72-hour program follow-up, program confirmation and a review request. Real copy wherever a live account had it; everything else marked proposed. No health or weight claims, no named testimonials, no text-to-pay for programs.",
7
7
  "default": false,
8
8
  "selectors": {
9
9
  "businessTypes": [
@@ -597,8 +597,8 @@
597
597
  "conditionalOn": "goal.bookingNeeded == true",
598
598
  "name": "{{business.name}} Trial Session || Trial Session",
599
599
  "calendarType": "round_robin",
600
- "_slotDuration": "Carry the appointment length from the brief (brief.calendars[].durationMinutes, or the words in the calendar answer) onto slotDuration. Next comes the intake's visit length (offer.visitMinutes); the live trial calendar's 90 minutes applies ONLY when neither gives a length.",
601
- "slotDuration": "{{offer.visitMinutes}} || 90",
600
+ "_slotDuration": "Carry the appointment length from the brief (brief.calendars[].durationMinutes, or the words in the calendar answer) onto slotDuration. Next comes the intake's visit length (offer.visitMinutes). With neither, no length is invented: the calendar is left without one and the plan carries a job to set it (handoff.calendar_visit_length), which holds the automations on that calendar until it is ticked.",
601
+ "slotDuration": "{{offer.visitMinutes}} || ",
602
602
  "slotDurationUnit": "mins",
603
603
  "slotBuffer": 0,
604
604
  "appointmentPerSlot": 1,
@@ -606,8 +606,8 @@
606
606
  "allowBookingAfter": 24,
607
607
  "allowBookingAfterUnit": "hours",
608
608
  "_bookingNotice": "24 hours' minimum notice: the live trial calendar's prep window (hydration, no alcohol). Daily cap from the intake (offer.dailyCap); omitted when not given.",
609
- "description": "Every client is screened at the visit. Not recommended for anyone with: {{offer.contraindications || the conditions on our screening list}}. If you're not sure it suits you, check with your doctor first. Booking means you'll fill in our intake form and waiver when you arrive.",
610
- "_descriptionSource": "PATTERN: a live trial calendar shows its screening list and waiver note on the booking page; the clinic's own list comes from the intake and must match the form and anything a bot says (handoff.contraindications).",
609
+ "description": "Not recommended for anyone with: {{offer.contraindications}}. If you're not sure it suits you, check with your doctor first. || If you're not sure it suits you, check with your doctor first.",
610
+ "_descriptionSource": "PATTERN: a live trial calendar shows its screening list on the booking page; the clinic's own list comes from the intake and must match the form and anything a bot says (handoff.contraindications). With no list, only the check-with-your-doctor line is shown. No screening-at-the-visit, intake-form or waiver claim: no intake answer gives them.",
611
611
  "teamMemberRefs": [
612
612
  "user.owner"
613
613
  ],
@@ -727,7 +727,7 @@
727
727
  "conditionalOn": "offer.depositAmount is set",
728
728
  "_source": "[NO REAL SOURCE: proposed] The live accounts send no email. Med-spa instant-email structure, trial facts from the live booking texts.",
729
729
  "subject": "Your {{custom_values.trial_name}} link, {{contact.first_name}}",
730
- "html": "<div style=\"font-family:Arial,Helvetica,sans-serif;font-size:16px;line-height:1.5;color:#1f2937;max-width:600px;\"><p style=\"margin:0 0 14px;\">Hi {{contact.first_name}},</p><p style=\"margin:0 0 14px;\">Thanks for reaching out to {{custom_values.business_name}}. I'm {{custom_values.owner_first_name}}, and I read every one of these myself.</p><p style=\"margin:0 0 14px;\">Here's how the {{custom_values.trial_name}} works: you pick a time, a ${{custom_values.deposit_amount}} deposit holds it, and the deposit comes off your ${{custom_values.trial_price}} visit. Every visit starts with a consult, and we answer all of your questions before anything begins.</p><p style=\"margin:0 0 14px;\"><a href=\"{{custom_values.booking_link}}\" style=\"display:inline-block;background:#1a56db;color:#ffffff;padding:12px 20px;border-radius:6px;text-decoration:none;font-weight:600;\">Pick my time</a></p><p style=\"margin:0 0 14px;\">If you'd rather ask something first, reply to this email. A real person answers.</p><p style=\"margin:0;\">{{custom_values.owner_first_name}}<br>{{custom_values.business_name}} · {{custom_values.business_phone}}</p></div>"
730
+ "html": "<div style=\"font-family:Arial,Helvetica,sans-serif;font-size:16px;line-height:1.5;color:#1f2937;max-width:600px;\"><p style=\"margin:0 0 14px;\">Hi {{contact.first_name}},</p><p style=\"margin:0 0 14px;\">Thanks for reaching out to {{custom_values.business_name}}. I'm {{custom_values.owner_first_name}}.</p><p style=\"margin:0 0 14px;\">Here's how the {{custom_values.trial_name}} works: you pick a time, a ${{custom_values.deposit_amount}} deposit holds it, and the deposit comes off your ${{custom_values.trial_price}} visit.</p><p style=\"margin:0 0 14px;\"><a href=\"{{custom_values.booking_link}}\" style=\"display:inline-block;background:#1a56db;color:#ffffff;padding:12px 20px;border-radius:6px;text-decoration:none;font-weight:600;\">Pick my time</a></p><p style=\"margin:0 0 14px;\">If you'd rather ask something first, reply to this email. A real person answers.</p><p style=\"margin:0;\">{{custom_values.owner_first_name}}<br>{{custom_values.business_name}} · {{custom_values.business_phone}}</p></div>"
731
731
  },
732
732
  {
733
733
  "ref": "email_template.stl_email_1b",
@@ -735,14 +735,14 @@
735
735
  "conditionalOn": "offer.depositAmount is not set && offer.trialFree != true",
736
736
  "_source": "[NO REAL SOURCE: proposed] As stl_email_1, for a clinic that takes no deposit.",
737
737
  "subject": "Your {{custom_values.trial_name}} link, {{contact.first_name}}",
738
- "html": "<div style=\"font-family:Arial,Helvetica,sans-serif;font-size:16px;line-height:1.5;color:#1f2937;max-width:600px;\"><p style=\"margin:0 0 14px;\">Hi {{contact.first_name}},</p><p style=\"margin:0 0 14px;\">Thanks for reaching out to {{custom_values.business_name}}. I'm {{custom_values.owner_first_name}}, and I read every one of these myself.</p><p style=\"margin:0 0 14px;\">Here's how the {{custom_values.trial_name}} works: you pick a time, and you pay the ${{custom_values.trial_price}} at your visit. Every visit starts with a consult, and we answer all of your questions before anything begins.</p><p style=\"margin:0 0 14px;\"><a href=\"{{custom_values.booking_link}}\" style=\"display:inline-block;background:#1a56db;color:#ffffff;padding:12px 20px;border-radius:6px;text-decoration:none;font-weight:600;\">Pick my time</a></p><p style=\"margin:0 0 14px;\">If you'd rather ask something first, reply to this email. A real person answers.</p><p style=\"margin:0;\">{{custom_values.owner_first_name}}<br>{{custom_values.business_name}} · {{custom_values.business_phone}}</p></div>"
738
+ "html": "<div style=\"font-family:Arial,Helvetica,sans-serif;font-size:16px;line-height:1.5;color:#1f2937;max-width:600px;\"><p style=\"margin:0 0 14px;\">Hi {{contact.first_name}},</p><p style=\"margin:0 0 14px;\">Thanks for reaching out to {{custom_values.business_name}}. I'm {{custom_values.owner_first_name}}.</p><p style=\"margin:0 0 14px;\">Here's how the {{custom_values.trial_name}} works: you pick a time, and you pay the ${{custom_values.trial_price}} at your visit.</p><p style=\"margin:0 0 14px;\"><a href=\"{{custom_values.booking_link}}\" style=\"display:inline-block;background:#1a56db;color:#ffffff;padding:12px 20px;border-radius:6px;text-decoration:none;font-weight:600;\">Pick my time</a></p><p style=\"margin:0 0 14px;\">If you'd rather ask something first, reply to this email. A real person answers.</p><p style=\"margin:0;\">{{custom_values.owner_first_name}}<br>{{custom_values.business_name}} · {{custom_values.business_phone}}</p></div>"
739
739
  },
740
740
  {
741
741
  "ref": "email_template.n_email_1",
742
742
  "name": "Nurture Email 1 - What Happens At Your Visit",
743
- "_source": "[NO REAL SOURCE: proposed] Visit facts (arrive 10 minutes early, intake form, consult first, 90 minutes) come from the live confirmation text and the live offer page.",
743
+ "_source": "[NO REAL SOURCE: proposed] The visit length is the intake's own answer (offer.visitMinutes). With no answer the length is not said: the second version (after ||) invites a question instead. Nothing about arriving early, an intake form or a consult is said, because no intake answer gives it.",
744
744
  "subject": "What happens at your first visit",
745
- "html": "<div style=\"font-family:Arial,Helvetica,sans-serif;font-size:16px;line-height:1.5;color:#1f2937;max-width:600px;\"><p style=\"margin:0 0 14px;\">Hi {{contact.first_name}},</p><p style=\"margin:0 0 14px;\">People put off a first visit because they don't know what's inside the door. So here it is:</p><ul style=\"margin:0 0 14px 20px;padding:0;\"><li style=\"margin:0 0 6px;\">You arrive about 10 minutes early and fill in a short intake form.</li><li style=\"margin:0 0 6px;\">We start with a consult: what you want, what you've tried, and whether the {{custom_values.trial_name}} is right for you.</li><li style=\"margin:0 0 6px;\">Then your session, with time at the end for questions.</li><li style=\"margin:0 0 6px;\">Plan for about {{offer.visitMinutes || 90}} minutes in total.</li></ul><p style=\"margin:0 0 14px;\">There's no pressure to buy anything at the visit. If a program makes sense for you, we'll explain the options and you can take them home.</p><p style=\"margin:0 0 14px;\"><a href=\"{{custom_values.booking_link}}\" style=\"display:inline-block;background:#1a56db;color:#ffffff;padding:12px 20px;border-radius:6px;text-decoration:none;font-weight:600;\">Book my visit</a></p><p style=\"margin:0;\">{{custom_values.owner_first_name}}<br>{{custom_values.business_name}} · {{custom_values.business_phone}}</p></div>"
745
+ "html": "<div style=\"font-family:Arial,Helvetica,sans-serif;font-size:16px;line-height:1.5;color:#1f2937;max-width:600px;\"><p style=\"margin:0 0 14px;\">Hi {{contact.first_name}},</p><p style=\"margin:0 0 14px;\">People put off a first visit because they don't know what to expect. So here is the main thing: allow about {{offer.visitMinutes}} minutes in total, and bring any questions you have.</p><p style=\"margin:0 0 14px;\">There's no pressure to buy anything at the visit. If a program makes sense for you, we'll explain the options and you can take them home.</p><p style=\"margin:0 0 14px;\"><a href=\"{{custom_values.booking_link}}\" style=\"display:inline-block;background:#1a56db;color:#ffffff;padding:12px 20px;border-radius:6px;text-decoration:none;font-weight:600;\">Book my visit</a></p><p style=\"margin:0;\">{{custom_values.owner_first_name}}<br>{{custom_values.business_name}} · {{custom_values.business_phone}}</p></div> || <div style=\"font-family:Arial,Helvetica,sans-serif;font-size:16px;line-height:1.5;color:#1f2937;max-width:600px;\"><p style=\"margin:0 0 14px;\">Hi {{contact.first_name}},</p><p style=\"margin:0 0 14px;\">People put off a first visit because they don't know what to expect. The simplest fix is to ask: reply to this email with any question about the visit, and we'll answer it.</p><p style=\"margin:0 0 14px;\">There's no pressure to buy anything at the visit. If a program makes sense for you, we'll explain the options and you can take them home.</p><p style=\"margin:0 0 14px;\"><a href=\"{{custom_values.booking_link}}\" style=\"display:inline-block;background:#1a56db;color:#ffffff;padding:12px 20px;border-radius:6px;text-decoration:none;font-weight:600;\">Book my visit</a></p><p style=\"margin:0;\">{{custom_values.owner_first_name}}<br>{{custom_values.business_name}} · {{custom_values.business_phone}}</p></div>"
746
746
  },
747
747
  {
748
748
  "ref": "email_template.n_email_2",
@@ -763,9 +763,9 @@
763
763
  {
764
764
  "ref": "email_template.n_email_3",
765
765
  "name": "Nurture Email 3 - Is It Right For You",
766
- "_source": "[NO REAL SOURCE: proposed] Screening and results-vary wording follow the pattern of a live calendar's screening note and the claims rule.",
766
+ "_source": "[NO REAL SOURCE: proposed] The screening list is the clinic's own intake answer (offer.contraindications); with no answer, the second version (after ||) gives plain check-with-your-physician advice. Results-vary wording follows the claims rule.",
767
767
  "subject": "Is it right for you?",
768
- "html": "<div style=\"font-family:Arial,Helvetica,sans-serif;font-size:16px;line-height:1.5;color:#1f2937;max-width:600px;\"><p style=\"margin:0 0 14px;\">Hi {{contact.first_name}},</p><p style=\"margin:0 0 14px;\">A fair question before any first visit: is this right for me?</p><p style=\"margin:0 0 14px;\">That's exactly what the consult at the start of your {{custom_values.trial_name}} is for. We go through a short screening list with every client, and if anything on it applies to you, we'll tell you honestly and suggest you check with your physician first.</p><p style=\"margin:0 0 14px;\">Results vary from person to person, and we'll never promise you a number.</p><p style=\"margin:0 0 14px;\"><a href=\"{{custom_values.booking_link}}\" style=\"display:inline-block;background:#1a56db;color:#ffffff;padding:12px 20px;border-radius:6px;text-decoration:none;font-weight:600;\">Book my consult and visit</a></p><p style=\"margin:0 0 14px;\">Questions first? Reply to this email and I'll answer personally.</p><p style=\"margin:0;\">{{custom_values.owner_first_name}}<br>{{custom_values.business_name}} · {{custom_values.business_phone}}</p></div>"
768
+ "html": "<div style=\"font-family:Arial,Helvetica,sans-serif;font-size:16px;line-height:1.5;color:#1f2937;max-width:600px;\"><p style=\"margin:0 0 14px;\">Hi {{contact.first_name}},</p><p style=\"margin:0 0 14px;\">A fair question before any first visit: is this right for me?</p><p style=\"margin:0 0 14px;\">The {{custom_values.trial_name}} is not recommended for anyone with: {{offer.contraindications}}. If anything on that list applies to you, or you're not sure, check with your physician before you book.</p><p style=\"margin:0 0 14px;\">Results vary from person to person, and we'll never promise you a number.</p><p style=\"margin:0 0 14px;\"><a href=\"{{custom_values.booking_link}}\" style=\"display:inline-block;background:#1a56db;color:#ffffff;padding:12px 20px;border-radius:6px;text-decoration:none;font-weight:600;\">Book my visit</a></p><p style=\"margin:0 0 14px;\">Questions first? Reply to this email and I'll answer.</p><p style=\"margin:0;\">{{custom_values.owner_first_name}}<br>{{custom_values.business_name}} · {{custom_values.business_phone}}</p></div> || <div style=\"font-family:Arial,Helvetica,sans-serif;font-size:16px;line-height:1.5;color:#1f2937;max-width:600px;\"><p style=\"margin:0 0 14px;\">Hi {{contact.first_name}},</p><p style=\"margin:0 0 14px;\">A fair question before any first visit: is this right for me?</p><p style=\"margin:0 0 14px;\">If you're not sure it suits you, check with your physician before you book.</p><p style=\"margin:0 0 14px;\">Results vary from person to person, and we'll never promise you a number.</p><p style=\"margin:0 0 14px;\"><a href=\"{{custom_values.booking_link}}\" style=\"display:inline-block;background:#1a56db;color:#ffffff;padding:12px 20px;border-radius:6px;text-decoration:none;font-weight:600;\">Book my visit</a></p><p style=\"margin:0 0 14px;\">Questions first? Reply to this email and I'll answer.</p><p style=\"margin:0;\">{{custom_values.owner_first_name}}<br>{{custom_values.business_name}} · {{custom_values.business_phone}}</p></div>"
769
769
  },
770
770
  {
771
771
  "ref": "email_template.w_email_1",
@@ -781,7 +781,7 @@
781
781
  "conditionalOn": "offer.trialFree == true",
782
782
  "_source": "[NO REAL SOURCE: proposed] Free-trial version of the instant email.",
783
783
  "subject": "Your {{custom_values.trial_name}} link, {{contact.first_name}}",
784
- "html": "<div style=\"font-family:Arial,Helvetica,sans-serif;font-size:16px;line-height:1.5;color:#1f2937;max-width:600px;\"><p style=\"margin:0 0 14px;\">Hi {{contact.first_name}},</p><p style=\"margin:0 0 14px;\">Thanks for reaching out to {{custom_values.business_name}}. I'm {{custom_values.owner_first_name}}, and I read every one of these myself.</p><p style=\"margin:0 0 14px;\">Here's how the {{custom_values.trial_name}} works: you pick a time, and your first visit is free. Every visit starts with a consult, and we answer all of your questions before anything begins.</p><p style=\"margin:0 0 14px;\"><a href=\"{{custom_values.booking_link}}\" style=\"display:inline-block;background:#1a56db;color:#ffffff;padding:12px 20px;border-radius:6px;text-decoration:none;font-weight:600;\">Pick my time</a></p><p style=\"margin:0 0 14px;\">If you'd rather ask something first, reply to this email. A real person answers.</p><p style=\"margin:0;\">{{custom_values.owner_first_name}}<br>{{custom_values.business_name}} · {{custom_values.business_phone}}</p></div>"
784
+ "html": "<div style=\"font-family:Arial,Helvetica,sans-serif;font-size:16px;line-height:1.5;color:#1f2937;max-width:600px;\"><p style=\"margin:0 0 14px;\">Hi {{contact.first_name}},</p><p style=\"margin:0 0 14px;\">Thanks for reaching out to {{custom_values.business_name}}. I'm {{custom_values.owner_first_name}}.</p><p style=\"margin:0 0 14px;\">Here's how the {{custom_values.trial_name}} works: you pick a time, and your first visit is free.</p><p style=\"margin:0 0 14px;\"><a href=\"{{custom_values.booking_link}}\" style=\"display:inline-block;background:#1a56db;color:#ffffff;padding:12px 20px;border-radius:6px;text-decoration:none;font-weight:600;\">Pick my time</a></p><p style=\"margin:0 0 14px;\">If you'd rather ask something first, reply to this email. A real person answers.</p><p style=\"margin:0;\">{{custom_values.owner_first_name}}<br>{{custom_values.business_name}} · {{custom_values.business_phone}}</p></div>"
785
785
  },
786
786
  {
787
787
  "ref": "email_template.n_email_2f",
@@ -802,9 +802,9 @@
802
802
  {
803
803
  "ref": "email_template.appt_confirm_email",
804
804
  "name": "Trial Confirmed Email",
805
- "_source": "[NO REAL SOURCE: proposed] The live account confirms by text only. Facts from the live confirmation text.",
805
+ "_source": "[NO REAL SOURCE: proposed] The live account confirms by text only. When and where from the booking; how long only from the intake's visit length (the version after || leaves it out).",
806
806
  "subject": "Confirmed: your {{custom_values.trial_name}}",
807
- "html": "<div style=\"font-family:Arial,Helvetica,sans-serif;font-size:16px;line-height:1.5;color:#1f2937;max-width:600px;\"><p style=\"margin:0 0 14px;\">Hi {{contact.first_name}},</p><p style=\"margin:0 0 14px;\">You're booked in for the {{custom_values.trial_name}} with {{custom_values.business_name}} on {{appointment.start_time}}.</p><ul style=\"margin:0 0 14px 20px;padding:0;\"><li style=\"margin:0 0 6px;\">Where: {{custom_values.business_address}}</li><li style=\"margin:0 0 6px;\">How long: about {{offer.visitMinutes || 90}} minutes</li><li style=\"margin:0 0 6px;\">Arrive: 10 minutes ahead, to fill in a brief intake form</li></ul><p style=\"margin:0 0 14px;\">Need to move it? Just reply here, or phone {{custom_values.business_phone}}.</p><p style=\"margin:0;\">{{custom_values.owner_first_name}}<br>{{custom_values.business_name}} · {{custom_values.business_phone}}</p></div>"
807
+ "html": "<div style=\"font-family:Arial,Helvetica,sans-serif;font-size:16px;line-height:1.5;color:#1f2937;max-width:600px;\"><p style=\"margin:0 0 14px;\">Hi {{contact.first_name}},</p><p style=\"margin:0 0 14px;\">You're booked in for the {{custom_values.trial_name}} with {{custom_values.business_name}} on {{appointment.start_time}}.</p><ul style=\"margin:0 0 14px 20px;padding:0;\"><li style=\"margin:0 0 6px;\">Where: {{custom_values.business_address}}</li><li style=\"margin:0 0 6px;\">How long: about {{offer.visitMinutes}} minutes</li></ul><p style=\"margin:0 0 14px;\">Need to move it? Just reply here, or phone {{custom_values.business_phone}}.</p><p style=\"margin:0;\">{{custom_values.owner_first_name}}<br>{{custom_values.business_name}} · {{custom_values.business_phone}}</p></div> || <div style=\"font-family:Arial,Helvetica,sans-serif;font-size:16px;line-height:1.5;color:#1f2937;max-width:600px;\"><p style=\"margin:0 0 14px;\">Hi {{contact.first_name}},</p><p style=\"margin:0 0 14px;\">You're booked in for the {{custom_values.trial_name}} with {{custom_values.business_name}} on {{appointment.start_time}}.</p><ul style=\"margin:0 0 14px 20px;padding:0;\"><li style=\"margin:0 0 6px;\">Where: {{custom_values.business_address}}</li></ul><p style=\"margin:0 0 14px;\">Need to move it? Just reply here, or phone {{custom_values.business_phone}}.</p><p style=\"margin:0;\">{{custom_values.owner_first_name}}<br>{{custom_values.business_name}} · {{custom_values.business_phone}}</p></div>"
808
808
  },
809
809
  {
810
810
  "ref": "email_template.ns_email_1",
@@ -818,7 +818,7 @@
818
818
  "name": "Review Request - Email",
819
819
  "_source": "[NO REAL SOURCE: proposed] No review request exists in any account read. Med-spa shape; never incentivized.",
820
820
  "subject": "One minute for a review, {{contact.first_name}}?",
821
- "html": "<div style=\"font-family:Arial,Helvetica,sans-serif;font-size:16px;line-height:1.5;color:#1f2937;max-width:600px;\"><p style=\"margin:0 0 14px;\">Hi {{contact.first_name}},</p><p style=\"margin:0 0 14px;\">Thank you for choosing {{custom_values.business_name}}.</p><p style=\"margin:0 0 14px;\">If your experience has been good, a short review is the most useful thing you could do for us. It takes about a minute and it's how the next person decides to trust us.</p><p style=\"margin:0 0 14px;\"><a href=\"{{custom_values.review_link}}\" style=\"display:inline-block;background:#1a56db;color:#ffffff;padding:12px 20px;border-radius:6px;text-decoration:none;font-weight:600;\">Leave a review</a></p><p style=\"margin:0 0 14px;\">If anything hasn't been right, reply to this email instead and I'll fix it personally.</p><p style=\"margin:0;\">{{custom_values.owner_first_name}}<br>{{custom_values.business_name}} · {{custom_values.business_phone}}</p></div>"
821
+ "html": "<div style=\"font-family:Arial,Helvetica,sans-serif;font-size:16px;line-height:1.5;color:#1f2937;max-width:600px;\"><p style=\"margin:0 0 14px;\">Hi {{contact.first_name}},</p><p style=\"margin:0 0 14px;\">Thank you for choosing {{custom_values.business_name}}.</p><p style=\"margin:0 0 14px;\">If your experience has been good, a short review is the most useful thing you could do for us. It takes about a minute and it's how the next person decides to trust us.</p><p style=\"margin:0 0 14px;\"><a href=\"{{custom_values.review_link}}\" style=\"display:inline-block;background:#1a56db;color:#ffffff;padding:12px 20px;border-radius:6px;text-decoration:none;font-weight:600;\">Leave a review</a></p><p style=\"margin:0 0 14px;\">If anything hasn't been right, reply to this email instead and tell us.</p><p style=\"margin:0;\">{{custom_values.owner_first_name}}<br>{{custom_values.business_name}} · {{custom_values.business_phone}}</p></div>"
822
822
  }
823
823
  ],
824
824
  "sms": [
@@ -887,7 +887,7 @@
887
887
  "name": "Nurture Text 2 - Talked Yourself Out Of It",
888
888
  "_kind": "marketing",
889
889
  "_source": "PATTERN: live red-light trial account. Drip text that names the hesitation and lowers the risk, with a YES for info ask.",
890
- "body": "{{contact.first_name}}, honest question: is there a treatment you've wondered about but kept putting off? The {{custom_values.trial_name}} begins with a consult, and we answer every question before we start anything.\n\nReply YES for the booking link.\nReply N to stop these texts."
890
+ "body": "{{contact.first_name}}, honest question: is there a treatment you've wondered about but kept putting off? If you have a question about the {{custom_values.trial_name}}, just reply here and we'll answer it.\n\nReply YES for the booking link.\nReply N to stop these texts."
891
891
  },
892
892
  {
893
893
  "ref": "sms_template.n_sms_3a",
@@ -895,7 +895,7 @@
895
895
  "conditionalOn": "offer.anchorPrice is set && offer.depositAmount is set",
896
896
  "_kind": "marketing",
897
897
  "_source": "PATTERN: live red-light trial account. Drip price text: the clinic's own comparison price from the intake, the trial price and the deposit framing.",
898
- "body": "{{contact.first_name}}, comparable treatments elsewhere tend to cost {{offer.anchorPrice}} a session. The {{custom_values.trial_name}} here is ${{custom_values.trial_price}}, consult included, and a ${{custom_values.deposit_amount}} deposit reserves your time.\n\nReply YES for the booking link.\nReply N to stop these texts."
898
+ "body": "{{contact.first_name}}, comparable treatments elsewhere tend to cost {{offer.anchorPrice}} a session. The {{custom_values.trial_name}} here is ${{custom_values.trial_price}}, and you reserve your time with a ${{custom_values.deposit_amount}} deposit.\n\nReply YES for the booking link.\nReply N to stop these texts."
899
899
  },
900
900
  {
901
901
  "ref": "sms_template.n_sms_3b",
@@ -903,7 +903,7 @@
903
903
  "conditionalOn": "offer.anchorPrice is not set && offer.depositAmount is set",
904
904
  "_kind": "marketing",
905
905
  "_source": "PATTERN: live red-light trial account. Drip price text without a comparison price: the trial price and the deposit framing.",
906
- "body": "{{contact.first_name}}, the {{custom_values.trial_name}} at {{custom_values.business_name}} is ${{custom_values.trial_price}} with the consult included, and a ${{custom_values.deposit_amount}} deposit reserves your time.\n\nReply YES for the booking link.\nReply N to stop these texts."
906
+ "body": "{{contact.first_name}}, the {{custom_values.trial_name}} at {{custom_values.business_name}} is ${{custom_values.trial_price}}, and you reserve your time with a ${{custom_values.deposit_amount}} deposit.\n\nReply YES for the booking link.\nReply N to stop these texts."
907
907
  },
908
908
  {
909
909
  "ref": "sms_template.n_sms_3c",
@@ -911,7 +911,7 @@
911
911
  "conditionalOn": "offer.anchorPrice is set && offer.depositAmount is not set && offer.trialFree != true",
912
912
  "_kind": "marketing",
913
913
  "_source": "PATTERN: live red-light trial account. Drip price text with a comparison price, for a clinic with no deposit.",
914
- "body": "{{contact.first_name}}, comparable treatments elsewhere tend to cost {{offer.anchorPrice}} a session. The {{custom_values.trial_name}} here is ${{custom_values.trial_price}}, consult included.\n\nReply YES for the booking link.\nReply N to stop these texts."
914
+ "body": "{{contact.first_name}}, comparable treatments elsewhere tend to cost {{offer.anchorPrice}} a session. The {{custom_values.trial_name}} here is ${{custom_values.trial_price}}.\n\nReply YES for the booking link.\nReply N to stop these texts."
915
915
  },
916
916
  {
917
917
  "ref": "sms_template.n_sms_3d",
@@ -919,7 +919,7 @@
919
919
  "conditionalOn": "offer.anchorPrice is not set && offer.depositAmount is not set && offer.trialFree != true",
920
920
  "_kind": "marketing",
921
921
  "_source": "PATTERN: live red-light trial account. Drip price text, no comparison price and no deposit.",
922
- "body": "{{contact.first_name}}, the {{custom_values.trial_name}} at {{custom_values.business_name}} is ${{custom_values.trial_price}} with the consult included.\n\nReply YES for the booking link.\nReply N to stop these texts."
922
+ "body": "{{contact.first_name}}, the {{custom_values.trial_name}} at {{custom_values.business_name}} is ${{custom_values.trial_price}}.\n\nReply YES for the booking link.\nReply N to stop these texts."
923
923
  },
924
924
  {
925
925
  "ref": "sms_template.n_sms_4",
@@ -941,8 +941,8 @@
941
941
  "ref": "sms_template.n_sms_5",
942
942
  "name": "Nurture Text 6 - What Happens At The Visit",
943
943
  "_kind": "marketing",
944
- "_source": "[NO REAL SOURCE: proposed] FAQ text. The facts (plan for 90 minutes, arrive 10 minutes early, short intake form) come from the live booking confirmation.",
945
- "body": "{{contact.first_name}}, a question we get a lot: what happens at the {{custom_values.trial_name}}? Plan on about {{offer.visitMinutes || 90}} minutes. Get there 10 minutes ahead to fill in a brief intake form, and a consult comes before anything else.\n\nReply N to stop these texts."
944
+ "_source": "[NO REAL SOURCE: proposed] FAQ text. The visit length is the intake's own answer; with none, the version after || invites the question instead. No arrive-early, intake-form or consult line: no intake answer gives them.",
945
+ "body": "{{contact.first_name}}, a question we get a lot: what happens at the {{custom_values.trial_name}}? Plan on about {{offer.visitMinutes}} minutes, and text any question here first.\n\nReply N to stop these texts.\n||\n{{contact.first_name}}, a question we get a lot: what happens at the {{custom_values.trial_name}}? Text your question here and we'll answer it.\n\nReply N to stop these texts."
946
946
  },
947
947
  {
948
948
  "ref": "sms_template.n_sms_6",
@@ -1013,7 +1013,7 @@
1013
1013
  "conditionalOn": "offer.anchorPrice is set && offer.trialFree == true",
1014
1014
  "_kind": "marketing",
1015
1015
  "_source": "[NO REAL SOURCE: proposed] Free-trial version of the drip price text, with the clinic's comparison price.",
1016
- "body": "{{contact.first_name}}, comparable treatments elsewhere tend to cost {{offer.anchorPrice}} a session. Your first {{custom_values.trial_name}} here is free, consult included.\n\nReply YES for the booking link.\nReply N to stop these texts."
1016
+ "body": "{{contact.first_name}}, comparable treatments elsewhere tend to cost {{offer.anchorPrice}} a session. Your first {{custom_values.trial_name}} here is free.\n\nReply YES for the booking link.\nReply N to stop these texts."
1017
1017
  },
1018
1018
  {
1019
1019
  "ref": "sms_template.n_sms_3f",
@@ -1021,7 +1021,7 @@
1021
1021
  "conditionalOn": "offer.anchorPrice is not set && offer.trialFree == true",
1022
1022
  "_kind": "marketing",
1023
1023
  "_source": "[NO REAL SOURCE: proposed] Free-trial version of the drip price text.",
1024
- "body": "{{contact.first_name}}, your first {{custom_values.trial_name}} at {{custom_values.business_name}} is free, with the consult included.\n\nReply YES for the booking link.\nReply N to stop these texts."
1024
+ "body": "{{contact.first_name}}, your first {{custom_values.trial_name}} at {{custom_values.business_name}} is free.\n\nReply YES for the booking link.\nReply N to stop these texts."
1025
1025
  },
1026
1026
  {
1027
1027
  "ref": "sms_template.n_sms_6f",
@@ -1061,7 +1061,7 @@
1061
1061
  "conditionalOn": "offer.anchorPrice is set && offer.depositAmount is set",
1062
1062
  "_kind": "marketing",
1063
1063
  "_source": "[NO REAL SOURCE: proposed] Win-back-only wording of the nurture text in the same slot (rehearsal 4 #8, 2026-09-29): a lead who went through Lead Nurture and then Win-back no longer gets the same text twice. Same shape: who, why, the offer, one ask, the opt-out line.",
1064
- "body": "{{contact.first_name}}, in case price was the question: comparable treatments elsewhere tend to cost {{offer.anchorPrice}} a session. Our {{custom_values.trial_name}} is ${{custom_values.trial_price}} with the consult, and ${{custom_values.deposit_amount}} of it holds your time when you book.\n\nReply YES for the booking link.\nReply N to stop these texts."
1064
+ "body": "{{contact.first_name}}, in case price was the question: comparable treatments elsewhere tend to cost {{offer.anchorPrice}} a session. Our {{custom_values.trial_name}} is ${{custom_values.trial_price}}, and ${{custom_values.deposit_amount}} of it holds your time when you book.\n\nReply YES for the booking link.\nReply N to stop these texts."
1065
1065
  },
1066
1066
  {
1067
1067
  "ref": "sms_template.w_sms_3b",
@@ -1069,7 +1069,7 @@
1069
1069
  "conditionalOn": "offer.anchorPrice is not set && offer.depositAmount is set",
1070
1070
  "_kind": "marketing",
1071
1071
  "_source": "[NO REAL SOURCE: proposed] Win-back-only wording of the nurture text in the same slot (rehearsal 4 #8, 2026-09-29): a lead who went through Lead Nurture and then Win-back no longer gets the same text twice. Same shape: who, why, the offer, one ask, the opt-out line.",
1072
- "body": "{{contact.first_name}}, in case price was the question: the {{custom_values.trial_name}} at {{custom_values.business_name}} is ${{custom_values.trial_price}} with the consult, and ${{custom_values.deposit_amount}} of it holds your time when you book.\n\nReply YES for the booking link.\nReply N to stop these texts."
1072
+ "body": "{{contact.first_name}}, in case price was the question: the {{custom_values.trial_name}} at {{custom_values.business_name}} is ${{custom_values.trial_price}}, and ${{custom_values.deposit_amount}} of it holds your time when you book.\n\nReply YES for the booking link.\nReply N to stop these texts."
1073
1073
  },
1074
1074
  {
1075
1075
  "ref": "sms_template.w_sms_3c",
@@ -1077,7 +1077,7 @@
1077
1077
  "conditionalOn": "offer.anchorPrice is set && offer.depositAmount is not set && offer.trialFree != true",
1078
1078
  "_kind": "marketing",
1079
1079
  "_source": "[NO REAL SOURCE: proposed] Win-back-only wording of the nurture text in the same slot (rehearsal 4 #8, 2026-09-29): a lead who went through Lead Nurture and then Win-back no longer gets the same text twice. Same shape: who, why, the offer, one ask, the opt-out line.",
1080
- "body": "{{contact.first_name}}, in case price was the question: comparable treatments elsewhere tend to cost {{offer.anchorPrice}} a session. Our {{custom_values.trial_name}} is ${{custom_values.trial_price}} with the consult.\n\nReply YES for the booking link.\nReply N to stop these texts."
1080
+ "body": "{{contact.first_name}}, in case price was the question: comparable treatments elsewhere tend to cost {{offer.anchorPrice}} a session. Our {{custom_values.trial_name}} is ${{custom_values.trial_price}}.\n\nReply YES for the booking link.\nReply N to stop these texts."
1081
1081
  },
1082
1082
  {
1083
1083
  "ref": "sms_template.w_sms_3d",
@@ -1085,7 +1085,7 @@
1085
1085
  "conditionalOn": "offer.anchorPrice is not set && offer.depositAmount is not set && offer.trialFree != true",
1086
1086
  "_kind": "marketing",
1087
1087
  "_source": "[NO REAL SOURCE: proposed] Win-back-only wording of the nurture text in the same slot (rehearsal 4 #8, 2026-09-29): a lead who went through Lead Nurture and then Win-back no longer gets the same text twice. Same shape: who, why, the offer, one ask, the opt-out line.",
1088
- "body": "{{contact.first_name}}, in case price was the question: the {{custom_values.trial_name}} at {{custom_values.business_name}} is ${{custom_values.trial_price}}, consult included.\n\nReply YES for the booking link.\nReply N to stop these texts."
1088
+ "body": "{{contact.first_name}}, in case price was the question: the {{custom_values.trial_name}} at {{custom_values.business_name}} is ${{custom_values.trial_price}}.\n\nReply YES for the booking link.\nReply N to stop these texts."
1089
1089
  },
1090
1090
  {
1091
1091
  "ref": "sms_template.w_sms_3e",
@@ -1093,7 +1093,7 @@
1093
1093
  "conditionalOn": "offer.anchorPrice is set && offer.trialFree == true",
1094
1094
  "_kind": "marketing",
1095
1095
  "_source": "[NO REAL SOURCE: proposed] Win-back-only wording of the nurture text in the same slot (rehearsal 4 #8, 2026-09-29): a lead who went through Lead Nurture and then Win-back no longer gets the same text twice. Same shape: who, why, the offer, one ask, the opt-out line.",
1096
- "body": "{{contact.first_name}}, in case cost was the question: comparable treatments elsewhere tend to cost {{offer.anchorPrice}} a session, and your first {{custom_values.trial_name}} with us is free, consult included.\n\nReply YES for the booking link.\nReply N to stop these texts."
1096
+ "body": "{{contact.first_name}}, in case cost was the question: comparable treatments elsewhere tend to cost {{offer.anchorPrice}} a session, and your first {{custom_values.trial_name}} with us is free.\n\nReply YES for the booking link.\nReply N to stop these texts."
1097
1097
  },
1098
1098
  {
1099
1099
  "ref": "sms_template.w_sms_3f",
@@ -1101,7 +1101,7 @@
1101
1101
  "conditionalOn": "offer.anchorPrice is not set && offer.trialFree == true",
1102
1102
  "_kind": "marketing",
1103
1103
  "_source": "[NO REAL SOURCE: proposed] Win-back-only wording of the nurture text in the same slot (rehearsal 4 #8, 2026-09-29): a lead who went through Lead Nurture and then Win-back no longer gets the same text twice. Same shape: who, why, the offer, one ask, the opt-out line.",
1104
- "body": "{{contact.first_name}}, in case cost was the question: your first {{custom_values.trial_name}} at {{custom_values.business_name}} is free, consult included.\n\nReply YES for the booking link.\nReply N to stop these texts."
1104
+ "body": "{{contact.first_name}}, in case cost was the question: your first {{custom_values.trial_name}} at {{custom_values.business_name}} is free.\n\nReply YES for the booking link.\nReply N to stop these texts."
1105
1105
  },
1106
1106
  {
1107
1107
  "ref": "sms_template.w_sms_4",
@@ -1147,23 +1147,23 @@
1147
1147
  "name": "Trial Confirmed Text",
1148
1148
  "conditionalOn": "offer.depositAmount is set",
1149
1149
  "_kind": "transactional",
1150
- "_source": "PATTERN: live red-light trial account. Booking confirmation: time, address, visit length, arrive early for intake. It no longer says the deposit was received (rehearsal 4 audit E3): this workflow cannot see a payment, and until Stripe and the calendar payment are on, bookings come in without one. GoHighLevel's own payment receipt confirms a deposit.",
1151
- "body": "{{contact.first_name}}, you're booked! Your {{custom_values.trial_name}} is on {{appointment.start_time}}. Our address: {{custom_values.business_address}}. Allow about {{offer.visitMinutes || 90}} minutes, and come 10 minutes early to fill in a short intake form."
1150
+ "_source": "PATTERN: live red-light trial account. Booking confirmation: time, address, visit length only from the intake answer (the version after || leaves it out); no arrive-early or intake-form line, since no intake answer gives one. It no longer says the deposit was received (rehearsal 4 audit E3): this workflow cannot see a payment, and until Stripe and the calendar payment are on, bookings come in without one. GoHighLevel's own payment receipt confirms a deposit.",
1151
+ "body": "{{contact.first_name}}, you're booked! Your {{custom_values.trial_name}} is on {{appointment.start_time}}. Our address: {{custom_values.business_address}}. Allow about {{offer.visitMinutes}} minutes. || {{contact.first_name}}, you're booked! Your {{custom_values.trial_name}} is on {{appointment.start_time}}. Our address: {{custom_values.business_address}}."
1152
1152
  },
1153
1153
  {
1154
1154
  "ref": "sms_template.appt_confirm_sms_nodeposit",
1155
1155
  "name": "Trial Confirmed Text (no deposit)",
1156
1156
  "conditionalOn": "offer.depositAmount is not set",
1157
1157
  "_kind": "transactional",
1158
- "_source": "PATTERN: live red-light trial account. Booking confirmation without a deposit: time, address, visit length, arrive early for intake.",
1159
- "body": "{{contact.first_name}}, you're booked! Your {{custom_values.trial_name}} is on {{appointment.start_time}}. Our address: {{custom_values.business_address}}. Allow about {{offer.visitMinutes || 90}} minutes, and come 10 minutes early to fill in a short intake form. Any questions, just text me."
1158
+ "_source": "PATTERN: live red-light trial account. Booking confirmation without a deposit: time, address, visit length only from the intake answer (the version after || leaves it out); no arrive-early or intake-form line, since no intake answer gives one.",
1159
+ "body": "{{contact.first_name}}, you're booked! Your {{custom_values.trial_name}} is on {{appointment.start_time}}. Our address: {{custom_values.business_address}}. Allow about {{offer.visitMinutes}} minutes. Any questions, just text me. || {{contact.first_name}}, you're booked! Your {{custom_values.trial_name}} is on {{appointment.start_time}}. Our address: {{custom_values.business_address}}. Any questions, just text me."
1160
1160
  },
1161
1161
  {
1162
1162
  "ref": "sms_template.appt_24h_sms",
1163
1163
  "name": "Trial Reminder - 24 Hours",
1164
1164
  "_kind": "transactional",
1165
1165
  "_source": "PATTERN: live red-light trial account. Reminder 24 hours before: time, and the prep instructions the clinic gave in the intake; without an answer, the usual arrive-early line. The fixed early line is no longer added in front of the answer, which usually says it too (rehearsal 4 audit E10).",
1166
- "body": "{{contact.first_name}}, see you tomorrow! Your {{custom_values.trial_name}} at {{custom_values.business_name}} is at {{appointment.start_time}}. {{offer.prepInstructions || Please come about 10 minutes early. Comfortable clothes are best, and bring any questions.}} Looking forward to it!"
1166
+ "body": "{{contact.first_name}}, see you tomorrow! Your {{custom_values.trial_name}} at {{custom_values.business_name}} is at {{appointment.start_time}}. {{offer.prepInstructions || Bring any questions you have.}} Looking forward to it!"
1167
1167
  },
1168
1168
  {
1169
1169
  "ref": "sms_template.appt_1h_sms",
@@ -2090,7 +2090,7 @@
2090
2090
  "ref": "sms.ns_sms_2",
2091
2091
  "name": "No-Show Text 2 - Times Kept Open",
2092
2092
  "templateRef": "sms_template.ns_sms_2",
2093
- "copyDirection": "Next day. Times kept open, ask for a day.",
2093
+ "copyDirection": "Next day. Offer to find another time, ask for a day. Never claim times were kept open.",
2094
2094
  "mergeTags": [
2095
2095
  "contact.first_name",
2096
2096
  "custom_values.owner_first_name"