@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": "2.1.0",
4
4
  "schemaVersion": "0.1",
5
5
  "title": "Generic Client",
6
- "description": "The neutral lead-to-customer fallback build at v2 depth (agency, \"other\", and any unmatched type; clinic / coach / ecommerce / local service now have their own presets). Sales pipeline, core fields, tag system, booking calendar, intake form + landing page, 15 email + 17 SMS send-ready templates, and 10 workflows: Speed to Lead (15 actions, 5 touches in 24 h, then a hand-off), Missed Call Text-Back, Lead Nurture (31 days, 11 touches), Replied - Stop & Route, Win-back (31 days, 5 touches), Appointment Booked - Confirm & Move, Appointment Reminders, No-Show Rescue. Industry-neutral copy that still reads like a person wrote it; the build stage rewrites every template from the brief, plus Quote Follow-up and Review Request (v2.1.0).",
6
+ "description": "The neutral lead-to-customer fallback build at v2 depth (agency, \"other\", and any unmatched type; clinic / coach / ecommerce / local service now have their own presets). Sales pipeline, core fields, tag system, booking calendar, intake form, 15 email + 17 SMS send-ready templates, and 10 workflows: Speed to Lead (15 actions, 5 touches in 24 h, then a hand-off), Missed Call Text-Back, Lead Nurture (31 days, 11 touches), Replied - Stop & Route, Win-back (31 days, 5 touches), Appointment Booked - Confirm & Move, Appointment Reminders, No-Show Rescue. Industry-neutral copy that still reads like a person wrote it; the build stage rewrites every template from the brief, plus Quote Follow-up and Review Request (v2.1.0).",
7
7
  "default": false,
8
8
  "selectors": {
9
9
  "businessTypes": [
@@ -65,6 +65,7 @@
65
65
  },
66
66
  {
67
67
  "ref": "stage.proposal_sent",
68
+ "feature": "quote_followup",
68
69
  "aliases": ["proposal sent", "quote sent", "estimate sent", "proposal", "quote"],
69
70
  "name": "Proposal / Quote Sent"
70
71
  },
@@ -365,37 +366,37 @@
365
366
  "ref": "email_template.stl_email_1",
366
367
  "name": "Speed to Lead - Instant Email",
367
368
  "subject": "Got it, {{contact.first_name}}. Here's what happens next",
368
- "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 see every inquiry that comes in.</p><p style=\"margin:0 0 14px;\">Here's what happens next: in the next few minutes you'll get a text from this number. Reply with one line about what you're trying to sort out, and I'll tell you straight whether we're the right fit, and what it would take.</p><p style=\"margin:0 0 14px;\">If you'd rather just talk, grab {{offer.leadMagnet || a quick call}}:</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 a time that suits me</a></p><p style=\"margin:0 0 14px;\">No pitch, no pressure. You'll leave the call knowing exactly what your options are.</p><p style=\"margin:0;\">{{custom_values.owner_first_name}}<br>{{custom_values.business_name}} · {{custom_values.business_phone}}</p></div>"
369
+ "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 what happens next: reply with one line about what you're trying to sort out, and I'll tell you straight whether we're the right fit, and what it would take.</p><p style=\"margin:0 0 14px;\">If you'd rather just talk, grab {{offer.leadMagnet || a quick call}}:</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 a time that suits me</a></p><p style=\"margin:0 0 14px;\">No pitch, no pressure. You'll leave the call knowing exactly what your options are.</p><p style=\"margin:0;\">{{custom_values.owner_first_name}}<br>{{custom_values.business_name}} · {{custom_values.business_phone}}</p></div>"
369
370
  },
370
371
  {
371
372
  "ref": "email_template.stl_email_2",
372
373
  "name": "Speed to Lead - 3 Hour Email",
373
374
  "subject": "The three questions we ask first",
374
- "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;\">Before anyone at {{custom_values.business_name}} recommends anything, we ask three questions:</p><ul style=\"margin:0 0 14px 20px;padding:0;\"><li style=\"margin:0 0 6px;\">What does \"fixed\" look like to you, in one sentence?</li><li style=\"margin:0 0 6px;\">What have you already tried, and what happened?</li><li style=\"margin:0 0 6px;\">What's the cost of leaving it as it is for another six months?</li></ul><p style=\"margin:0 0 14px;\">Your answers decide what we'd suggest and what we'd tell you not to bother with. That's the whole point of the first conversation.</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 the conversation</a></p><p style=\"margin:0 0 14px;\">Or reply to this email with your answer to the first question. I read every reply.</p><p style=\"margin:0;\">{{custom_values.owner_first_name}}<br>{{custom_values.business_name}} · {{custom_values.business_phone}}</p></div>"
375
+ "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;\">Before anyone at {{custom_values.business_name}} recommends anything, we ask three questions:</p><ul style=\"margin:0 0 14px 20px;padding:0;\"><li style=\"margin:0 0 6px;\">What does \"fixed\" look like to you, in one sentence?</li><li style=\"margin:0 0 6px;\">What have you already tried, and what happened?</li><li style=\"margin:0 0 6px;\">What's the cost of leaving it as it is for another six months?</li></ul><p style=\"margin:0 0 14px;\">Your answers decide what we'd suggest and what we'd tell you not to bother with. That's the whole point of the first conversation.</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 the conversation</a></p><p style=\"margin:0 0 14px;\">Or reply to this email with your answer to the first question.</p><p style=\"margin:0;\">{{custom_values.owner_first_name}}<br>{{custom_values.business_name}} · {{custom_values.business_phone}}</p></div>"
375
376
  },
376
377
  {
377
378
  "ref": "email_template.n_email_1",
378
379
  "name": "Nurture 1 - The Mistake Most People Make",
379
380
  "subject": "The mistake most people make with {{audience.painPoints[0] || the problem you reached out about}}",
380
- "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;\">When people first contact us about {{audience.painPoints[0] || the problem you reached out about}}, most have already made the same mistake: they've waited until it was urgent, then picked whoever answered the phone first.</p><p style=\"margin:0 0 14px;\">Urgent decisions are expensive decisions. The better first move is boring: get the problem described properly, get two or three options with real prices, and pick the one that solves the actual problem instead of the loudest symptom.</p><p style=\"margin:0 0 14px;\">That's what our first conversation is for. It's short, it's free, and you can take what you learn anywhere you like.</p><p style=\"margin:0 0 14px;\">When you're ready: <a href=\"{{custom_values.booking_link}}\" style=\"color:#1a56db;text-decoration:underline;\">pick a time</a>.</p><p style=\"margin:0;\">{{custom_values.owner_first_name}}<br>{{custom_values.business_name}} · {{custom_values.business_phone}}</p></div>"
381
+ "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 common mistake with {{audience.painPoints[0] || the problem you reached out about}}: they've waited until it was urgent, then picked whoever answered the phone first.</p><p style=\"margin:0 0 14px;\">Urgent decisions are expensive decisions. The better first move is boring: get the problem described properly, get two or three options with real prices, and pick the one that solves the actual problem instead of the loudest symptom.</p><p style=\"margin:0 0 14px;\">That's what our first conversation is for. It's short, and you can take what you learn anywhere you like.</p><p style=\"margin:0 0 14px;\">When you're ready: <a href=\"{{custom_values.booking_link}}\" style=\"color:#1a56db;text-decoration:underline;\">pick a time</a>.</p><p style=\"margin:0;\">{{custom_values.owner_first_name}}<br>{{custom_values.business_name}} · {{custom_values.business_phone}}</p></div>"
381
382
  },
382
383
  {
383
384
  "ref": "email_template.n_email_2",
384
385
  "name": "Nurture 2 - How Working With Us Goes",
385
386
  "subject": "How working with us actually goes",
386
- "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 hesitate because they don't know what happens after they say yes. So here it is:</p><ul style=\"margin:0 0 14px 20px;padding:0;\"><li style=\"margin:0 0 6px;\">Step 1: a short conversation. You describe the problem; we ask the three questions; you get honest options.</li><li style=\"margin:0 0 6px;\">Step 2: a written proposal with what we'd do, what it costs, and what you should expect by when. You take it away; nobody chases you the same day.</li><li style=\"margin:0 0 6px;\">Step 3: we do the work, you get updates you didn't have to ask for, and we don't call it done until you do.</li></ul><p style=\"margin:0 0 14px;\">The objection we hear most is {{audience.objections[0] || cost}}. That's why step 2 is in writing with options, so you choose the scope, not us.</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;\">Start with step 1</a></p><p style=\"margin:0;\">{{custom_values.owner_first_name}}<br>{{custom_values.business_name}} · {{custom_values.business_phone}}</p></div>"
387
+ "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 hesitate because they don't know what happens after they say yes. So here it is:</p><ul style=\"margin:0 0 14px 20px;padding:0;\"><li style=\"margin:0 0 6px;\">Step 1: a short conversation. You describe the problem; we ask the three questions; you get honest options.</li><li style=\"margin:0 0 6px;\">Step 2: clear options. Ask what each one includes, what it costs, and what to expect by when. You take your time.</li><li style=\"margin:0 0 6px;\">Step 3: we do the work you chose.</li></ul><p style=\"margin:0 0 14px;\">The objection we hear most is {{audience.objections[0] || cost}}. That's why step 2 is about options, so you choose, not us.</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;\">Start with step 1</a></p><p style=\"margin:0;\">{{custom_values.owner_first_name}}<br>{{custom_values.business_name}} · {{custom_values.business_phone}}</p></div>"
387
388
  },
388
389
  {
389
390
  "ref": "email_template.n_email_3",
390
391
  "name": "Nurture 3 - Why We Do It This Way",
391
392
  "subject": "Why we do it this way",
392
- "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;\">The best thing a client can say about {{custom_values.business_name}} is \"there were no surprises.\" Not the most exciting compliment. It's the one that gets us referred.</p><p style=\"margin:0 0 14px;\">It comes from a rule: everything in writing before it happens, and you hear about a problem from us before you notice it yourself. Slower to set up than a handshake. Far cheaper by the end.</p><p style=\"margin:0 0 14px;\">If you want to see what that looks like for your situation, that's what the first conversation is for.</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;\">See my options</a></p><p style=\"margin:0 0 14px;\">Have a question first? Reply to this email. I'll answer it myself.</p><p style=\"margin:0;\">{{custom_values.owner_first_name}}<br>{{custom_values.business_name}} · {{custom_values.business_phone}}</p></div>"
393
+ "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;\">The best thing a client can say about {{custom_values.business_name}} is \"there were no surprises.\" Not the most exciting compliment, but a good one to aim for.</p><p style=\"margin:0 0 14px;\">If that matters to you, ask us how we keep you in the loop.</p><p style=\"margin:0 0 14px;\">If you want to see what that looks like for your situation, that's what the first conversation is for.</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;\">See my options</a></p><p style=\"margin:0 0 14px;\">Have a question first? Reply to this email. I'll answer it.</p><p style=\"margin:0;\">{{custom_values.owner_first_name}}<br>{{custom_values.business_name}} · {{custom_values.business_phone}}</p></div>"
393
394
  },
394
395
  {
395
396
  "ref": "email_template.n_email_4",
396
397
  "name": "Nurture 4 - About the Cost",
397
398
  "subject": "About the cost",
398
- "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;\">Let's talk about the thing most people are too polite to ask: what does it cost?</p><p style=\"margin:0 0 14px;\">{{offer.summary || What we do}} is priced by scope, and the scope is yours to choose. The written proposal shows options side by side, with the price of each, before anything starts. There is never a number on the invoice you didn't see first.</p><p style=\"margin:0 0 14px;\">One honest warning: the cheapest quote is rarely the cheapest job. If a price looks too good, ask what's been left out. We'll tell you what's in ours line by line.</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;\">Get my written options</a></p><p style=\"margin:0;\">{{custom_values.owner_first_name}}<br>{{custom_values.business_name}} · {{custom_values.business_phone}}</p></div>"
399
+ "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;\">Let's talk about the thing most people are too polite to ask: what does it cost?</p><p style=\"margin:0 0 14px;\">The price of {{offer.summary || what we do}} depends on what you need, and you choose what that is. Before anything starts, ask us what each option costs.</p><p style=\"margin:0 0 14px;\">One honest warning: the cheapest price is rarely the best value. If a price looks too good, ask what has been left out. Ask us what is in ours and we will tell you.</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;\">Talk through the options</a></p><p style=\"margin:0;\">{{custom_values.owner_first_name}}<br>{{custom_values.business_name}} · {{custom_values.business_phone}}</p></div>"
399
400
  },
400
401
  {
401
402
  "ref": "email_template.n_email_5",
@@ -407,31 +408,31 @@
407
408
  "ref": "email_template.n_email_6",
408
409
  "name": "Nurture 6 - Everything in One Place",
409
410
  "subject": "Everything you need to decide, in one place",
410
- "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;\">If you're still weighing it up, here is everything in one place:</p><ul style=\"margin:0 0 14px 20px;padding:0;\"><li style=\"margin:0 0 6px;\">What: {{offer.leadMagnet || a quick call}} with {{custom_values.business_name}}, and written options you keep.</li><li style=\"margin:0 0 6px;\">Where: {{business.location || we come to you or meet online}}.</li><li style=\"margin:0 0 6px;\">Cost of the first step: nothing. Cost of the work: shown per option, in writing, before anything starts.</li><li style=\"margin:0 0 6px;\">Our rule: no surprises. You hear about problems from us first.</li><li style=\"margin:0 0 6px;\">Book, cancel or move your time any time: <a href=\"{{custom_values.booking_link}}\" style=\"color:#1a56db;text-decoration:underline;\">your booking link</a>.</li></ul><p style=\"margin:0 0 14px;\">If the answer is \"not now\", that's fine. Reply with the word later and I'll stop the emails and check in next quarter.</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 the conversation</a></p><p style=\"margin:0;\">{{custom_values.owner_first_name}}<br>{{custom_values.business_name}} · {{custom_values.business_phone}}</p></div>"
411
+ "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;\">If you're still weighing it up, here is everything in one place:</p><ul style=\"margin:0 0 14px 20px;padding:0;\"><li style=\"margin:0 0 6px;\">What: {{offer.leadMagnet || a quick call}} with {{custom_values.business_name}}, and clear options to think over.</li><li style=\"margin:0 0 6px;\">Where: {{business.location || to be agreed when we talk}}.</li><li style=\"margin:0 0 6px;\">Cost: ask us what each option costs before anything starts.</li><li style=\"margin:0 0 6px;\">Book, cancel or move your time any time: <a href=\"{{custom_values.booking_link}}\" style=\"color:#1a56db;text-decoration:underline;\">your booking link</a>.</li></ul><p style=\"margin:0 0 14px;\">If the answer is \"not now\", that's fine. Reply with the word later and I'll stop the emails.</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 the conversation</a></p><p style=\"margin:0;\">{{custom_values.owner_first_name}}<br>{{custom_values.business_name}} · {{custom_values.business_phone}}</p></div>"
411
412
  },
412
413
  {
413
414
  "ref": "email_template.w_email_1",
414
415
  "name": "Win-back 1 - One Question",
415
416
  "subject": "One question, {{contact.first_name}}",
416
- "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 while back you reached out to {{custom_values.business_name}} about {{audience.painPoints[0] || the problem you reached out about}}, and then things went quiet. That's normal; it's what happens when something isn't urgent yet.</p><p style=\"margin:0 0 14px;\">One question, and an honest answer is all I need: what stopped you? Timing, price, trust, or something we said?</p><p style=\"margin:0 0 14px;\">Reply with a word or two. If it's something we can fix, I'll fix it. If it's not the right time, I'll leave you alone until it is.</p><p style=\"margin:0;\">{{custom_values.owner_first_name}}<br>{{custom_values.business_name}} · {{custom_values.business_phone}}</p></div>"
417
+ "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 while back you reached out to {{custom_values.business_name}} about {{audience.painPoints[0] || the problem you reached out about}}, and then things went quiet. That's normal; it's what happens when something isn't urgent yet.</p><p style=\"margin:0 0 14px;\">One question, and an honest answer is all I need: what stopped you? Timing, price, trust, or something we said?</p><p style=\"margin:0 0 14px;\">Reply with a word or two. If it's something we can fix, tell me. If it's not the right time, say so and I'll stop here.</p><p style=\"margin:0;\">{{custom_values.owner_first_name}}<br>{{custom_values.business_name}} · {{custom_values.business_phone}}</p></div>"
417
418
  },
418
419
  {
419
420
  "ref": "email_template.w_email_2",
420
421
  "name": "Win-back 2 - What Changed",
421
- "subject": "What's changed since you last looked",
422
- "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;\">Since you first reached out, a couple of things have changed at {{custom_values.business_name}}: more availability on the calendar, and written options that now include a smaller first step for people who want to start carefully.</p><p style=\"margin:0 0 14px;\">What hasn't changed: the first conversation is still free, still short, and still ends with options you take away rather than a decision on the spot.</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;\">See the calendar</a></p><p style=\"margin:0;\">{{custom_values.owner_first_name}}<br>{{custom_values.business_name}} · {{custom_values.business_phone}}</p></div>"
422
+ "subject": "When the timing is right",
423
+ "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;\">It has been a while since you first reached out to {{custom_values.business_name}}. If the timing was wrong then, the calendar is open now, and you can start with one short conversation.</p><p style=\"margin:0 0 14px;\">That conversation ends with options you take away, not a decision on the spot.</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;\">See the calendar</a></p><p style=\"margin:0;\">{{custom_values.owner_first_name}}<br>{{custom_values.business_name}} · {{custom_values.business_phone}}</p></div>"
423
424
  },
424
425
  {
425
426
  "ref": "email_template.w_email_3",
426
427
  "name": "Win-back 3 - The Door Stays Open",
427
428
  "subject": "The door stays open",
428
- "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;\">This is the last automatic email you'll get from me. I'd rather you hear from a person when the time is right than from a sequence.</p><p style=\"margin:0 0 14px;\">Your first conversation doesn't expire. When you're ready, the link below works, and so does replying to this email.</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 when you're ready</a></p><p style=\"margin:0 0 14px;\">Thanks for considering us. And whatever you do about {{audience.painPoints[0] || the problem you reached out about}}, get it in writing first.</p><p style=\"margin:0;\">{{custom_values.owner_first_name}}<br>{{custom_values.business_name}} · {{custom_values.business_phone}}</p></div>"
429
+ "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;\">This is the last automatic email you'll get from me. I'd rather you hear from a person when the time is right than from a sequence.</p><p style=\"margin:0 0 14px;\">Your first conversation doesn't expire. When you're ready, the link below works, and so does replying to this email.</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 when you're ready</a></p><p style=\"margin:0 0 14px;\">Thanks for considering us. And whatever you do about {{audience.painPoints[0] || the problem you reached out about}}, ask what is included before you start.</p><p style=\"margin:0;\">{{custom_values.owner_first_name}}<br>{{custom_values.business_name}} · {{custom_values.business_phone}}</p></div>"
429
430
  },
430
431
  {
431
432
  "ref": "email_template.appt_confirm_email",
432
433
  "name": "Appointment Confirmed",
433
434
  "subject": "Confirmed, {{contact.first_name}}: your appointment details",
434
- "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;\">Your appointment with {{custom_values.business_name}} is confirmed for {{appointment.start_time}}.</p><p style=\"margin:0 0 14px;\">What to have ready: a one-line description of the problem and anything you've already tried. That's it.</p><p style=\"margin:0 0 14px;\">What you'll leave with: honest options and, if you want it, a written proposal within a day or two.</p><p style=\"margin:0 0 14px;\">Need to move it? Use your booking link: <a href=\"{{custom_values.booking_link}}\" style=\"color:#1a56db;text-decoration:underline;\">reschedule</a>, or reply to this email.</p><p style=\"margin:0;\">{{custom_values.owner_first_name}}<br>{{custom_values.business_name}} · {{custom_values.business_phone}}</p></div>"
435
+ "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;\">Your appointment with {{custom_values.business_name}} is confirmed for {{appointment.start_time}}.</p><p style=\"margin:0 0 14px;\">What to have ready: a one-line description of the problem and anything you've already tried. That's it.</p><p style=\"margin:0 0 14px;\">What you'll leave with: honest options, and you can ask what each one costs.</p><p style=\"margin:0 0 14px;\">Need to move it? Use your booking link: <a href=\"{{custom_values.booking_link}}\" style=\"color:#1a56db;text-decoration:underline;\">reschedule</a>, or reply to this email.</p><p style=\"margin:0;\">{{custom_values.owner_first_name}}<br>{{custom_values.business_name}} · {{custom_values.business_phone}}</p></div>"
435
436
  },
436
437
  {
437
438
  "ref": "email_template.appt_prep_email",
@@ -455,7 +456,7 @@
455
456
  "ref": "email_template.r_email_1",
456
457
  "name": "Review Request - Email",
457
458
  "subject": "A minute of your time, {{contact.first_name}}?",
458
- "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}}. I hope everything went the way you wanted; if it did not, reply to this and I will make it right before anything else.</p><p style=\"margin:0 0 14px;\">If it did, would you leave us a short Google review? A line or two about what we did and how it went is all it takes, and it is genuinely how the next person decides to call.</p><p style=\"margin:0 0 14px;\"><a href=\"{{custom_values.review_link}}\">Leave a review here</a></p><p style=\"margin:0;\">{{custom_values.owner_first_name}}<br>{{custom_values.business_name}} · {{custom_values.business_phone}}</p></div>"
459
+ "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}}. I hope everything went the way you wanted; if it did not, reply to this and tell us.</p><p style=\"margin:0 0 14px;\">If it did, would you leave us a short Google review? A line or two about what we did and how it went is all it takes, and it is genuinely how the next person decides to call.</p><p style=\"margin:0 0 14px;\"><a href=\"{{custom_values.review_link}}\">Leave a review here</a></p><p style=\"margin:0;\">{{custom_values.owner_first_name}}<br>{{custom_values.business_name}} · {{custom_values.business_phone}}</p></div>"
459
460
  },
460
461
  {
461
462
  "ref": "email_template.q_email_1",
@@ -467,7 +468,7 @@
467
468
  "ref": "email_template.q_email_2",
468
469
  "name": "Quote Follow-up - Email 2",
469
470
  "subject": "Last note on the quote, {{contact.first_name}}",
470
- "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;\">This is the last note from me on the quote for the work you asked about. I would rather ask once more than assume.</p><p style=\"margin:0 0 14px;\">If the timing is off, tell me when would suit and I will hold the price. If it is a no, a one-word reply is welcome and I will stop here.</p><p style=\"margin:0 0 14px;\">Either way, thank you for considering {{custom_values.business_name}}.</p><p style=\"margin:0;\">{{custom_values.owner_first_name}}<br>{{custom_values.business_name}} · {{custom_values.business_phone}}</p></div>"
471
+ "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;\">This is the last note from me on the quote for the work you asked about. I would rather ask once more than assume.</p><p style=\"margin:0 0 14px;\">If the timing is off, tell me when would suit and I will check in then. If it is a no, a one-word reply is welcome and I will stop here.</p><p style=\"margin:0 0 14px;\">Either way, thank you for considering {{custom_values.business_name}}.</p><p style=\"margin:0;\">{{custom_values.owner_first_name}}<br>{{custom_values.business_name}} · {{custom_values.business_phone}}</p></div>"
471
472
  }
472
473
  ],
473
474
  "sms": [
@@ -479,7 +480,7 @@
479
480
  {
480
481
  "ref": "sms_template.stl_sms_2",
481
482
  "name": "Speed to Lead - 20 Minute Text",
482
- "body": "{{contact.first_name}}, I can hold a 30-min slot for you this week. Mornings or afternoons? Or grab one here: {{custom_values.booking_link}}"
483
+ "body": "{{contact.first_name}}, Want me to hold a time for you? Mornings or afternoons? Or grab one here: {{custom_values.booking_link}}"
483
484
  },
484
485
  {
485
486
  "ref": "sms_template.stl_sms_3",
@@ -509,12 +510,12 @@
509
510
  {
510
511
  "ref": "sms_template.n_sms_3",
511
512
  "name": "Nurture Text 3 - Midpoint",
512
- "body": "{{contact.first_name}}, it's {{custom_values.owner_first_name}}. Still thinking about {{audience.painPoints[0] || the problem you reached out about}}? I have a couple of openings this week. Want one, or should I check back next month?"
513
+ "body": "{{contact.first_name}}, it's {{custom_values.owner_first_name}}. Still thinking about {{audience.painPoints[0] || the problem you reached out about}}? Want me to find you a time this week, or should I check back next month?"
513
514
  },
514
515
  {
515
516
  "ref": "sms_template.n_sms_4",
516
517
  "name": "Nurture Text 4 - Any Question",
517
- "body": "Hi {{contact.first_name}}, {{custom_values.owner_first_name}} here. No pitch, just checking: did you ever get your question answered? If not, ask it here and I'll reply personally."
518
+ "body": "Hi {{contact.first_name}}, {{custom_values.owner_first_name}} here. No pitch, just checking: did you ever get your question answered? If not, ask it here and I'll reply."
518
519
  },
519
520
  {
520
521
  "ref": "sms_template.n_sms_5",
@@ -529,7 +530,7 @@
529
530
  {
530
531
  "ref": "sms_template.w_sms_2",
531
532
  "name": "Win-back Text 2",
532
- "body": "{{contact.first_name}}, two openings came up this week at {{custom_values.business_name}}. Want one for a quick conversation? Reply YES and I'll hold it."
533
+ "body": "{{contact.first_name}}, want a time for a quick conversation with {{custom_values.business_name}}? Reply YES and I'll find you one."
533
534
  },
534
535
  {
535
536
  "ref": "sms_template.appt_confirm_sms",
@@ -554,7 +555,7 @@
554
555
  {
555
556
  "ref": "sms_template.ns_sms_2",
556
557
  "name": "No-Show Text 2",
557
- "body": "{{contact.first_name}}, {{custom_values.owner_first_name}} here. I kept a couple of times open for you this week. Want one? Reply with a day that works."
558
+ "body": "{{contact.first_name}}, {{custom_values.owner_first_name}} here. We'd be glad to find you another time. Want one? Reply with a day that works."
558
559
  },
559
560
  {
560
561
  "ref": "sms_template.r_sms_1",
@@ -585,7 +586,7 @@
585
586
  "name": "Speed to Lead - Instant Email",
586
587
  "subject": "Got it, {{contact.first_name}}. Here's what happens next",
587
588
  "templateRef": "email_template.stl_email_1",
588
- "copyDirection": "Instant. Who I am, what they asked for, the next few minutes (a text is coming), the one-question ask, the booking CTA, the no-pressure promise. Tone: brief.voice.threeWords. If brief.voice.signatureLine exists, insert it verbatim as its own paragraph right after the greeting.",
589
+ "copyDirection": "Instant. Who I am, what they asked for, what happens next (a reply invitation; never promise a text, since texting may be off), the one-question ask, the booking CTA, the no-pressure promise. Tone: brief.voice.threeWords. If brief.voice.signatureLine exists, insert it verbatim as its own paragraph right after the greeting.",
589
590
  "mergeTags": [
590
591
  "contact.first_name",
591
592
  "custom_values.business_name",
@@ -641,7 +642,7 @@
641
642
  "name": "Nurture 3 - Why We Do It This Way",
642
643
  "subject": "Why we do it this way",
643
644
  "templateRef": "email_template.n_email_3",
644
- "copyDirection": "Day 10. The method as proof: written scope, no surprises, updates unasked. Client results ONLY if the brief supplies them; otherwise the method is the proof. CTA + reply invite.",
645
+ "copyDirection": "Day 10. The method as proof: clear expectations, no surprises, updates unasked. Client results ONLY if the brief supplies them; otherwise the method is the proof. CTA + reply invite.",
645
646
  "mergeTags": [
646
647
  "contact.first_name",
647
648
  "custom_values.business_name",
@@ -655,7 +656,7 @@
655
656
  "name": "Nurture 4 - About the Cost",
656
657
  "subject": "About the cost",
657
658
  "templateRef": "email_template.n_email_4",
658
- "copyDirection": "Day 14. Handle cost head-on: how pricing works (from offer.pricePoints if present), written before anything happens, options at different scopes, the cheapest quote is rarely the cheapest job. No numbers unless the brief has them.",
659
+ "copyDirection": "Day 14. Handle cost head-on: how pricing works (from offer.pricePoints if present), an invitation to ask what each option costs (never a promise about the business's pricing practice), the cheapest price is rarely the best value. No numbers unless the brief has them. Never promise a written proposal or an invoice: the build makes neither.",
659
660
  "mergeTags": [
660
661
  "contact.first_name",
661
662
  "custom_values.booking_link",
@@ -697,7 +698,7 @@
697
698
  "name": "Win-back 1 - One Question",
698
699
  "subject": "One question, {{contact.first_name}}",
699
700
  "templateRef": "email_template.w_email_1",
700
- "copyDirection": "Win-back day 0. Acknowledge the gap without guilt; ask what stopped them; promise to fix it or leave them alone. A reply is the CTA.",
701
+ "copyDirection": "Win-back day 0. Acknowledge the gap without guilt; ask what stopped them; invite them to say what would help. A reply is the CTA.",
701
702
  "mergeTags": [
702
703
  "contact.first_name",
703
704
  "custom_values.business_name",
@@ -708,9 +709,9 @@
708
709
  {
709
710
  "ref": "email.w_email_2",
710
711
  "name": "Win-back 2 - What Changed",
711
- "subject": "What's changed since you last looked",
712
+ "subject": "When the timing is right",
712
713
  "templateRef": "email_template.w_email_2",
713
- "copyDirection": "Win-back day 14. One real reason to look again from the brief (new availability, a new option, a seasonal fit), then what has not changed. One CTA.",
714
+ "copyDirection": "Win-back day 14. An invitation back. Say something changed only when the brief says what (new availability, a new option, a seasonal fit); never invent one, and never call a first step free unless the brief does. One CTA.",
714
715
  "mergeTags": [
715
716
  "contact.first_name",
716
717
  "custom_values.business_name",
@@ -795,7 +796,7 @@
795
796
  "name": "Review Request - Email",
796
797
  "subject": "A minute of your time, {{contact.first_name}}?",
797
798
  "templateRef": "email_template.r_email_1",
798
- "copyDirection": "Three days after the tag. Thank them, invite the complaint first (reply and I will fix it), then the ask with the link. Tone: brief.voice.threeWords.",
799
+ "copyDirection": "Three days after the tag. Thank them, invite the complaint first (reply and tell us; promise no fix), then the ask with the link. Tone: brief.voice.threeWords.",
799
800
  "mergeTags": [
800
801
  "contact.first_name",
801
802
  "custom_values.business_name",
@@ -822,7 +823,7 @@
822
823
  "name": "Quote Follow-up - Email 2",
823
824
  "subject": "Last note on the quote, {{contact.first_name}}",
824
825
  "templateRef": "email_template.q_email_2",
825
- "copyDirection": "Day ten, the last one. Say it is the last, offer to hold the price for a better time, make a no easy.",
826
+ "copyDirection": "Day ten, the last one. Say it is the last, offer to check in at a better time (never offer to hold a price), make a no easy.",
826
827
  "mergeTags": [
827
828
  "contact.first_name",
828
829
  "custom_values.business_name",
@@ -959,7 +960,7 @@
959
960
  "ref": "sms.w_sms_2",
960
961
  "name": "Win-back Text 2",
961
962
  "templateRef": "sms_template.w_sms_2",
962
- "copyDirection": "Win-back day 22. A concrete reason (openings this week) and a YES ask.",
963
+ "copyDirection": "Win-back day 22. A YES ask to find a time. No availability claim unless the brief gives one.",
963
964
  "mergeTags": [
964
965
  "contact.first_name",
965
966
  "custom_values.business_name"
@@ -1016,7 +1017,7 @@
1016
1017
  "ref": "sms.ns_sms_2",
1017
1018
  "name": "No-Show Text 2",
1018
1019
  "templateRef": "sms_template.ns_sms_2",
1019
- "copyDirection": "Next day. Owner kept times open; ask for a day.",
1020
+ "copyDirection": "Next day. Offer to find another time; ask for a day. Never claim times were kept open.",
1020
1021
  "mergeTags": [
1021
1022
  "contact.first_name",
1022
1023
  "custom_values.owner_first_name"
@@ -2034,7 +2035,7 @@
2034
2035
  "owner": "OPERATOR-EXT",
2035
2036
  "title": "Connect Stripe (to take payment)",
2036
2037
  "trigger": "channels.payment != 'Stripe connected'",
2037
- "instruction": "Connect Stripe in Payments > Integrations and create your products / prices. The landing page is built; the money connection is yours to authorize.",
2038
+ "instruction": "Connect Stripe in Payments > Integrations and create your products / prices. Authorize the payment connection in GoHighLevel.",
2038
2039
  "produces": null,
2039
2040
  "successCheck": "Stripe shows connected and products exist",
2040
2041
  "blocks": []
@@ -64,7 +64,7 @@ Every hand-off is `add_contact_tag` + a `contact_tag` trigger. Both halves are l
64
64
 
65
65
 
66
66
  ## Copy notes
67
- Built for a lead who is comparing three quotes on their phone. The instant text asks the only question that matters first (is it urgent?), the second asks for a photo, and every email answers a comparison question: what a written quote from us includes, why the cheapest quote costs more, the three questions to ask any contractor, what a small problem turns into. Win-back is seasonal (maintenance before the season turns). No before/after claims unless the brief supplies real ones.
67
+ Built for a lead who is comparing three quotes on their phone. The instant text asks the only question that matters first (is it urgent?), the second asks for a photo, and every email answers a comparison question: what to ask any company before hiring, why the cheapest quote costs more, the three questions to ask any contractor, what a small problem turns into. Win-back is seasonal (maintenance before the season turns). No before/after claims unless the brief supplies real ones.
68
68
 
69
69
  ## v2.1.0 (2026-09-15)
70
70