ALL DOCSOVERVIEWP1 CHECKLISTSPECCOPY BRIEFAPPENDIX
AI Architect Elite · Document 2 of 2 · Aug 25

Elite Implementation Spec

Exact build instructions for the GHL builder. Field names, tags, triggers, and actions are canonical: copy them character for character. Phases and the workflow index live in the Build Overview.

§01

Data model

Contact custom fields

All contact-level. Never store working data in opportunity custom fields (R7 in the risk register).

FieldTypeSet byUsed for
elite_plan_typeDropdown: PIF / 2-Pay (in-house) / 3-Pay (in-house) / External Financing (via Whop)New Sale formPlan-tag routing, dunning eligibility, contract merge
elite_price_paidCurrencyNew Sale formCash-collected reporting, contract merge
elite_contract_valueCurrencyNew Sale formOpportunity monetary value, contract merge
elite_closerDropdown (Jasmine today; built for more)New Sale formTask assignment, commission reporting
financing_providerText, optionalNew Sale formKlarna / Clearpay / Zip / other, reporting
whop_order_idText, optionalNew Sale formReconciliation and refund lookup in Whop
launchpad_gradYes/NoNew Sale formGrad-credit tracking
grad_credit_appliedCurrencyNew Sale formReconciling discounted collections
elite_first_payment_dateDateHT00SLA clocks, cohort reporting
elite_sale_notesTextNew Sale formContext for the kickoff call
app_readiness_scoreNumber, 1-10Application formLead grading in S00
app_needs_financingYes/NoApplication formLead grading in S00
loss_reasonDropdown: price / timing / spouse-partner / no-show dead / ghosted unsigned / DQ not-a-fit / otherManual at Lost / DQValidation-phase learning

Tags

Prefix everything [AI Elite], colon for sub-state. Create the full set once; workflows match by exact string, so never free-type a variant. Journey tags are never removed. Machine tags are added and removed by workflows.

GroupTagApplied whenRemoved
Journey[AI Elite] Pending ApplicationPartial application capture (only if the funnel captures email pre-submit)Never
[AI Elite] Completed ApplicationApplication form submitted
[AI Elite] Lead: SQLS00: readiness 8+ AND no financing need
[AI Elite] Lead: NQLS00: needs financing OR readiness below 8
[AI Elite] Booked CallSales call booked
[AI Elite] Booked Call: No ShowMarked no-show
[AI Elite] Completed CallSales call held
[AI Elite] Completed Call: DecidingHeld, undecided (Call Held · Deciding)
[AI Elite] Completed Call: DSQDisqualified on/after the call
[AI Elite] Closed: PaidHT00 intake (money in)
[AI Elite] Closed: Contract SignedDocument completed (HT02)
[AI Elite] Onboarding: CompleteKickoff call held
[AI Elite] Nurture: Not NowMoved to Not Now · Nurture
[AI Elite] Lost: RefundedRefund processed
Machine[AI Elite] Ops: Sale Form InNew Sale form submitted (HT00)Stays; harmless
[AI Elite] Ops: Whop PaidWhop payment.succeeded webhook (HT00w)
[AI Elite] Ops: Intake DoneHT00 finishes; releases HT01
[AI Elite] Closed: Contract PendingHT01 sends the agreementBy HT02 at signature
[AI Elite] Onboarding: Booking NeededHT02 finds no kickoff bookedBy HT03b at booking
[AI Elite] Onboarding: Call BookedKickoff booked (HT03b)Stays
[AI Elite] Ops: Dunning ActiveInstallment fails (webhook or ops, starts HT05)By HT05r on cure
[AI Elite] Ops: At RiskDark-member sweep flags 7 quiet daysBy ops after re-engagement
[AI Elite] Ops: Confirmed AttendingContact replies YES to the morning-of SMS (S02c)Stays; scoped per appointment
Plan[AI Elite] Plan: PIFHT00, from elite_plan_type. Exactly one per buyer.Never
[AI Elite] Plan: 2-Pay
[AI Elite] Plan: 3-Pay
[AI Elite] Plan: Financed
Flags[AI Elite] Launchpad GradHT00 when launchpad_grad = yesNever
[AI Elite] Milestone: First WinOps, when member posts a first win
[AI Elite] Ops: Skool JoinedOps after SOP-3 verification

New Sale form

Keep the existing form URL. Required: name, email, phone, elite_plan_type, elite_price_paid, elite_contract_value, elite_closer, launchpad_grad, grad_credit_applied, kickoff-booked confirmation checkbox, elite_sale_notes. Optional: financing_provider, whop_order_id. Every field maps 1:1 to the custom fields above. The closer submits it live on the sales call (SOP-1); it is the master trigger for everything post-sale.

Payment rails (Whop)

  • All money flows through Whop checkout links: one PIF at $3,997, one each for in-house 2-pay and 3-pay (amounts TBD; plug them into the Whop links and contract merge whenever they land, nothing else waits on them). Whop runs the installment schedule and the retries.
  • External financing (Klarna, Clearpay, Zip, similar) is chosen inside the Whop checkout; the provider pays in full after fees. These buyers are operationally PIF: [AI Elite] Plan: Financed, never dunned.
  • In-house 2-pay/3-pay are the only dunning-eligible buyers.
  • Whop → GHL is a webhook, not native: point Whop's payment.succeeded and payment.failed webhooks at GHL Inbound Webhook trigger URLs (Phase 2, powers HT00w / HT05 / HT05r). Match contacts by email. Until wired, the form is the sole trigger and SOP-5 is the net.
  • Grad credit: Whop promo code or a dedicated discounted link.
§02

Pipeline & stages

Two pipelines. The Sales Pipeline is the money board and ships in P1. The Setter Pipeline is a working queue for applicants who have not booked yet, and ships in P2 when setting starts. Stage names below are canonical: this spec refers to stages by name, never by number, so inserting a stage later never invalidates an instruction.

Sales pipeline P1

Named AI Architect Elite Pipeline. Replaces the current six stages (Closed PIF / Closed Payment Plan collapse into Paid, Signed and Active, plus plan tags). Call Booked splits by lead grade so the board itself shows who needs deeper triage, which is what GHL's lack of saved views otherwise costs you.

#StageEnters whenExits toStall alarm
1New ApplicationApplication in, no call bookedCall Booked · Not Now · Lost>3 days P2
2Call Booked: SQLAppointment booked, contact tagged Lead: SQLCall Held · No Showclears at call time
3Call Booked: NQLAppointment booked, contact tagged Lead: NQLCall Held · No Showclears at call time
4No ShowMarked no-showback to the matching Call Booked stage · Not Now at day 7>7 days P2
5Call Held · DecidingCloser disposition post-callPaid · Not Now · Lost>5d Slack, day 14 forced disposition P2
6Paid · Contract OutNew Sale form submittedSigned (incl. live at kickoff) · Lost by human decision after day 7>48h unsigned P1
7Signed · OnboardingDocument completedActive when kickoff held>3 days not onboarded P1
8Active · 30-Day RampKickoff heldarchived from board at day 307 quiet days → SOP task P3
9Not Now · NurtureUnresponsive or "later"re-entry on re-engagementnone
10Lost / DQManual, loss_reason requiredterminalnone

Setter pipeline P2

Named AI Elite Setter Pipeline. Holds every applicant who has not booked, and only those. It is a dialer queue, not a funnel: the setter works it top to bottom, and an opportunity leaves the moment a call is booked.

#StageEnters whenExits to
1New App: SQLApplication in, no booking, graded SQLSales Pipeline on booking · 3-Day No Book
2New App: NQLApplication in, no booking, graded NQLSales Pipeline on booking · 3-Day No Book
33-Day No Book72h after application, still unbookedSales Pipeline on booking · 7-Day No Book
47-Day No Book7 days, still unbookedSales Pipeline on booking · 30-Day No Book
530-Day No Book30 days, still unbookedSales Pipeline on booking · Long-Term Nurture
6Long-Term NurtureLadder exhaustedSales Pipeline if they ever book
Why cross-pipeline moves are safe here

GHL wipes opportunity custom fields when an opportunity moves pipelines (R7). This system stores every working value on the contact, specifically so a Setter → Sales move loses nothing. That decision is what makes the two-pipeline model workable; do not start writing data to opportunity fields later or this breaks.

When the Setter Pipeline goes live, new unbooked applications are created there instead of in Sales New Application. New Application then stops receiving new opportunities and stays only for history. Do not delete it.

Status & value rules

  • Opportunity status: Open through Paid · Contract Out (unsigned money stays visible as risk), Won on entry to Signed · Onboarding (HT02), Lost only at Lost / DQ.
  • Monetary value = elite_contract_value, set by HT00. Actual cash lives in elite_price_paid + Whop.
  • Enable "allow move to any previous stage" on both pipelines (a rebooked no-show moves back to its Call Booked stage).
  • One opportunity per person, always. It moves; it is never duplicated across the two pipelines.
  • Slack: one channel, #elite-pipeline, wins and alarms together. Native Slack premium action or a webhook, builder's choice.
§03

Workflows

P1 scope lock · build nothing beyond this list first

Phase 1 workflows, ONLY: S00, S02, S02b, S02c, S03, HT00, HT01, HT02, HT03b, HT03. Phase 1 alarms, ONLY: Paid · Contract Out unsigned >48h, and Signed · Onboarding not onboarded >3 days. Everything else in this section is P2/P3 by decision, not oversight: do not build it early because it looks easy. P2 starts after a real buyer has run the P1 path end to end.

Type chips: Automation runs unattended · Hybrid automation that creates human tasks (build the task, not a bot) · phase chips match the Build Overview. R# = risk register entry in §04. Tasks always carry an assignee and a due time. GHL workflow name = ID: Name exactly as each card header reads (e.g. HT02: Welcome & Access), all inside one AI Elite workflow folder.

S-series (pre-sale)

S00Application ScoringAutomationP1
TriggerForm Submitted: any application form (Elite form, AI app building form, Masterclass)
Goal event
Actions
  1. Add [AI Elite] Completed Application
  2. If/Else, grade the lead. NQL branch condition: app_needs_financing = Yes OR app_readiness_score less than 8. Everything else falls to SQL
  3. NQL branch adds [AI Elite] Lead: NQL · SQL branch adds [AI Elite] Lead: SQL
  4. Both branches: Create/Update Opportunity → Sales Pipeline, New Application, status Open, source = form name
  5. Wait 10 minutes, then If/Else: does an appointment exist on the sales calendar? Yes → end, S02 owns them. No → end, S01 owns them (P2; until S01 exists, unbooked applicants sit in New Application for manual work)
TagsAdds [AI Elite] Completed Application plus exactly one of [AI Elite] Lead: SQL / [AI Elite] Lead: NQL
NotesHard dependency: every application form must map its readiness question to app_readiness_score and its financing question to app_needs_financing. An unmapped answer lands empty and the contact grades NQL, which is the safe direction (more nurture, not less). The grade is a snapshot, not a verdict: the closer can re-grade by swapping the tag, and the stage move follows.
S01No-Book LadderHybridP2
TriggerTag added [AI Elite] Completed Application, with a wait-and-check so anyone who books inside 10 minutes never enters
Goal eventAppointment booked on the sales calendar → move the opportunity to the Sales Pipeline (Call Booked: SQL or : NQL) and end. This is the workflow's one goal (R4)
Actions
  1. If an appointment already exists, end
  2. Move opportunity to Setter PipelineNew App: SQL or New App: NQL per lead tag
  3. Instant email + SMS with the booking link, then Manual Call action to queue the first dial
  4. Day 3 → stage 3-Day No Book + Manual Call + SMS + email
  5. Day 7 → stage 7-Day No Book + Manual Call + SMS + email
  6. Day 30 → stage 30-Day No Book + Manual Call + SMS + email
  7. After day 30 → stage Long-Term Nurture + [AI Elite] Nurture: Not Now; the monthly reactivation sequence takes over
TagsExit adds [AI Elite] Nurture: Not Now
NotesThe dialer is GHL's Manual Actions queue. The Manual Call workflow action drops the contact into that queue; the setter opens Manual Actions and dials straight down the list, which is the closest native equivalent to power dialing. Each rung is call + SMS + email on the same day, deliberately: the ladder is a contact cadence, not an email sequence.
S02Show-Up MachineAutomationP1
TriggerAppointment Status = booked/confirmed, sales calendar, no Modified-By filter (R5)
Goal event— (ends at appointment time)
Actions
  1. If/Else on lead tag → Opportunity to Call Booked: SQL or Call Booked: NQL
  2. Instant confirmation email: calendar file, what to have ready, short Rone expectation video
  3. SMS "Reply C to confirm"; replies route to the closer
  4. Reminders: 48h email · 24h email + SMS · 4h SMS · 1h SMS with the Zoom link
  5. NQL branch only: hand off to S05 for the extra pre-call layer P3
TagsAdds [AI Elite] Booked Call
NotesFires for every appointment including closer-rebooked follow-ups (those no-show at roughly 2x). The morning-of confirmation is a separate workflow (S02b) because built-in calendar reminders can only fire relative to the appointment, never at a fixed clock time.
S02bMorning-Of Confirmation SMSAutomationP1
TriggerAppointment Status = Confirmed (add Booked to fire at booking time too), Calendar = sales calendar
Goal event
Actions
  1. Wait 1: Wait type = Event/Appointment Time → reference Appointment Start Time → Before → 20 hours. This lands the contact on the afternoon or evening of the day before
  2. Wait 2: a second Wait immediately after, restricted to a time window of 09:00-09:30. Depending on GHL version this is a "Time Window" wait type or a "wait for a specific time of day" setting inside the Wait step
  3. Send SMS: morning-of confirmation naming the appointment time, asking for a YES reply
Tags— (S02c handles the reply)
NotesThe two chained waits are the whole trick: wait 1 gets into the day before, wait 2 holds until 9am, which is the morning of the call. Leave the existing 30-minutes-before reminder exactly as it is. Breaks for calls booked before roughly 9:30am (the SMS would land after the call): if the calendar opens before 10am, add an If/Else first that sends 2 hours before instead. If your account has no time-window option, fall back to a single Event/Appointment Time wait calculated per typical slot and say so, so it can be specified properly.
S02cConfirmation Reply HandlerHybridP1
TriggerCustomer Replied, message contains "yes"
Goal event
Actions
  1. Add [AI Elite] Ops: Confirmed Attending
  2. Notify the closer (internal SMS or the Slack channel)
TagsAdds [AI Elite] Ops: Confirmed Attending
NotesThis is what makes the YES worth asking for. Anyone still untagged an hour before their call is the no-show risk list, which is a working queue for the setter rather than a friendlier reminder. Ask for the reply only if this workflow exists.
S03No-Show RecoveryHybridP1
TriggerAppointment Status = no-show (closer marks it right after the missed slot)
Goal eventAppointment re-booked → end
Actions
  1. Opportunity → No Show; SMS within 15 min: "We held your spot, grab a new time" + rebook link
  2. Task → closer: call within 1 business hour
  3. Email day 0, SMS day 1, email day 3, final email day 7 → Not Now · Nurture
TagsAdds [AI Elite] Booked Call: No Show
NotesOn rebooking, return the opportunity to the Call Booked stage matching its lead grade.
S04Deciding Follow-UpHybridP3
TriggerOpportunity enters Call Held · Deciding (closer's post-call disposition)
Goal eventForm Submitted = New Sale form → end. Never use a GHL Payment trigger here; Whop payments are invisible to GHL (R1)
Actions
  1. Task → closer: send personal recap; the follow-up call was already booked before hang-up (SOP-1 rule: never end a call without the next meeting set)
  2. Day 1 value email · day 2 SMS · day 3 belief-first objection email · day 7 door-closing email
  3. Day 5 Slack stall ping
  4. Day 14 task: forced dispositionNot Now · Nurture or Lost / DQ with loss_reason
TagsAdds [AI Elite] Completed Call + [AI Elite] Completed Call: Deciding; DQ exit adds [AI Elite] Completed Call: DSQ
S05NQL Pre-Call NurtureAutomationP3
TriggerTag added [AI Elite] Booked Call AND contact has [AI Elite] Lead: NQL
Goal event— (ends at appointment time)
Actions
  1. Email + SMS: watch the pre-call video before your call, framed as a requirement rather than a resource
  2. Reminder 24h before if the video link has not been clicked
  3. Second touch: one qualifying question by SMS, replies route to the closer
Tags
NotesExists because NQL leads convert at a lower rate with the same call time: the extra layer pre-handles objections, walks the program, and raises the bar to show up, so the closer spends the call closing rather than educating. Needs the pre-call video filmed (see the Copy Brief). Track the video click as the qualification signal.

HT-series (post-sale)

HT00New Sale IntakeAutomationP1
TriggerForm Submitted: New Sale form
Goal event
Actions
  1. If [AI Elite] Ops: Intake Done exists → end (idempotency)
  2. Add [AI Elite] Ops: Sale Form In + [AI Elite] Closed: Paid; stamp elite_first_payment_date
  3. Slack: new sale with name, price, plan, closer
  4. If/Else on elite_plan_type → exactly one Plan tag; if launchpad_grad = yes → [AI Elite] Launchpad Grad
  5. Update opportunity → Paid · Contract Out, monetary value = elite_contract_value
  6. Add [AI Elite] Ops: Intake Done (releases HT01)
NotesP2 addition once the webhook is live: a 30-min wait for [AI Elite] Ops: Whop Paid with a Slack verify-charge alarm on timeout (skip for Financed). Do not build in P1 (R1).
HT00wWhop Payment WatchdogAutomationP2
TriggerInbound Webhook: Whop payment.succeeded (match contact by email)
Goal event
Actions
  1. If [AI Elite] Ops: Intake Done exists: this is an installment rebill → if [AI Elite] Ops: Dunning Active, hand to HT05r; either way end. Rebills never re-run intake (R6)
  2. Add [AI Elite] Ops: Whop Paid
  3. Wait 30 min for [AI Elite] Ops: Sale Form In; missing → Slack "payment with NO sale form, contract blocked" + task → closer, due 1h
NotesFinanced purchases also emit payment.succeeded, so every rail is visible here (R1)
HT01Contract Send + ChaseHybridP1
TriggerTag Added: [AI Elite] Ops: Intake Done
Goal eventDocument Status = Completed, template "Elite Client Agreement", behavior wait until goal met (R2, R3)
Actions
  1. Add [AI Elite] Closed: Contract Pending
  2. Send Documents & Contracts: template "Elite Client Agreement", email + SMS; merges name/price/plan from custom fields (guaranteed set by HT00 ordering)
  3. SMS: agreement just landed, 2 minutes, laptop works best (R4)
  4. Chase while unsigned: +3h email · +24h SMS + email + task → closer: call them · +48h Slack + task → Rone: personal SMS/video nudge · +72h final nudge + Slack "going into kickoff unsigned" (hands off to SOP-2)
  5. Day 7 unsigned AND no kickoff held: task → Rone + program owner: ghost decision + Slack. Human decides; never auto-refund
TagsAdds Closed: Contract Pending. Removal happens in HT02
NotesTo re-send, re-share the SAME document link. NEVER generate a second document from the template (R2). A duplicate silently freezes the entire post-signature flow.
HT02Welcome & AccessHybridP1
TriggerDocuments & Contracts: status = Completed, template "Elite Client Agreement" (only Completed, R3)
Goal event
Actions
  1. If [AI Elite] Closed: Contract Signed exists → end (de-dupe, R3). Else remove Closed: Contract Pending, add Closed: Contract Signed
  2. Opportunity → Signed · Onboarding, status Won; Slack signed ping
  3. Welcome email within the hour: next-24-hours plan, Skool invite link, roadmap, one unannounced bonus, billing-descriptor heads-up
  4. Welcome SMS from Rone's line, invite link repeated; send intake form (goals, background, tools)
  5. Task → Rone: record 60-90s personal welcome video, due 24h
  6. If/Else: [AI Elite] Onboarding: Call Booked exists? No → add [AI Elite] Onboarding: Booking Needed (starts HT03)
  7. +24h: task → ops: SOP-3 Skool join verification
TagsRemoves Closed: Contract Pending; adds Closed: Contract Signed, maybe Onboarding: Booking Needed
NotesRequirement: the completed, signed agreement must be attached to the client record in GHL. This is native Documents & Contracts behavior (signed PDF stores on the contact and emails a copy to the buyer); verify it in the P1 test matrix, do not assume it.
HT03bOnboarding Booking DetectorAutomationP1
TriggerAppointment Status = booked/confirmed, Elite Onboarding calendar, no Modified-By filter so closer-booked counts (R5)
Actions
  1. Add [AI Elite] Onboarding: Call Booked, remove [AI Elite] Onboarding: Booking Needed. Calendar-level notifications handle 24h/1h reminders
HT03Onboarding Booking GuardHybridP1
TriggerTag Added: [AI Elite] Onboarding: Booking Needed
Goal eventAppointment booked, Elite Onboarding calendar → end
Actions
  1. If [AI Elite] Onboarding: Call Booked exists → end
  2. Email with the Elite Onboarding calendar link ("lock your kickoff, we hold your build slot")
  3. +24h SMS · +48h task → closer/Rone: book it by phone
NotesFirst-class pathway, not an edge case: fires whenever Jasmine could not book the kickoff live on the call. SOP-1 makes live booking the ideal, not the requirement, so this ships in Phase 1.
HT0430-Day RampHybridP3
TriggerTag Added: [AI Elite] Onboarding: Complete (Rone marks it after the kickoff)
Goal event
Actions
  1. Entry guard: if [AI Elite] Closed: Contract Signed missing → exit + Slack alert (nobody ramps unsigned)
  2. D0 recap email + quick-win assignment: first snapshot agent deployed within 48h · D2 SMS "did your agent take its test call?" · D3 first-win celebration email · D5 Build-With-You prep email
  3. D7 task → Rone: personal check-in + email · D10 outreach activation email · D14 consumption checkpoint If/Else (stalled → task: personal outreach)
  4. D18 Rone's Ohio story email (compliance framing) · D21 momentum + VIP Day tease · D25 If/Else on [AI Elite] Milestone: First Win → micro-testimonial ask · D30 review push + wins collection + task: 30-day review
NotesDark-member detection is SOP only, never automation (SOP-5, R8). Do not attempt login tracking or activity webhooks; Skool has no API. All copy through the compliance gate (§06)
HT05DunningHybridP2
TriggerTag Added: [AI Elite] Ops: Dunning Active. Tag applied by the payment.failed webhook path, or by ops from a Whop failure notice until the webhook is live. Guard: contact has Plan: 2-Pay or Plan: 3-Pay; Financed never enters
Goal event— (HT05r ends it)
Actions
  1. D0: email with Whop billing link + Slack + task: human call within 48h
  2. D3 email · D7 email + SMS, access-at-risk framing
  3. D10: task → ops: SOP-4 suspension + suspension notice email
NotesWhop/Stripe owns retries and the card-update page; GHL owns comms and tasks. Payment-plan contract language is parked, not a build item
HT05rDunning CureHybridP2
TriggerWhop payment.succeeded for a contact with [AI Elite] Ops: Dunning Active (via HT00w step 1), or ops manual
Actions
  1. Remove [AI Elite] Ops: Dunning Active · task → ops: restore access now · Slack cure ping
§04

Risk register

Every platform footgun lives here once. Workflows cite these by number; nothing is restated elsewhere. All are verified GHL/Skool/Whop behaviors as of Aug 2026, not caution boilerplate.

#ConstraintRule for this build
R1GHL cannot see Whop payments natively. GHL's own Payment Received / Invoice / Subscription triggers will never fire.The New Sale form is the master trigger. All payment awareness comes from Whop webhooks into Inbound Webhook triggers (P2). Never build on GHL payment triggers.
R2If a contact has 2+ documents from the SAME template, the "Completed" trigger waits for ALL of them, silently freezing post-signature automation.One live document per contact per template. To remind, re-share the same document link. NEVER send a fresh copy. This is the footgun most likely to silently break the whole post-sign flow.
R3Every document status change (Sent, Viewed, Signed, Completed) fires the trigger independently.Trigger only on Completed, and keep HT02's idempotency check so a double-fire cannot double-send the welcome.
R4GHL mobile signing has documented "signed but never submitted" failures.Desktop-first ask in the closer script and every chase message. Automation gates on the Completed event, never on a human saying "they signed." Kill condition: 2 of the first 10 buyers hit a failure → swap to SignWell ($10/mo) via webhook round-trip; downstream keys off the tag, so the swap is 1-2 hours.
R5The "Customer Booked Appointment" trigger fires only for widget self-bookings; staff-booked appointments do not fire it.Always use the Appointment Status trigger with no Modified-By filter (S02, HT03b), or closer-booked calls silently never trigger anything.
R6In-house installment rebills emit the same Whop payment.succeeded event as a new sale.HT00w checks [AI Elite] Ops: Intake Done first; rebills route to HT05r or end. Rebills must never re-run intake or welcome.
R7Moving an opportunity to a different pipeline via automation wipes its opportunity custom fields.One pipeline, stage moves only. All working data lives in contact custom fields.
R8Skool has no API and no native GHL integration. Zapier can invite but cannot remove. A Skool refund does NOT revoke access.Access via the group invite link in the welcome email. Join verification and removal are human SOPs (SOP-3, SOP-4) forever, until Skool ships an API.
R9GHL allows exactly ONE Goal Event per workflow.That is why signing (HT01), booking (HT03), and ramp (HT04) are separate workflows. Second checkpoints use Wait-for-Condition on a tag, never a second goal.
R10The Stale Opportunities trigger measures time since the last opportunity update; any automation touching the opportunity resets it.Post-sale workflows touch the opportunity only at stage transitions (HT00, HT02). Nurture and chase logic runs on contact tags only, or every stall alarm lies.
§05

Manual SOPs

Human checklists. The automation creates tasks pointing at these; it never replaces them.

SOP-1 · Closer post-yes ritual SOP P1

Owner: Jasmine. Run while the buyer is still on Zoom. Steps 1 and 2 are non-negotiable and only take a couple of minutes; steps 3 and 4 have automation backstops, so the call never runs long for them.

  • Charge the card live. Whop checkout link in Zoom chat; stay on while they complete it (they pick PIF, in-house plan, or external financing in the checkout). Note which option they chose.
  • Submit the New Sale form live. Thirty seconds. This releases the contract with correct merged terms.
  • Point at the contract, do not wait for it. "The agreement just hit your email and phone, takes about two minutes. Knock it out today, a laptop works best." Jasmine does not hold the call for the signature; HT01's 72-hour chase and Rone's pre-kickoff check (SOP-2) own it from here.
  • Book the kickoff live if the call allows, on the Elite Onboarding calendar inside 48-72 hours. Live booking is the ideal, not the requirement: when there is no time, skip it and HT02/HT03 automatically send the self-book link and chase it to booked.
  • Inoculate the remorse. "Sometime in the next day or two a voice may ask if this was crazy. Totally normal. When it shows up, text us instead of sitting with it, deal?"

SOP-2 · Pre-kickoff contract check SOP P1

  • Before every kickoff call, check the contract status on the contact.
  • Unsigned → first agenda item: "Before we build anything, let's knock out the agreement. I'll wait, it takes two minutes." Re-share the SAME document link in Zoom chat. Never create or send a new document (R2).
  • Watch the status flip to Completed, then run the call. HT02 fires behind it automatically.
  • Never run the build portion or mark [AI Elite] Onboarding: Complete for an unsigned member.

SOP-3 · Skool join verification SOP P1

Task auto-created by HT02 at +24h, assigned to Jasmine.

  • Open the Inner Circle member list; confirm the buyer appears (match by the email captured in Skool's membership question).
  • Joined → add [AI Elite] Ops: Skool Joined; send the new-member DM within 10 minutes of spotting them: one action only (intro post or start-here video).
  • Not joined → SMS them the invite link again; re-check tomorrow.
  • If the invite link ever leaks or circulates, rotate it in Skool and update the welcome email template the same day.

SOP-4 · Skool removal (refund or suspension) SOP P2

Owner: Jasmine. Triggered by a refund decision or dunning day 10. No automation can do any of this (R8).

  • Remove the member from the Inner Circle in Skool (refunding in Whop or Skool does NOT do this).
  • Pause/revoke course access and the Archie seat.
  • Refund path: tag [AI Elite] Lost: Refunded, opportunity → Lost / DQ with loss_reason, exit-interview logged.
  • Suspension path (dunning): keep [AI Elite] Ops: Dunning Active; restore everything immediately on cure (HT05r task).
  • Confirm completion in Slack.

SOP-5 · Weekly reconciliation & sweep SOP P2

Mondays, 15 minutes, alongside the scoreboard review.

  • Whop payments list vs pipeline: any payment whose opportunity has not reached Paid · Contract Out = a missed sale form. Fix and debrief the closer.
  • Whop past-due list vs [AI Elite] Ops: Dunning Active: any mismatch = missed dunning. Tag it by hand.
  • Member sweep (P3): anyone with no call attendance, no replies, no visible activity for 7 days → add [AI Elite] Ops: At Risk + task for Rone: a personal text, not a sequence.
  • Scoreboard: show rate, close rate, hours-to-sign, sign-to-kickoff hours, quick-win rate, cash mix, refunds/disputes, dunning cures.
§06

Copy inventory

Compliance gate, every asset, no exceptions
  • No income guarantees, ever. Dollar figures only as market examples or Rone's own results, with "what you make depends on you and the work."
  • The identity is AI Architect. Never "consultant," never "agency owner." No hype.
  • No em dashes in any written follow-up.
  • Portal and community names must mirror the sales language exactly.

The full writing brief, one row per asset with its job, send moment and a ClickUp export, lives on the Copy Brief tab. 68 assets total. Totals by set:

SetPhaseAssetsCount
S02 Show-upP13 emails, 4 SMS, 1 video script8
S02b/S02c Morning-of + replyP11 SMS, 1 internal alert2
S03 No-showP13 emails, 2 SMS5
HT01 Contract chaseP14 emails, 2 SMS6
HT02 WelcomeP11 email, 1 SMS, intake form3
HT03 Booking guardP11 email, 1 SMS2
S01 No-book ladderP24 emails, 4 SMS, 4 call scripts12
HT05 DunningP24 emails, 1 SMS5
S04 DecidingP34 emails, 1 SMS, 1 recap template6
S05 NQL pre-callP31 email, 2 SMS, 1 video script4
HT04 30-day rampP310 emails, 2 SMS12
ReactivationP3Monthly winback, 3 emails3

P1 launch-blocking set = 26 assets. All email and SMS copy is supplied separately; build each workflow's send steps with placeholder content and drop the final copy in when it arrives.

§07

Test matrix

Run each phase's tests before that phase goes live. Use a dedicated test contact.

Phase 1 · before the first real buyer

  • End-to-end test sale: Whop payment → form → contract → signature → welcome → Skool link → kickoff booked, every Slack ping verified.
  • Merge-field render check on the contract (name, price, plan terms) for each plan type.
  • Sign on desktop AND attempt on mobile; confirm Completed status behavior both ways (R4).
  • Duplicate-template test: confirm nothing can send a second document from the template to one contact (R2).
  • Unsigned chase: let the test contact sit unsigned; confirm the +3h/+24h/+48h/+72h ladder, the "going into kickoff unsigned" flag, and the day-7 decision task.
  • Staff-booked appointment fires S02 and HT03b (R5).
  • Lead grading: submit a test application with financing = Yes, confirm [AI Elite] Lead: NQL and the opportunity landing in Call Booked: NQL on booking. Repeat with readiness 9 + no financing for the SQL path.
  • Unmapped-answer default: submit an application leaving the readiness question blank, confirm the contact grades NQL rather than erroring.
  • Morning-of SMS: book a test appointment for tomorrow afternoon on a number you control; confirm the SMS lands at 9am and the existing 30-minute reminder still fires. Reply YES and confirm [AI Elite] Ops: Confirmed Attending plus the closer alert.
  • No-show marking fires S03 within 15 minutes.
  • No-book pathway: run a signed test sale WITHOUT booking the kickoff on the call; confirm HT02 branches to Onboarding: Booking Needed, HT03 sends the self-book link, and the +48h book-by-phone task fires.
  • Signed PDF on the client record: after completion, confirm the executed agreement is attached to the contact in GHL and the buyer received their copy by email.
  • Paid · Contract Out (48h unsigned) and Signed · Onboarding (3 days not onboarded) alarms fire on an aged test opportunity.

Phase 2 · before guards go live

  • Whop webhook delivery: test payment.succeeded and payment.failed reach the Inbound Webhook triggers and tag the right contact by email.
  • Form-missing alarm: pay without the form, confirm HT00w fires at 30 minutes.
  • Rebill exclusion: simulate an installment event on an intake-done contact; confirm intake and welcome do NOT re-fire (R6).
  • Failed-payment simulation: HT05 fires; HT05r clears and creates the restore task on cure.
  • Full stall alarm set fires on aged test opportunities in New Application, No Show, Call Held · Deciding.
  • Setter pipeline: an unbooked test application lands in New App: SQL/NQL, walks the 3/7/30 rungs on accelerated waits, and queues a Manual Call at each rung.
  • Cross-pipeline move: booking from the Setter Pipeline moves the opportunity into the matching Sales Call Booked stage with every contact field intact (R7).
  • SOP-4 refund walk-through run once as a drill.

Phase 3 · before the ramp goes live

  • HT04 entry guard: an unsigned test contact tagged Onboarding: Complete exits with a Slack alert.
  • Ramp arc dry-run on a compressed schedule (minutes instead of days) to verify ordering, If/Else branches, and task creation at D7/D14/D30.
  • D25 testimonial branch fires only with [AI Elite] Milestone: First Win present.
  • S01/S04 goal events end the workflows on booking and on form-submit respectively.

Companion document: Elite Build Overview (goals, entities, workflow index, phase plan). Research citations and full rationale: Elite Pipeline Blueprint (Appendix tab).