@elitedcs/ghl-mcp 3.96.0 → 3.97.1
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.
- package/CHANGELOG.md +64 -0
- package/README.md +1 -1
- package/dist/brain-function.js +2 -2
- package/dist/index.js +84130 -81630
- package/guide/guide.html +27 -3
- package/package.json +1 -1
- package/skills/blueprint/examples/sample-build-plan.json +1 -1
- package/skills/blueprint/examples/validate-plan.cjs +2 -1
- package/skills/blueprint/presets/clinic.preset.json +91 -39
- package/skills/blueprint/presets/coach.preset.json +90 -38
- package/skills/blueprint/presets/ecommerce.preset.json +78 -31
- package/skills/blueprint/presets/generic-client.preset.json +94 -41
- package/skills/blueprint/presets/local-service.md +1 -1
- package/skills/blueprint/presets/local-service.preset.json +107 -55
- package/skills/blueprint/presets/med-spa.md +1 -1
- package/skills/blueprint/presets/med-spa.preset.json +89 -37
- package/skills/blueprint/presets/wellness-clinic.md +2 -2
- package/skills/blueprint/presets/wellness-clinic.preset.json +98 -46
- package/skills/blueprint/references/copy-guide.md +1 -1
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"presetVersion": "2.1.0",
|
|
4
4
|
"schemaVersion": "0.1",
|
|
5
5
|
"title": "Ecommerce",
|
|
6
|
-
"description": "An ecommerce list-to-first-order system at v2 depth (Shopify, WooCommerce, BigCommerce or any store). Store Leads pipeline (subscriber to VIP), product-interest / order fields, source + lifecycle + interest tags, a VIP-list signup form
|
|
6
|
+
"description": "An ecommerce list-to-first-order system at v2 depth (Shopify, WooCommerce, BigCommerce or any store). Store Leads pipeline (subscriber to VIP), product-interest / order fields, source + lifecycle + interest tags, a VIP-list signup form with the welcome code, 11 email + 12 SMS send-ready templates, and 6 workflows: Speed to Lead (15 actions, 5 touches in 24 h with the welcome code, a personal-welcome task for a real person, then a hand-off), Missed Call Text-Back (the support line), Lead Nurture (31 days, 11 touches: how to choose, why we make it, best sellers, shipping and returns, the code expiring), Replied - Stop & Route, Win-back (31 days, 5 touches). No calendar. Order events come from the store (handoff), never from GHL, plus Review Request (v2.1.0).",
|
|
7
7
|
"default": false,
|
|
8
8
|
"selectors": {
|
|
9
9
|
"businessTypes": [
|
|
@@ -333,31 +333,31 @@
|
|
|
333
333
|
"ref": "email_template.stl_email_2",
|
|
334
334
|
"name": "Speed to Lead - 3 Hour Email",
|
|
335
335
|
"subject": "How to pick the right one",
|
|
336
|
-
"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 question we get most from new subscribers is \"which one should I start with?\" Here's the honest short version:</p><ul style=\"margin:0 0 14px 20px;padding:0;\"><li style=\"margin:0 0 6px;\">If it's your first time with {{offer.summary || what we make}}: start with the one most people buy first. It's the safest way to find out if you like what we do.</li><li style=\"margin:0 0 6px;\">If you already know what you like: go straight to the category you know
|
|
336
|
+
"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 question we get most from new subscribers is \"which one should I start with?\" Here's the honest short version:</p><ul style=\"margin:0 0 14px 20px;padding:0;\"><li style=\"margin:0 0 6px;\">If it's your first time with {{offer.summary || what we make}}: start with the one most people buy first. It's the safest way to find out if you like what we do.</li><li style=\"margin:0 0 6px;\">If you already know what you like: go straight to the category you know.</li></ul><p style=\"margin:0 0 14px;\">Your code {{custom_values.welcome_code}} works on any of them for the next {{custom_values.code_expiry_days}} days.</p><p style=\"margin:0 0 14px;\"><a href=\"{{custom_values.store_link}}\" style=\"display:inline-block;background:#1a56db;color:#ffffff;padding:12px 20px;border-radius:6px;text-decoration:none;font-weight:600;\">Shop with my code</a></p><p style=\"margin:0;\">{{custom_values.owner_first_name}}<br>{{custom_values.business_name}} · {{custom_values.business_phone}}</p></div>"
|
|
337
337
|
},
|
|
338
338
|
{
|
|
339
339
|
"ref": "email_template.n_email_1",
|
|
340
340
|
"name": "Nurture 1 - Why We Make It",
|
|
341
341
|
"subject": "Why we make it this way",
|
|
342
|
-
"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;\">Most people never hear why a brand makes what it makes, so here's ours in a paragraph.</p><p style=\"margin:0 0 14px;\">{{custom_values.business_name}}
|
|
342
|
+
"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;\">Most people never hear why a brand makes what it makes, so here's ours in a paragraph.</p><p style=\"margin:0 0 14px;\">At {{custom_values.business_name}} we want {{offer.summary || what we make}} to do the simple things right: made properly, priced honestly, and backed by someone you can actually reach.</p><p style=\"margin:0 0 14px;\">If that's the kind of brand you like buying from, you're in the right place. If not, no hard feelings; the unsubscribe link works.</p><p style=\"margin:0 0 14px;\">Your code {{custom_values.welcome_code}} is still good. <a href=\"{{custom_values.store_link}}\" style=\"color:#1a56db;text-decoration:underline;\">Take a look when you're ready</a>.</p><p style=\"margin:0;\">{{custom_values.owner_first_name}}<br>{{custom_values.business_name}} · {{custom_values.business_phone}}</p></div>"
|
|
343
343
|
},
|
|
344
344
|
{
|
|
345
345
|
"ref": "email_template.n_email_2",
|
|
346
346
|
"name": "Nurture 2 - What People Buy First",
|
|
347
347
|
"subject": "What people buy first (and why)",
|
|
348
|
-
"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 deciding what to try first, here's
|
|
348
|
+
"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 deciding what to try first, here's one simple way to choose at {{custom_values.business_name}}:</p><ul style=\"margin:0 0 14px 20px;padding:0;\"><li style=\"margin:0 0 6px;\">A first pick: something small, if you want to find out what we're about.</li><li style=\"margin:0 0 6px;\">A second pick: the one to try once you trust the fit and quality.</li><li style=\"margin:0 0 6px;\">The gift pick: the one with the fewest \"will they like it?\" risks.</li></ul><p style=\"margin:0 0 14px;\">The worry we hear most is {{audience.objections[0] || \"what if it doesn't work out?\"}}. Simple answer: reply to any email from us if anything goes wrong, and a person answers.</p><p style=\"margin:0 0 14px;\"><a href=\"{{custom_values.store_link}}\" style=\"display:inline-block;background:#1a56db;color:#ffffff;padding:12px 20px;border-radius:6px;text-decoration:none;font-weight:600;\">Browse the store</a></p><p style=\"margin:0;\">{{custom_values.owner_first_name}}<br>{{custom_values.business_name}} · {{custom_values.business_phone}}</p></div>"
|
|
349
349
|
},
|
|
350
350
|
{
|
|
351
351
|
"ref": "email_template.n_email_3",
|
|
352
352
|
"name": "Nurture 3 - Shipping and Returns, Plainly",
|
|
353
353
|
"subject": "Shipping and returns, in plain words",
|
|
354
|
-
"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 you order from any small brand, you should know three things
|
|
354
|
+
"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 you order from any small brand, you should know three things:</p><ul style=\"margin:0 0 14px 20px;padding:0;\"><li style=\"margin:0 0 6px;\">Shipping: check the cost and timing at checkout before you pay.</li><li style=\"margin:0 0 6px;\">Returns: read the returns page before you order.</li><li style=\"margin:0 0 6px;\">Who answers: a person. Reply to any email from us and it lands with someone who can actually fix things.</li></ul><p style=\"margin:0 0 14px;\"><a href=\"{{custom_values.store_link}}\" style=\"display:inline-block;background:#1a56db;color:#ffffff;padding:12px 20px;border-radius:6px;text-decoration:none;font-weight:600;\">Shop with {{custom_values.welcome_code}}</a></p><p style=\"margin:0 0 14px;\">Have a question about sizing, materials or a specific piece? 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>"
|
|
355
355
|
},
|
|
356
356
|
{
|
|
357
357
|
"ref": "email_template.n_email_4",
|
|
358
358
|
"name": "Nurture 4 - Three Questions Before You Buy",
|
|
359
359
|
"subject": "Three questions to ask any small brand",
|
|
360
|
-
"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;\">Whether you buy from us or someone else, ask these three before you check out anywhere:</p><ul style=\"margin:0 0 14px 20px;padding:0;\"><li style=\"margin:0 0 6px;\">What's it made of, and where? (A specific answer. \"Premium materials\" is not one.)</li><li style=\"margin:0 0 6px;\">What happens if it arrives damaged? (Replacement, no argument, is the right answer.)</li><li style=\"margin:0 0 6px;\">Can I reach a human? (Try it before you buy. Send a question and see who replies.)</li></ul><p style=\"margin:0 0 14px;\">
|
|
360
|
+
"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;\">Whether you buy from us or someone else, ask these three before you check out anywhere:</p><ul style=\"margin:0 0 14px 20px;padding:0;\"><li style=\"margin:0 0 6px;\">What's it made of, and where? (A specific answer. \"Premium materials\" is not one.)</li><li style=\"margin:0 0 6px;\">What happens if it arrives damaged? (Replacement, no argument, is the right answer.)</li><li style=\"margin:0 0 6px;\">Can I reach a human? (Try it before you buy. Send a question and see who replies.)</li></ul><p style=\"margin:0 0 14px;\">You can test the third one right now by replying to this email.</p><p style=\"margin:0 0 14px;\"><a href=\"{{custom_values.store_link}}\" style=\"display:inline-block;background:#1a56db;color:#ffffff;padding:12px 20px;border-radius:6px;text-decoration:none;font-weight:600;\">Browse the store</a></p><p style=\"margin:0;\">{{custom_values.owner_first_name}}<br>{{custom_values.business_name}} · {{custom_values.business_phone}}</p></div>"
|
|
361
361
|
},
|
|
362
362
|
{
|
|
363
363
|
"ref": "email_template.n_email_5",
|
|
@@ -369,13 +369,13 @@
|
|
|
369
369
|
"ref": "email_template.n_email_6",
|
|
370
370
|
"name": "Nurture 6 - Everything in One Place",
|
|
371
371
|
"subject": "Everything you need to decide, in one place",
|
|
372
|
-
"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 deciding, here is everything in one place:</p><ul style=\"margin:0 0 14px 20px;padding:0;\"><li style=\"margin:0 0 6px;\">What we make: {{offer.summary || what we make}}, made properly and described honestly.</li><li style=\"margin:0 0 6px;\">
|
|
372
|
+
"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 deciding, here is everything in one place:</p><ul style=\"margin:0 0 14px 20px;padding:0;\"><li style=\"margin:0 0 6px;\">What we make: {{offer.summary || what we make}}, made properly and described honestly.</li><li style=\"margin:0 0 6px;\">Shipping and returns: on the store pages, and a person answers if you reply.</li><li style=\"margin:0 0 6px;\">The store: <a href=\"{{custom_values.store_link}}\" style=\"color:#1a56db;text-decoration:underline;\">{{custom_values.business_name}}</a>.</li></ul><p style=\"margin:0 0 14px;\">If you'd rather hear from us less, reply with the word less and these emails will stop.</p><p style=\"margin:0 0 14px;\"><a href=\"{{custom_values.store_link}}\" style=\"display:inline-block;background:#1a56db;color:#ffffff;padding:12px 20px;border-radius:6px;text-decoration:none;font-weight:600;\">Visit the store</a></p><p style=\"margin:0;\">{{custom_values.owner_first_name}}<br>{{custom_values.business_name}} · {{custom_values.business_phone}}</p></div>"
|
|
373
373
|
},
|
|
374
374
|
{
|
|
375
375
|
"ref": "email_template.w_email_1",
|
|
376
376
|
"name": "Win-back 1 - One Question",
|
|
377
377
|
"subject": "One question, {{contact.first_name}}",
|
|
378
|
-
"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 joined the {{custom_values.business_name}} list a while back and haven't ordered. That's fine
|
|
378
|
+
"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 joined the {{custom_values.business_name}} list a while back and haven't ordered. That's fine.</p><p style=\"margin:0 0 14px;\">One question, and an honest answer is all I need: what stopped you? Price, couldn't find the right thing, timing, or something we said?</p><p style=\"margin:0 0 14px;\">Reply with a word or two. If it's something I can fix, tell me.</p><p style=\"margin:0;\">{{custom_values.owner_first_name}}<br>{{custom_values.business_name}} · {{custom_values.business_phone}}</p></div>"
|
|
379
379
|
},
|
|
380
380
|
{
|
|
381
381
|
"ref": "email_template.w_email_2",
|
|
@@ -393,7 +393,7 @@
|
|
|
393
393
|
"ref": "email_template.r_email_1",
|
|
394
394
|
"name": "Review Request - Email",
|
|
395
395
|
"subject": "A minute of your time, {{contact.first_name}}?",
|
|
396
|
-
"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
|
|
396
|
+
"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>"
|
|
397
397
|
}
|
|
398
398
|
],
|
|
399
399
|
"sms": [
|
|
@@ -430,17 +430,17 @@
|
|
|
430
430
|
{
|
|
431
431
|
"ref": "sms_template.n_sms_2",
|
|
432
432
|
"name": "Nurture Text 2 - Free Tip",
|
|
433
|
-
"body": "Tip from {{custom_values.business_name}}: before you buy {{offer.summary || what we make}} anywhere, read the materials line, not the headline. If it doesn't say what it's made of, that's the answer.
|
|
433
|
+
"body": "Tip from {{custom_values.business_name}}: before you buy {{offer.summary || what we make}} anywhere, read the materials line, not the headline. If it doesn't say what it's made of, that's the answer. Questions? Reply here."
|
|
434
434
|
},
|
|
435
435
|
{
|
|
436
436
|
"ref": "sms_template.n_sms_3",
|
|
437
437
|
"name": "Nurture Text 3 - Midpoint",
|
|
438
|
-
"body": "{{contact.first_name}}, it's {{custom_values.owner_first_name}}. Still deciding?
|
|
438
|
+
"body": "{{contact.first_name}}, it's {{custom_values.owner_first_name}}. Still deciding? Reply if you have a question. Which?"
|
|
439
439
|
},
|
|
440
440
|
{
|
|
441
441
|
"ref": "sms_template.n_sms_4",
|
|
442
442
|
"name": "Nurture Text 4 - Any Question",
|
|
443
|
-
"body": "Hi {{contact.first_name}}, {{custom_values.owner_first_name}} here. No pitch, just checking: any question about sizing, materials or shipping I can answer? Ask it here and I'll reply
|
|
443
|
+
"body": "Hi {{contact.first_name}}, {{custom_values.owner_first_name}} here. No pitch, just checking: any question about sizing, materials or shipping I can answer? Ask it here and I'll reply."
|
|
444
444
|
},
|
|
445
445
|
{
|
|
446
446
|
"ref": "sms_template.n_sms_5",
|
|
@@ -450,7 +450,7 @@
|
|
|
450
450
|
{
|
|
451
451
|
"ref": "sms_template.w_sms_1",
|
|
452
452
|
"name": "Win-back Text 1",
|
|
453
|
-
"body": "Hi {{contact.first_name}}, it's {{custom_values.owner_first_name}} at {{custom_values.business_name}}. Still interested
|
|
453
|
+
"body": "Hi {{contact.first_name}}, it's {{custom_values.owner_first_name}} at {{custom_values.business_name}}. Still interested? Reply 1 if you are.\nReply STOP to opt out."
|
|
454
454
|
},
|
|
455
455
|
{
|
|
456
456
|
"ref": "sms_template.w_sms_2",
|
|
@@ -523,7 +523,7 @@
|
|
|
523
523
|
"name": "Nurture 2 - What People Buy First",
|
|
524
524
|
"subject": "What people buy first (and why)",
|
|
525
525
|
"templateRef": "email_template.n_email_2",
|
|
526
|
-
"copyDirection": "Day 5. The first-order guide: the two or three products most first orders start with and who each suits, from real store data supplied by the brief
|
|
526
|
+
"copyDirection": "Day 5. The first-order guide: the two or three products most first orders start with and who each suits, from real store data supplied by the brief; without it, a simple way to choose, never a claim about what most people buy. Then shipping and returns objection. One CTA.",
|
|
527
527
|
"mergeTags": [
|
|
528
528
|
"contact.first_name",
|
|
529
529
|
"custom_values.business_name",
|
|
@@ -582,7 +582,7 @@
|
|
|
582
582
|
"name": "Nurture 6 - Everything in One Place",
|
|
583
583
|
"subject": "Everything you need to decide, in one place",
|
|
584
584
|
"templateRef": "email_template.n_email_6",
|
|
585
|
-
"copyDirection": "Day 27. The decision sheet: what we make, what to start with, shipping, returns, who answers, the store link. Offer the \"fewer emails\" out. One CTA.",
|
|
585
|
+
"copyDirection": "Day 27. The decision sheet: what we make, what to start with, shipping, returns, who answers, the store link. Offer the \"fewer emails\" out (any reply stops these emails; no other list exists). One CTA.",
|
|
586
586
|
"mergeTags": [
|
|
587
587
|
"contact.first_name",
|
|
588
588
|
"custom_values.store_link",
|
|
@@ -596,7 +596,7 @@
|
|
|
596
596
|
"name": "Win-back 1 - One Question",
|
|
597
597
|
"subject": "One question, {{contact.first_name}}",
|
|
598
598
|
"templateRef": "email_template.w_email_1",
|
|
599
|
-
"copyDirection": "Win-back day 0. Acknowledge no order without guilt; ask the one diagnostic question (price, the right product, timing, something we said);
|
|
599
|
+
"copyDirection": "Win-back day 0. Acknowledge no order without guilt; ask the one diagnostic question (price, the right product, timing, something we said); invite them to say what would help. A reply is the CTA.",
|
|
600
600
|
"mergeTags": [
|
|
601
601
|
"contact.first_name",
|
|
602
602
|
"custom_values.business_name",
|
|
@@ -625,7 +625,7 @@
|
|
|
625
625
|
"name": "Win-back 3 - We'll Quiet Down",
|
|
626
626
|
"subject": "We'll quiet down now",
|
|
627
627
|
"templateRef": "email_template.w_email_3",
|
|
628
|
-
"copyDirection": "Win-back day 30, the last automatic message. Say so,
|
|
628
|
+
"copyDirection": "Win-back day 30, the last automatic message. Say so, one CTA to the store, gracious close.",
|
|
629
629
|
"mergeTags": [
|
|
630
630
|
"contact.first_name",
|
|
631
631
|
"custom_values.business_name",
|
|
@@ -639,7 +639,7 @@
|
|
|
639
639
|
"name": "Review Request - Email",
|
|
640
640
|
"subject": "A minute of your time, {{contact.first_name}}?",
|
|
641
641
|
"templateRef": "email_template.r_email_1",
|
|
642
|
-
"copyDirection": "Three days after the tag. Thank them, invite the complaint first (reply and
|
|
642
|
+
"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.",
|
|
643
643
|
"mergeTags": [
|
|
644
644
|
"contact.first_name",
|
|
645
645
|
"custom_values.business_name",
|
|
@@ -690,7 +690,7 @@
|
|
|
690
690
|
"ref": "sms.mc_sms_1",
|
|
691
691
|
"name": "Missed Call - Instant Text-Back",
|
|
692
692
|
"templateRef": "sms_template.mc_sms_1",
|
|
693
|
-
"copyDirection": "Seconds after a missed inbound call to the support line. Apologize, ask what they need (order / product / return),
|
|
693
|
+
"copyDirection": "Seconds after a missed inbound call to the support line. Apologize, ask what they need (order / product / return), a person reads replies (no call-back time promised), STOP line.",
|
|
694
694
|
"mergeTags": [
|
|
695
695
|
"custom_values.business_name"
|
|
696
696
|
],
|
|
@@ -733,7 +733,7 @@
|
|
|
733
733
|
"ref": "sms.n_sms_3",
|
|
734
734
|
"name": "Nurture Text 3 - Midpoint",
|
|
735
735
|
"templateRef": "sms_template.n_sms_3",
|
|
736
|
-
"copyDirection": "Day 15. Personal; binary:
|
|
736
|
+
"copyDirection": "Day 15. Personal; binary: a question welcome, or fewer texts.",
|
|
737
737
|
"mergeTags": [
|
|
738
738
|
"contact.first_name",
|
|
739
739
|
"custom_values.owner_first_name"
|
|
@@ -768,7 +768,7 @@
|
|
|
768
768
|
"ref": "sms.w_sms_1",
|
|
769
769
|
"name": "Win-back Text 1",
|
|
770
770
|
"templateRef": "sms_template.w_sms_1",
|
|
771
|
-
"copyDirection": "Win-back day 7.
|
|
771
|
+
"copyDirection": "Win-back day 7. Still interested? A reply is the CTA (no new-arrivals list exists). STOP line.",
|
|
772
772
|
"mergeTags": [
|
|
773
773
|
"contact.first_name",
|
|
774
774
|
"custom_values.owner_first_name",
|
|
@@ -918,13 +918,17 @@
|
|
|
918
918
|
"callDirection": "inbound"
|
|
919
919
|
},
|
|
920
920
|
"stopOnResponse": true,
|
|
921
|
-
"_design": "Fires on an inbound call that was not answered (no-answer / busy / voicemail). Texts back within seconds, tags the contact, alerts a real person and creates a call-back task,
|
|
921
|
+
"_design": "Fires on an inbound call that was not answered (no-answer / busy / voicemail). Texts back within seconds, takes the missed-call tag off and puts it back on (so Missed Call - Pipeline Card starts on every missed call, W47), tags the contact, alerts a real person and creates a call-back task. W48 (2026-10-29): allowed to run again on every missed call; the closing 10-minute wait keeps the contact inside it, and GoHighLevel did not start it again for a contact still inside it (live call proof 2026-10-29), so a redial within 10 minutes gets no second text. The hour-later text is its own workflow, Missed Call - Follow-Up.",
|
|
922
922
|
"actions": [
|
|
923
923
|
{
|
|
924
924
|
"type": "send_sms",
|
|
925
925
|
"smsRef": "sms.mc_sms_1",
|
|
926
926
|
"conditionalOn": "channels.sms == true"
|
|
927
927
|
},
|
|
928
|
+
{
|
|
929
|
+
"type": "remove_contact_tag",
|
|
930
|
+
"tagRef": "tag.missed_call"
|
|
931
|
+
},
|
|
928
932
|
{
|
|
929
933
|
"type": "add_contact_tag",
|
|
930
934
|
"tagRef": "tag.missed_call"
|
|
@@ -948,26 +952,21 @@
|
|
|
948
952
|
},
|
|
949
953
|
{
|
|
950
954
|
"type": "wait",
|
|
951
|
-
"value":
|
|
952
|
-
"unit": "
|
|
953
|
-
},
|
|
954
|
-
{
|
|
955
|
-
"type": "send_sms",
|
|
956
|
-
"smsRef": "sms.mc_sms_2",
|
|
957
|
-
"conditionalOn": "channels.sms == true"
|
|
955
|
+
"value": 10,
|
|
956
|
+
"unit": "minutes"
|
|
958
957
|
}
|
|
959
958
|
]
|
|
960
959
|
},
|
|
961
960
|
{
|
|
962
961
|
"ref": "workflow.missed_call_card",
|
|
963
|
-
"allowMultiple":
|
|
962
|
+
"allowMultiple": true,
|
|
964
963
|
"name": "Missed Call - Pipeline Card",
|
|
965
964
|
"conditionalOn": "channels.sms == true",
|
|
966
965
|
"trigger": {
|
|
967
966
|
"type": "contact_tag",
|
|
968
967
|
"tagRef": "tag.missed_call"
|
|
969
968
|
},
|
|
970
|
-
"_design": "
|
|
969
|
+
"_design": "W47 (2026-10-29 live call proof): started by the missed-call tag being added, and allowed to run again. The text-back takes the tag off and puts it straight back on every missed call, so the tag is newly added each time and a repeat caller is checked again (a contact who already had the tag, with re-entry off, never reached this workflow). A caller with no card in this pipeline gets one at the first stage, an owner and the new-lead tag, as a form lead does in Speed to Lead. A caller who already has a card in this pipeline keeps it and is tagged returning-caller. Not yet proven live: whether a closed (won or lost) card counts as found; Find Opportunity reads the latest card in the pipeline and the build sets no status filter. Started by the tag, not the call, because a shared account gates call-started workflows with an If/Else, and find_opportunity must be the last step and cannot sit inside one.",
|
|
971
970
|
"actions": [
|
|
972
971
|
{
|
|
973
972
|
"type": "find_opportunity",
|
|
@@ -997,6 +996,35 @@
|
|
|
997
996
|
}
|
|
998
997
|
]
|
|
999
998
|
},
|
|
999
|
+
{
|
|
1000
|
+
"ref": "workflow.missed_call_follow_up",
|
|
1001
|
+
"allowMultiple": true,
|
|
1002
|
+
"name": "Missed Call - Follow-Up",
|
|
1003
|
+
"conditionalOn": "channels.sms == true",
|
|
1004
|
+
"trigger": {
|
|
1005
|
+
"type": "call_status",
|
|
1006
|
+
"callStatuses": [
|
|
1007
|
+
"no-answer",
|
|
1008
|
+
"busy",
|
|
1009
|
+
"voicemail"
|
|
1010
|
+
],
|
|
1011
|
+
"callDirection": "inbound"
|
|
1012
|
+
},
|
|
1013
|
+
"stopOnResponse": true,
|
|
1014
|
+
"_design": "W48 (2026-10-29): the hour-later text, split from the instant text-back so a second missed call inside the hour still gets an instant reply. Started by the same missed call; a redial while a contact is still waiting here gets no second follow-up. Stops the moment they reply.",
|
|
1015
|
+
"actions": [
|
|
1016
|
+
{
|
|
1017
|
+
"type": "wait",
|
|
1018
|
+
"value": 1,
|
|
1019
|
+
"unit": "hours"
|
|
1020
|
+
},
|
|
1021
|
+
{
|
|
1022
|
+
"type": "send_sms",
|
|
1023
|
+
"smsRef": "sms.mc_sms_2",
|
|
1024
|
+
"conditionalOn": "channels.sms == true"
|
|
1025
|
+
}
|
|
1026
|
+
]
|
|
1027
|
+
},
|
|
1000
1028
|
{
|
|
1001
1029
|
"ref": "workflow.lead_nurture",
|
|
1002
1030
|
"allowMultiple": false,
|
|
@@ -1158,6 +1186,11 @@
|
|
|
1158
1186
|
"workflowRef": "workflow.missed_call",
|
|
1159
1187
|
"conditionalOn": "channels.sms == true"
|
|
1160
1188
|
},
|
|
1189
|
+
{
|
|
1190
|
+
"type": "remove_from_workflow",
|
|
1191
|
+
"workflowRef": "workflow.missed_call_follow_up",
|
|
1192
|
+
"conditionalOn": "channels.sms == true"
|
|
1193
|
+
},
|
|
1161
1194
|
{
|
|
1162
1195
|
"type": "remove_from_workflow",
|
|
1163
1196
|
"workflowRef": "workflow.lead_nurture"
|
|
@@ -1343,6 +1376,7 @@
|
|
|
1343
1376
|
"blocks": [
|
|
1344
1377
|
"workflow.speed_to_lead",
|
|
1345
1378
|
"workflow.missed_call",
|
|
1379
|
+
"workflow.missed_call_follow_up",
|
|
1346
1380
|
"workflow.lead_nurture",
|
|
1347
1381
|
"workflow.win_back"
|
|
1348
1382
|
]
|
|
@@ -1371,6 +1405,7 @@
|
|
|
1371
1405
|
"blocks": [
|
|
1372
1406
|
"workflow.speed_to_lead",
|
|
1373
1407
|
"workflow.missed_call",
|
|
1408
|
+
"workflow.missed_call_follow_up",
|
|
1374
1409
|
"workflow.lead_nurture",
|
|
1375
1410
|
"workflow.win_back",
|
|
1376
1411
|
"sms.stl_sms_1",
|
|
@@ -1391,6 +1426,18 @@
|
|
|
1391
1426
|
],
|
|
1392
1427
|
"_blocksNote": "Lists every SMS-bearing WORKFLOW ref (so they stay DRAFT) plus the sms.* asset refs. After conditional pruning, drop any entry whose workflow/asset was removed."
|
|
1393
1428
|
},
|
|
1429
|
+
{
|
|
1430
|
+
"ref": "handoff.stop_line_check",
|
|
1431
|
+
"conditionalOn": "channels.sms == true",
|
|
1432
|
+
"owner": "OPERATOR-UI",
|
|
1433
|
+
"title": "Check whether the account adds its own Reply STOP line",
|
|
1434
|
+
"trigger": "channels.sms == true",
|
|
1435
|
+
"instruction": "Your GoHighLevel account may already add its own 'Reply STOP' line to the first text each contact gets. If it does, a contact may see the opt-out line twice on that first text. That is safe. Remove the build's own line from a text only if you are sure the account's own line is switched on.",
|
|
1436
|
+
"produces": null,
|
|
1437
|
+
"successCheck": "You know whether the account adds its own Reply STOP line to first texts",
|
|
1438
|
+
"blocks": [],
|
|
1439
|
+
"_design": "W49 (command-center ruling 2026-10-30): a doubled opt-out line is cosmetic, a missing one is a compliance failure, so the build keeps its own STOP line and says so. No settings path is named because none has been seen on screen; the setting is to be checked live later."
|
|
1440
|
+
},
|
|
1394
1441
|
{
|
|
1395
1442
|
"ref": "handoff.welcome_code",
|
|
1396
1443
|
"owner": "OPERATOR-EXT",
|