← Operating Docs · PV Subaccount Setup

GHL Workflows Build Guide — PostureVision Subaccount

Subaccount: Posture Vision (Fort Myers, FL) Location ID: wvQwMzyXRjFdLc5UInJZ Workflows URL: https://app.gohighlevel.com/v2/location/wvQwMzyXRjFdLc5UInJZ/automation/workflows Build time: ~30 min for all 3 workflows Date: May 18, 2026


What we're building

  1. PV - Foundation Cohort Outreach — 5-touch insider campaign May 24–Jun 8 (300 patients)
  2. PV - Slot Decision Webhook — round-trip to lead-seg-worker for calendar uncertainty
  3. PV - Foundation Cohort Conversion Hook — Stripe → tag + counter increment + Pushover

Plus 2 optional support builds: 4. PV AI Conversational Agent — paste system prompt 5. Custom fields setup — counters + flags Workflows 1 + 3 need

Do them in this order — 4 prerequisites first, then workflows that depend on them.


Step 0 — Prerequisites (do these FIRST)

0a. Create 3 custom fields

Settings → Custom Fields → Add Field

Field name Type Used by
foundation_cohort_count Numeric Workflow 3 increments on each conversion
foundation_cohort_locked Single checkbox Workflow 3 flips to TRUE on conversion
foundation_cohort_lapsed Single checkbox Workflow 1 flips to TRUE on June 8 if not converted

0b. Create 3 tags (Settings → Tags → Add Tag)

0c. Bulk-tag the 300 patients

Contacts → All Contacts → filter to your patient list (probably by source = "Patient" or by date range matching when they were in your clinic). Select all → Bulk Actions → Add Tag → foundation-cohort-2026.

⚠️ Critical: do this before May 24 10:00 AM ET. The tag is the trigger.


Workflow 1 — PV - Foundation Cohort Outreach

Create the shell

  1. Click + Create Workflow (top right)
  2. Pick Start from scratch (NOT a recipe)
  3. Name: PV - Foundation Cohort Outreach
  4. Save

Add the trigger

  1. Click + Add New Trigger
  2. Pick Contact Tag → Added
  3. Tag = foundation-cohort-2026
  4. Save trigger

Add the actions (in order)

Action 1 — Wait until May 24, 10:00 AM ET

Action 2 — Email (Touch 1)

Action 3 — Wait 2 hours

Action 4 — If/Else: Email opened?

Action 5 (NO branch only) — Send SMS

Action 6 — Wait until May 27, 9:00 AM ET

Action 7 — Email (Touch 2)

Action 8 — Wait until May 29, 8:00 AM ET

Action 9 — Email (Touch 3, the offer)

Action 10 — Wait 9 hours

Action 11 — If/Else: Email opened AND tag foundation-cohort-converted not added?

Action 12 (YES branch only) — SMS

Action 13 — Wait until June 1, 7:00 AM ET

Action 14 — Email (Touch 4, launch day)

Action 15 — Wait until June 4, 10:00 AM ET

Action 16 — If/Else: tag foundation-cohort-converted NOT added AND foundation_cohort_count < 30?

Action 17 (YES branch only) — Email (Touch 5, closing)

Action 18 — Wait until June 8, 11:59 PM ET

Action 19 — If/Else: tag foundation-cohort-converted NOT added?

Action 20 (YES branch only) — Apply tag foundation-cohort-lapsed

Action 21 — Remove tag foundation-cohort-2026

Action 22 — End workflow

Publish

  1. Top right → Status toggle → ON / Publish
  2. Confirm enrollment rules: "Enroll new contacts when trigger fires" = ON, "Re-enroll when trigger fires again" = OFF

Workflow 2 — PV - Slot Decision Webhook

This one rides on top of GHL's AI Agent. The agent classifies inbound conversations; when it detects "patient is asking for a specific time slot and we need Brian's call," it fires this workflow.

Create the shell

Trigger

Actions

Action 1 — Webhook POST to lead-seg-worker

{
  "contactId": "{{contact.id}}",
  "contactName": "{{contact.first_name}} {{contact.last_name}}",
  "contactEmail": "{{contact.email}}",
  "requestedSlot": "{{ai_agent.extracted.requested_slot_iso}}",
  "agentNote": "{{ai_agent.summary}}",
  "subaccount": "PV",
  "callbackURL": "https://services.leadconnectorhq.com/hooks/{{workflow.callback_url}}"
}

Action 2 — Wait for callback

Action 3 — If/Else on decision

Publish


Workflow 3 — PV - Foundation Cohort Conversion Hook

Fires when a Foundation Cohort patient completes Stripe checkout.

Trigger

Alternative: if you trigger from Stripe webhook directly, set the webhook URL to your worker, have the worker POST a GHL inbound webhook with the contact info.

Actions

Action 1 — Apply tag foundation-cohort-converted

Action 2 — Update custom field foundation_cohort_locked = TRUE

Action 3 — Update custom field foundation_cohort_count (increment by 1)

Action 4 — Webhook POST to Pushover (notify Brian)

{
  "token": "{{Pushover app token from your env}}",
  "user": "{{Pushover user key}}",
  "title": "🎉 Foundation lock-in",
  "message": "{{contact.first_name}} {{contact.last_name}} just locked in. Count: {{custom_values.foundation_cohort_count}}/30."
}

⚠️ Pushover credentials shouldn't be in the workflow body — instead, hit your worker's /admin/notify-conversion endpoint and let the worker hold the secret. (We can add that endpoint in 5 min — say the word.)

Action 5 — Remove from Workflow 1

Action 6 — Add to Workflow 6 (Foundation Cohort Members)

Publish


Step 4 — PV AI Conversational Agent (the system prompt paste)

URL: https://app.gohighlevel.com/v2/location/wvQwMzyXRjFdLc5UInJZ/conversation-ai/conversation-ai-list

  1. Click + Create AI Agent (or edit existing if there's already one)
  2. Name: Elina — PostureVision
  3. Channels: enable IG comments, IG DMs, FB DMs, SMS, Email, Web Chat
  4. System prompt: paste the entire ## System Prompt (paste into GHL — version for PostureVision subaccount) block from Code/lead-seg-worker/GHL_AGENT_SPEC.md
  5. Tools / Allowed actions:
    • book-slot (calls the calendar widget)
    • send-link (sends a tracked link to the contact)
    • escalate-to-Brian (creates a task)
    • slot-decision-request (fires Workflow 2's webhook — this is the bridge to the slot-decision tap flow)
  6. Escalation rules:
    • Anything clinical → escalate-to-Brian
    • Anything legal → escalate-to-Brian
    • Anything outside 8a–9p ET after 3 back-and-forths → escalate-to-Brian
  7. Save + enable

Repeat steps for the DH subaccount (different system prompt — DH version in same spec file).


Troubleshooting

Workflow 1 not firing on May 24?

Touch 4 shows "X of 30" with X = 0?

Slot-decision tap page loads but won't accept the tap?


Done condition

When all of these are green:

When this list is checked off, you can sleep through May 24 launch day and the engine handles it.