@elitedcs/ghl-mcp 3.71.0 → 3.72.0
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 +34 -0
- package/README.md +4 -4
- package/dist/capture-helper.js +10 -1
- package/dist/index.js +9078 -3211
- package/guide/guide.html +2 -1
- package/package.json +2 -2
- package/skills/blueprint/SKILL.md +2 -0
- package/skills/blueprint/examples/medspa-approval-view.md +58 -53
- package/skills/blueprint/examples/medspa-brief.json +70 -8
- package/skills/blueprint/examples/medspa-build-plan.json +1435 -123
- package/skills/blueprint/examples/medspa-dry-run-report.md +2 -0
- package/skills/blueprint/examples/sample-approval-view.md +20 -61
- package/skills/blueprint/examples/sample-brief.json +95 -7
- package/skills/blueprint/examples/sample-build-plan.json +1448 -119
- package/skills/blueprint/examples/validate-plan.cjs +195 -13
- package/skills/blueprint/presets/clinic-launch-a2p.preset.json +1 -0
- package/skills/blueprint/presets/clinic.md +60 -0
- package/skills/blueprint/presets/clinic.preset.json +1737 -0
- package/skills/blueprint/presets/coach.md +58 -0
- package/skills/blueprint/presets/coach.preset.json +1723 -0
- package/skills/blueprint/presets/ecommerce.md +54 -0
- package/skills/blueprint/presets/ecommerce.preset.json +1287 -0
- package/skills/blueprint/presets/generic-client.md +49 -27
- package/skills/blueprint/presets/generic-client.preset.json +1552 -122
- package/skills/blueprint/presets/local-service.md +58 -0
- package/skills/blueprint/presets/local-service.preset.json +1733 -0
- package/skills/blueprint/presets/med-spa.md +47 -48
- package/skills/blueprint/presets/med-spa.preset.json +1557 -111
- package/skills/blueprint/references/brief-schema.md +48 -1
- package/skills/blueprint/references/build-plan-schema.md +66 -5
- package/skills/blueprint/references/copy-guide.md +167 -0
- package/skills/blueprint/references/intake-question-set.md +64 -3
- package/skills/blueprint/references/preset-format.md +97 -51
- package/templates/action-schemas.json +12 -0
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# Preset: Ecommerce
|
|
2
|
+
|
|
3
|
+
**File:** `ecommerce.preset.json` · **id:** `ecom` · **version:** 2.0.0 · **default:** no
|
|
4
|
+
**Source:** Built from the intake industry pack "ecommerce" (store_platform, aov, abandoned_cart) and the welcome-series pattern; v2 depth per the owner review of 2026-08-26.
|
|
5
|
+
|
|
6
|
+
## When it is selected
|
|
7
|
+
Routes from the "Ecommerce" business type (online store, Shopify store, DTC brand) and the `ecom` / `ecommerce` / `online_store` / `shopify` / `dtc` aliases.
|
|
8
|
+
|
|
9
|
+
## What it builds (skeleton, v2 depth)
|
|
10
|
+
- **Users** — one per `brief.team.staff[]` entry. Every alert, task and assignment step points at a `userRef`; in the skeleton that is the role placeholder `user.owner`, resolved at fill time from `team.notifyName` (alerts) and `team.callsName` (tasks, assignment). No staff yet → the steps stay, pointed at `user.__pending__`, and the build reports them as waiting.
|
|
11
|
+
- **1 pipeline** — "Store Leads": New Subscriber → Engaged → First Order → Repeat Customer → VIP → Lapsed. Overridden by `goal.salesStages` when the brief supplies them.
|
|
12
|
+
- **6 custom fields** — Lead Source, Shopping For, Welcome Code Used, Last Order Value, Last Order Date, Lifetime Value.
|
|
13
|
+
- **22 tags** — source, lifecycle, the hand-off trigger tags (`nurture-start`, `winback-start`, `missed-call`), and interest tags mirrored from the interest field.
|
|
14
|
+
- **6 custom values** — business_name, business_phone, owner_first_name, store_link, welcome_code, code_expiry_days. Every message reads business name / phone / signature / links from these, so the copy stays right when details change.
|
|
15
|
+
- **No calendar** — this preset does not book appointments; the Speed to Lead and nurture sequences drive replies and orders instead.
|
|
16
|
+
- **1 intake form + 1 funnel** — "VIP List Signup" (first name, email, phone, what they are shopping for) and a Join the VIP List landing page (the welcome code, what the list gets, A2P consent block) plus a Thank You page that shows the code and links to the store.
|
|
17
|
+
- **11 email + 12 SMS templates** — complete, send-ready copy written to `references/copy-guide.md`. The build stage rewrites every one from the real brief (offer, pain points, objections, prices, lead magnet) and keeps the cadence, the single CTA and the merge fields.
|
|
18
|
+
- **5 workflows, 23 customer touches** — see the table.
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
## Workflows
|
|
22
|
+
|
|
23
|
+
| Workflow | Trigger | Actions | Touches | Span of waits | Stops on reply |
|
|
24
|
+
|---|---|---|---|---|---|
|
|
25
|
+
| Speed to Lead | form_submission | 15 | 5 | 1.1 days | yes |
|
|
26
|
+
| Missed Call Text-Back | call_status (missed: no-answer/busy/voicemail) | 7 | 2 | 1 h | yes |
|
|
27
|
+
| Lead Nurture (30 days) | contact_tag (tag.nurture_start) | 28 | 11 | 31 days | yes |
|
|
28
|
+
| Replied - Stop & Route | customer_reply | 8 | 0 | instant | no |
|
|
29
|
+
| Win-back (30 days) | contact_tag (tag.winback_start) | 13 | 5 | 31 days | yes |
|
|
30
|
+
|
|
31
|
+
- **Speed to Lead** (15 actions): instant text + email, opportunity card, the contact assigned to whoever takes calls, alert to a real person, a call task due today, a 2nd touch at 20 minutes, a 3rd at 3 hours, a 4th and 5th by the next day, then the hand-off tag `nurture-start` as the last action.
|
|
32
|
+
- **Lead Nurture** (28 actions, 11 touches, 31 days of waits): give, give, ask. Ends with `lifecycle-lapsed` + the `winback-start` hand-off.
|
|
33
|
+
- **Win-back** (13 actions, 5 touches, 31 days of waits): one reason to come back per message, then `lifecycle-lost`.
|
|
34
|
+
- **Replied - Stop & Route**: the exit workflow. Pulls the contact out of every sequence, notes it, marks contacted, alerts a person and creates a 15-minute reply task.
|
|
35
|
+
- **Missed Call Text-Back**: `call_status` trigger scoped to no-answer / busy / voicemail, inbound. Text within seconds, tag, alert, call-back task, one more text an hour later.
|
|
36
|
+
|
|
37
|
+
### Why sequences hand off with a tag, not add_to_workflow
|
|
38
|
+
Every hand-off is `add_contact_tag` + a `contact_tag` trigger. Both halves are live-proven shapes captured from working GHL workflows (`templates/action-schemas.json`). `add_to_workflow` has no captured native shape there and has not been proven at runtime, so a preset may not use it. Each sequence removes its own trigger tag as its first action so a later hand-off can start it again.
|
|
39
|
+
|
|
40
|
+
## How the brief shapes it
|
|
41
|
+
| Brief signal | Effect |
|
|
42
|
+
|---|---|
|
|
43
|
+
| `goal.salesStages` present | replaces the default pipeline stages (workflow stage refs are mapped to the nearest equivalent) |
|
|
44
|
+
| `channels.sms == true` | keeps SMS templates, the send_sms actions, Missed Call Text-Back and the A2P gating; otherwise they drop (the email-only nurture still spans 31 days) |
|
|
45
|
+
| staff answers present | fills `users`; every `userRef` resolves to a real person |
|
|
46
|
+
| staff empty | every `userRef` → `user.__pending__`; the steps stay; `handoff.add_staff` holds those workflows DRAFT |
|
|
47
|
+
| `flags` | `needs_a2p` / `stripe_not_connected` / `calendar_oauth_needed` / `email_domain_needed` add the matching handoff |
|
|
48
|
+
| `business.name`, `offer.*`, `audience.*`, `extended.*` | fill object names, custom values and ground every template rewrite |
|
|
49
|
+
|
|
50
|
+
## Order events
|
|
51
|
+
GHL does not see store orders on its own. `handoff.store_orders` connects the store (Shopify integration or an order webhook) so a purchase moves the pipeline card to First Order and stops the nurture; until then, staff move cards by hand. Abandoned-cart recovery is a store-side flow and is out of scope for this preset.
|
|
52
|
+
|
|
53
|
+
## Copy notes
|
|
54
|
+
Built for a subscriber who gave an email for a code and is deciding whether to use it. The instant touches deliver the code and ask one question (what are you shopping for). The nurture earns the order: how to choose the right one, why we make it, what people buy first, shipping and returns in plain words, the three questions before buying from any small brand, the code expiring (a real expiry the operator sets), the decision sheet. Win-back is "one question" then a fresh code. Reviews and best-seller claims are placeholders the build stage fills only from real store data.
|