@elitedcs/ghl-mcp 3.89.0-beta.4 → 3.89.0-beta.5
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 +106 -0
- package/README.md +1 -1
- package/dist/index.js +3632 -826
- package/package.json +1 -1
- package/skills/blueprint/examples/validate-plan.cjs +15 -9
- package/skills/blueprint/presets/clinic.preset.json +64 -11
- package/skills/blueprint/presets/coach.preset.json +24 -5
- package/skills/blueprint/presets/ecommerce.preset.json +8 -2
- package/skills/blueprint/presets/generic-client.preset.json +22 -3
- package/skills/blueprint/presets/local-service.preset.json +22 -3
- package/skills/blueprint/presets/med-spa.preset.json +24 -5
- package/skills/blueprint/presets/wellness-clinic.md +1 -1
- package/skills/blueprint/presets/wellness-clinic.preset.json +479 -102
- package/skills/blueprint/references/preset-format.md +1 -1
|
@@ -58,7 +58,7 @@
|
|
|
58
58
|
},
|
|
59
59
|
{
|
|
60
60
|
"ref": "stage.contacted",
|
|
61
|
-
"aliases": ["contacted", "engaged", "in conversation", "qualified", "follow up"],
|
|
61
|
+
"aliases": ["contacted", "engaged", "in conversation", "qualified", "follow up", "working"],
|
|
62
62
|
"name": "Contacted"
|
|
63
63
|
},
|
|
64
64
|
{
|
|
@@ -283,7 +283,7 @@
|
|
|
283
283
|
{
|
|
284
284
|
"ref": "tag.service_done",
|
|
285
285
|
"name": "service-complete",
|
|
286
|
-
"_note": "Added when the work is done and paid for. Starts Review Request; removed by it
|
|
286
|
+
"_note": "Added when the work is done and paid for. Starts Review Request; removed by it. Each contact is asked for a review once."
|
|
287
287
|
}
|
|
288
288
|
],
|
|
289
289
|
"_tagNote": "Interest tags mirror the Service Needed options. The skill derives trade-specific ones from offer.summary (e.g. interest-roof-replacement) at fill time.",
|
|
@@ -1083,6 +1083,7 @@
|
|
|
1083
1083
|
"workflows": [
|
|
1084
1084
|
{
|
|
1085
1085
|
"ref": "workflow.speed_to_lead",
|
|
1086
|
+
"allowMultiple": false,
|
|
1086
1087
|
"name": "Speed to Lead",
|
|
1087
1088
|
"trigger": {
|
|
1088
1089
|
"type": "form_submission",
|
|
@@ -1168,6 +1169,7 @@
|
|
|
1168
1169
|
},
|
|
1169
1170
|
{
|
|
1170
1171
|
"ref": "workflow.missed_call",
|
|
1172
|
+
"allowMultiple": true,
|
|
1171
1173
|
"name": "Missed Call Text-Back",
|
|
1172
1174
|
"conditionalOn": "channels.sms == true",
|
|
1173
1175
|
"trigger": {
|
|
@@ -1222,13 +1224,14 @@
|
|
|
1222
1224
|
},
|
|
1223
1225
|
{
|
|
1224
1226
|
"ref": "workflow.lead_nurture",
|
|
1227
|
+
"allowMultiple": false,
|
|
1225
1228
|
"name": "Lead Nurture (30 days)",
|
|
1226
1229
|
"trigger": {
|
|
1227
1230
|
"type": "contact_tag",
|
|
1228
1231
|
"tagRef": "tag.nurture_start"
|
|
1229
1232
|
},
|
|
1230
1233
|
"stopOnResponse": true,
|
|
1231
|
-
"_design": "Starts from the Speed to Lead hand-off tag. 11 touches (6 emails + 5 texts) across 31 days of waits: give, give, ask. Removes its own trigger tag first
|
|
1234
|
+
"_design": "Starts from the Speed to Lead hand-off tag. 11 touches (6 emails + 5 texts) across 31 days of waits: give, give, ask. Removes its own trigger tag first; each contact goes through it once (re-entry off). Ends by tagging lapsed and handing off to Win-back. Any reply stops it (stopOnResponse) and Replied - Stop & Route takes over.",
|
|
1232
1235
|
"actions": [
|
|
1233
1236
|
{
|
|
1234
1237
|
"type": "remove_contact_tag",
|
|
@@ -1363,6 +1366,7 @@
|
|
|
1363
1366
|
},
|
|
1364
1367
|
{
|
|
1365
1368
|
"ref": "workflow.reply_route",
|
|
1369
|
+
"allowMultiple": true,
|
|
1366
1370
|
"name": "Replied - Stop & Route",
|
|
1367
1371
|
"trigger": {
|
|
1368
1372
|
"type": "customer_reply"
|
|
@@ -1417,6 +1421,7 @@
|
|
|
1417
1421
|
},
|
|
1418
1422
|
{
|
|
1419
1423
|
"ref": "workflow.win_back",
|
|
1424
|
+
"allowMultiple": false,
|
|
1420
1425
|
"name": "Win-back (30 days)",
|
|
1421
1426
|
"trigger": {
|
|
1422
1427
|
"type": "contact_tag",
|
|
@@ -1488,6 +1493,7 @@
|
|
|
1488
1493
|
},
|
|
1489
1494
|
{
|
|
1490
1495
|
"ref": "workflow.appointment_booked",
|
|
1496
|
+
"allowMultiple": true,
|
|
1491
1497
|
"name": "Estimate Booked - Confirm & Move",
|
|
1492
1498
|
"trigger": {
|
|
1493
1499
|
"type": "appointment",
|
|
@@ -1509,6 +1515,15 @@
|
|
|
1509
1515
|
"type": "remove_from_workflow",
|
|
1510
1516
|
"workflowRef": "workflow.win_back"
|
|
1511
1517
|
},
|
|
1518
|
+
{
|
|
1519
|
+
"type": "remove_from_workflow",
|
|
1520
|
+
"workflowRef": "workflow.no_show"
|
|
1521
|
+
},
|
|
1522
|
+
{
|
|
1523
|
+
"type": "remove_from_workflow",
|
|
1524
|
+
"workflowRef": "workflow.missed_call",
|
|
1525
|
+
"conditionalOn": "channels.sms == true"
|
|
1526
|
+
},
|
|
1512
1527
|
{
|
|
1513
1528
|
"type": "add_contact_tag",
|
|
1514
1529
|
"tagRef": "tag.lc_booked"
|
|
@@ -1552,6 +1567,7 @@
|
|
|
1552
1567
|
},
|
|
1553
1568
|
{
|
|
1554
1569
|
"ref": "workflow.appointment_reminders",
|
|
1570
|
+
"allowMultiple": true,
|
|
1555
1571
|
"name": "Estimate Reminders",
|
|
1556
1572
|
"trigger": {
|
|
1557
1573
|
"type": "appointment",
|
|
@@ -1590,6 +1606,7 @@
|
|
|
1590
1606
|
},
|
|
1591
1607
|
{
|
|
1592
1608
|
"ref": "workflow.no_show",
|
|
1609
|
+
"allowMultiple": true,
|
|
1593
1610
|
"stagePreference": { "stage.contacted": ["no show", "noshow", "missed appointment", "did not show"] },
|
|
1594
1611
|
"name": "No-Show Rescue",
|
|
1595
1612
|
"trigger": {
|
|
@@ -1679,6 +1696,7 @@
|
|
|
1679
1696
|
},
|
|
1680
1697
|
{
|
|
1681
1698
|
"ref": "workflow.quote_follow_up",
|
|
1699
|
+
"allowMultiple": true,
|
|
1682
1700
|
"name": "Quote Follow-up",
|
|
1683
1701
|
"trigger": {
|
|
1684
1702
|
"type": "contact_tag",
|
|
@@ -1740,6 +1758,7 @@
|
|
|
1740
1758
|
},
|
|
1741
1759
|
{
|
|
1742
1760
|
"ref": "workflow.review_request",
|
|
1761
|
+
"allowMultiple": false,
|
|
1743
1762
|
"name": "Review Request",
|
|
1744
1763
|
"trigger": {
|
|
1745
1764
|
"type": "contact_tag",
|
|
@@ -54,18 +54,18 @@
|
|
|
54
54
|
},
|
|
55
55
|
{
|
|
56
56
|
"ref": "stage.contacted",
|
|
57
|
-
"aliases": ["contacted", "engaged", "in conversation", "qualified", "follow up"],
|
|
57
|
+
"aliases": ["contacted", "engaged", "in conversation", "qualified", "follow up", "working"],
|
|
58
58
|
"name": "Contacted"
|
|
59
59
|
},
|
|
60
60
|
{
|
|
61
61
|
"ref": "stage.consult_booked",
|
|
62
|
-
"aliases": ["consult booked", "consultation booked", "trial booked", "appointment booked", "booked", "scheduled"],
|
|
62
|
+
"aliases": ["consult booked", "consultation booked", "trial booked", "appointment booked", "booked", "scheduled", "=consultation"],
|
|
63
63
|
"name": "Consult Booked",
|
|
64
64
|
"conditionalOn": "goal.bookingNeeded == true"
|
|
65
65
|
},
|
|
66
66
|
{
|
|
67
67
|
"ref": "stage.showed",
|
|
68
|
-
"aliases": ["showed", "trial showed", "consult completed", "attended"],
|
|
68
|
+
"aliases": ["showed", "trial showed", "consult completed", "attended", "consultation completed", "consultation done", "consultation attended", "consultation showed", "consultation complete", "consultation held"],
|
|
69
69
|
"name": "Showed",
|
|
70
70
|
"conditionalOn": "goal.bookingNeeded == true"
|
|
71
71
|
},
|
|
@@ -269,7 +269,7 @@
|
|
|
269
269
|
{
|
|
270
270
|
"ref": "tag.service_done",
|
|
271
271
|
"name": "service-complete",
|
|
272
|
-
"_note": "Added when the work is done and paid for. Starts Review Request; removed by it
|
|
272
|
+
"_note": "Added when the work is done and paid for. Starts Review Request; removed by it. Each contact is asked for a review once."
|
|
273
273
|
}
|
|
274
274
|
],
|
|
275
275
|
"_tagNote": "The skill derives interest-<x> tags from offer.summary at fill time (injectables / filler / facials / membership for a med spa) and mirrors them onto the Service Interest field options. Declared here so they are reviewable.",
|
|
@@ -1059,6 +1059,7 @@
|
|
|
1059
1059
|
"workflows": [
|
|
1060
1060
|
{
|
|
1061
1061
|
"ref": "workflow.speed_to_lead",
|
|
1062
|
+
"allowMultiple": false,
|
|
1062
1063
|
"name": "Speed to Lead",
|
|
1063
1064
|
"trigger": {
|
|
1064
1065
|
"type": "form_submission",
|
|
@@ -1144,6 +1145,7 @@
|
|
|
1144
1145
|
},
|
|
1145
1146
|
{
|
|
1146
1147
|
"ref": "workflow.missed_call",
|
|
1148
|
+
"allowMultiple": true,
|
|
1147
1149
|
"name": "Missed Call Text-Back",
|
|
1148
1150
|
"conditionalOn": "channels.sms == true",
|
|
1149
1151
|
"trigger": {
|
|
@@ -1198,13 +1200,14 @@
|
|
|
1198
1200
|
},
|
|
1199
1201
|
{
|
|
1200
1202
|
"ref": "workflow.lead_nurture",
|
|
1203
|
+
"allowMultiple": false,
|
|
1201
1204
|
"name": "Lead Nurture (30 days)",
|
|
1202
1205
|
"trigger": {
|
|
1203
1206
|
"type": "contact_tag",
|
|
1204
1207
|
"tagRef": "tag.nurture_start"
|
|
1205
1208
|
},
|
|
1206
1209
|
"stopOnResponse": true,
|
|
1207
|
-
"_design": "Starts from the Speed to Lead hand-off tag. 11 touches (6 emails + 5 texts) across 31 days of waits: give, give, ask. Removes its own trigger tag first
|
|
1210
|
+
"_design": "Starts from the Speed to Lead hand-off tag. 11 touches (6 emails + 5 texts) across 31 days of waits: give, give, ask. Removes its own trigger tag first; each contact goes through it once (re-entry off). Ends by tagging lapsed and handing off to Win-back. Any reply stops it (stopOnResponse) and Replied - Stop & Route takes over.",
|
|
1208
1211
|
"actions": [
|
|
1209
1212
|
{
|
|
1210
1213
|
"type": "remove_contact_tag",
|
|
@@ -1339,6 +1342,7 @@
|
|
|
1339
1342
|
},
|
|
1340
1343
|
{
|
|
1341
1344
|
"ref": "workflow.reply_route",
|
|
1345
|
+
"allowMultiple": true,
|
|
1342
1346
|
"name": "Replied - Stop & Route",
|
|
1343
1347
|
"trigger": {
|
|
1344
1348
|
"type": "customer_reply"
|
|
@@ -1393,6 +1397,7 @@
|
|
|
1393
1397
|
},
|
|
1394
1398
|
{
|
|
1395
1399
|
"ref": "workflow.win_back",
|
|
1400
|
+
"allowMultiple": false,
|
|
1396
1401
|
"name": "Win-back (30 days)",
|
|
1397
1402
|
"trigger": {
|
|
1398
1403
|
"type": "contact_tag",
|
|
@@ -1464,6 +1469,7 @@
|
|
|
1464
1469
|
},
|
|
1465
1470
|
{
|
|
1466
1471
|
"ref": "workflow.appointment_booked",
|
|
1472
|
+
"allowMultiple": true,
|
|
1467
1473
|
"name": "Consult Booked - Confirm & Move",
|
|
1468
1474
|
"trigger": {
|
|
1469
1475
|
"type": "appointment",
|
|
@@ -1485,6 +1491,15 @@
|
|
|
1485
1491
|
"type": "remove_from_workflow",
|
|
1486
1492
|
"workflowRef": "workflow.win_back"
|
|
1487
1493
|
},
|
|
1494
|
+
{
|
|
1495
|
+
"type": "remove_from_workflow",
|
|
1496
|
+
"workflowRef": "workflow.no_show"
|
|
1497
|
+
},
|
|
1498
|
+
{
|
|
1499
|
+
"type": "remove_from_workflow",
|
|
1500
|
+
"workflowRef": "workflow.missed_call",
|
|
1501
|
+
"conditionalOn": "channels.sms == true"
|
|
1502
|
+
},
|
|
1488
1503
|
{
|
|
1489
1504
|
"type": "add_contact_tag",
|
|
1490
1505
|
"tagRef": "tag.lc_booked"
|
|
@@ -1528,6 +1543,7 @@
|
|
|
1528
1543
|
},
|
|
1529
1544
|
{
|
|
1530
1545
|
"ref": "workflow.appointment_reminders",
|
|
1546
|
+
"allowMultiple": true,
|
|
1531
1547
|
"name": "Consult Reminders",
|
|
1532
1548
|
"trigger": {
|
|
1533
1549
|
"type": "appointment",
|
|
@@ -1566,6 +1582,7 @@
|
|
|
1566
1582
|
},
|
|
1567
1583
|
{
|
|
1568
1584
|
"ref": "workflow.no_show",
|
|
1585
|
+
"allowMultiple": true,
|
|
1569
1586
|
"stagePreference": { "stage.contacted": ["no show", "noshow", "missed appointment", "did not show"] },
|
|
1570
1587
|
"name": "No-Show Rescue",
|
|
1571
1588
|
"trigger": {
|
|
@@ -1655,6 +1672,7 @@
|
|
|
1655
1672
|
},
|
|
1656
1673
|
{
|
|
1657
1674
|
"ref": "workflow.quote_follow_up",
|
|
1675
|
+
"allowMultiple": true,
|
|
1658
1676
|
"name": "Quote Follow-up",
|
|
1659
1677
|
"trigger": {
|
|
1660
1678
|
"type": "contact_tag",
|
|
@@ -1716,6 +1734,7 @@
|
|
|
1716
1734
|
},
|
|
1717
1735
|
{
|
|
1718
1736
|
"ref": "workflow.review_request",
|
|
1737
|
+
"allowMultiple": false,
|
|
1719
1738
|
"name": "Review Request",
|
|
1720
1739
|
"trigger": {
|
|
1721
1740
|
"type": "contact_tag",
|
|
@@ -12,7 +12,7 @@ The cockpit industry **Wellness clinic** (`wellness-clinic`), the business types
|
|
|
12
12
|
- **36 tags, 17 custom values** (trial name, price, deposit, balance, balance link, address, programs; spots left and capacity only with the `launch_event` flag).
|
|
13
13
|
- **Trial calendar:** the calendar answer's length, else the intake's visit length, else 90 minutes; 24 hours' minimum notice, 1 per slot, the daily cap from the intake, and the clinic's screening text as its description. The deposit is a calendar payment product set in the UI (`handoff.deposit_product`). An optional 30-minute Program Consult calendar is built only when `goal.programConsult` is true.
|
|
14
14
|
- **Trial Request form:** name, email, optional phone, service interest, body focus, two consent boxes.
|
|
15
|
-
- **13 emails,
|
|
15
|
+
- **13 emails, 50 texts, 19 workflows.** A trial price of 0 or Free uses free-trial wording with no price, deposit or balance. A deposit or balance of 0, none or blank counts as none: the deposit-free texts and emails go instead, and the balance workflows, tags and hand-offs are not built. Scarcity or exclusivity wording ("a set number of trial visits a week", "fill up most weeks", "a small number of spots", "before anyone else") is said only when the intake answers Yes to "Do trial spots really run out most weeks?". A No or a blank answer gets the plain version of each of those texts, including the first win-back text. The day-before reminder already asks the client to come 10 minutes early, so the intake's prep question asks only for anything besides that.
|
|
16
16
|
|
|
17
17
|
## Workflows
|
|
18
18
|
|