A2A Fall 2026 · Whop × The Uncommon Business

A2A Purchase Pipeline

The purchase infrastructure Whop is building for the fall launch — the checkout flow, quantities, tags, workflow IDs, the metadata every payment carries, and how ClarityPay comes through. Every workflow, page, and link below is clickable.

Prepared by Parisa (Whop) · 1 Sep 2026 · the Copy button grabs this whole document as Markdown for pasting into an AI model or doc

1The flow, start to finish

Buyer lands on a GHL checkout page
"A2A Fall 2026 | Warm" funnel on go.theuncommonbusiness.co — each page carries a two-line snippet; everything else renders from one Cloudflare Worker. Prices are decided server-side; a browser can never set an amount.
Step 1 — contact info → "Continue to Payment"
The Continue click creates/updates the GHL contact and applies the a2afall26_lead tag. This is the abandoned-cart trigger (W2) — a deliberate click, never a partial form fill.
Step 2 — payment
The Whop payment element (card / Apple Pay / PayPal), or the ClarityPay application on the hidden financing page. The Whop payment record is created here, carrying the full metadata contract (§4).
Whop webhook → Worker fulfilment
Whop's company webhook fires on payment.succeeded; the Worker fans out:
→ GHL — purchase tags applied (additively), contact entered into the right workflow by API call, never by tag trigger
→ n8n → Supabase — powers the live dashboard and TubConnect access (§7)

2The checkout pages — live URLs & editors

Click-through previews: interactive preview of every checkout — switch between the pages, add team seats, flip payment schedules, and walk both steps exactly as a buyer will.

PageSellsQtyLinks
Founder publicPrimary $8,997 + team seats $1,500/ea · Pay in Full / 3-Pay $3,199/mo / 5-Pay $1,957/mo0–10live · edit
Team Seats Only hiddenSeats only, for buyers who already own a primary. Company name required.1–10live
Alumni hidden$5,997 pay in full only—live
ClarityPay hidden · sales$9,970 financed — the only 10-pay path; buyer picks the term in ClarityPay's application—live Whop checkout
Internal 10-Pay hidden · fallback10 × $997 on Whop rails — the ClarityPay-decline destination—GHL page TBD
ConfirmationReceipt card per arrival state (paid / in-review / processing / declined)—live

Installments are Whop-native split-pay: the saved card is charged monthly and billing stops automatically after the final cycle. More than 10 seats goes through a sales rep's custom invoice, not the checkout.

3Quantities

4The metadata contract

Every field rides payment.metadata on the Whop record and arrives in the webhook payload verbatim.

KeyExampleMeaning
sourcea2a-checkoutwhich surface created it (a2a-claritypay for financing)
offera2afall26-mainpage identity: -main, -seats, -alumni, -tenpay; ClarityPay = a2a-claritypay
pagemainsame, bare
schedulefullfull · 3pay · 5pay · 10pay · claritypay
quantity"3"team seats purchased (string; primary not included)
tiera2a-primarywhat the buyer now holds — see the tiers table below; lands on the GHL contact as aieb_tier and joins Supabase sales.offer_tiers.code
cohort / product_codea2afall26 / a2akeeps A2A buyers out of every list keyed on the bootcamp's aieb_cohort = fall26
company / company_nameAcme Roofingpresent when seats are in the cart; company_name is the key the GHL upsert reads, company the Supabase seat join key
email / first_name / last_name / full_name / phonewhat the buyer typed at step 1 (ClarityPay stamps the same keys)
fp_plan / fp_tid / fp_refa2a_pif_8997FirstPromoter: plan id + the visitor cookies set by the fpr header snippet — needs the FirstPromoter snippet on the fall funnel pages; plan ids pending from Lisa
utm_* / page_slug / landing_urla2a-fall-2026-checkoutattribution, same capture as the bootcamp block; page_slug lands as aieb_page
promo_codea2acompthe code the buyer applied (codes are pay-in-full only); a $0 charge also gets the shared aieb-fall26_free tag
ghl_contact_idabc123…the GHL contact created at step 1 — no lookup needed downstream
amount_cents"1349700"charged today, minor units (installments: first cycle only)
plan_total_cents"1349700"full plan value across all cycles
tagsthe GHL tags this purchase applies (§6)

Tiers TO CONFIRM — Scott + team
A tier is what the buyer now holds; an offer is the path they took to hold it (bootcamp precedent: eb-ga/ga are offers, ga is the tier). Three tiers, proposed 2 Sep:

TierWhoPages / offersSeats
a2a-primarythe person buying the founder seat, however they paya2afall26-main (PIF · 3-pay · 5-pay), a2afall26-tenpay, a2a-claritypayquantity = seats added at checkout, "0"–"10"; a2afall26_team-seats-purchased when ≥ 1
a2a-seatsan existing account adding seats — no founder seat in the carta2afall26-seats (hidden page)quantity ≥ 1; company required — the join back to the founder
a2a-alumnialumni founder seat at the alumni pricea2afall26-alumni (hidden page)none

5ClarityPay — exactly how it comes through

Verified against Whop's codebase, 1 Sep:

SignalMeaning
payment.succeededenrolled cards, wallets, PayPal, every installment cycle, and ClarityPay at funding
payment.pending + schedule: claritypayenrolled approved application, finalizing for up to 24h
status: open + substatus: faileddeclined — never a terminal status on Whop
contact exists, no paymentabandoned cart — GHL W2 follows up

6GHL — tags & workflows

Tag convention a2afall26_{action}-{detail}, applied additively by the worker; GHL never derives them. Location: REIO | The Uncommon Business (TL6J90dhkW0GGz8sogzu).

TagWhen
a2afall26_lead (+ -{page})step 1 Continue — before any payment
a2afall26_purchasedevery successful purchase
a2afall26_plan-{schedule}payment plan used — comped purchases ride this too; no separate free workflow
a2afall26_purchased-{alumni|seats|tenpay}non-main pages, for Alumni/W1A routing
a2afall26_team-seats-purchasedseats ≥ 1 — flips the welcome copy to "add your team in TubConnect"
aieb-fall26_free · aieb-fall26_affiliateapplied by the shared webhook to any product: $0 charge (100%-off code) · FirstPromoter cookie present. Bootcamp-named; tell A2A comps apart by aieb_cohort = a2afall26

Workflows — Abs's fall builds (31 Aug, currently drafts) in the fall workflow folder. Contacts enter by API call, never tag trigger, so no NOT-filters are needed anywhere.

WorkflowID
W1 — Purchase + Tags, Regulardf4909ad-b375-43ff-8142-3a16d8d54523open
W1A — Purchase + Tags, Alumni226eede0-3606-41cd-b9fe-cc3abf10daceopen
W2 — Abandoned Carte0a6428c-1258-4b42-bd11-13227df19937open
W3 — Team Activation8fa253ad-a7bf-4682-833f-a67b13a52e78open

7n8n → Supabase

Decided architecture (31 Aug call): the worker feeds GHL for tagging and workflows, and n8n → Supabase powers the live dashboard and TubConnect access. What n8n receives is the Whop webhook payload — payment id, status, amounts, buyer, and the full §4 metadata — so Supabase rows carry quantity, company, schedule, and ghl_contact_id with no lookups.

De-duplication lives in Supabase and GHL (per the 31 Aug spec): the same email must not re-trigger onboarding — installment cycles 2–N and later seat top-ups are new payments from an already-onboarded buyer. Uniqueness on the Whop payment id (processor, processor_ref) keeps a replayed webhook from double-inserting.

8Infrastructure links

ThingWhere
A2A Worker (fall checkout pages + A2A endpoints)a2a-fall26-checkout on Cloudflare · runtime: a2a-fall26-checkout.aieb-fall26-checkout.workers.dev · its own Worker since 2 Sep so A2A deploys never re-ship the live bootcamp checkout
Bootcamp Worker (webhook + fulfilment for every product, receipt/status reads)aieb-fall26-checkout on Cloudflare · runtime: aieb-fall26-checkout.aieb-fall26-checkout.workers.dev
Code + paste snippetsThe-Uncommon-Business/mktg-aieb-checkout — page snippets in docs/pages/a2a-*.html, this doc at docs/PORTAL-INTEGRATION.md
Fall funnel (editor)A2A Fall 2026 | Warm
Whop product + plans"A2A Fall 2026" prod_2OMe7eErbDmS7 (hidden) on biz_j8oij1SVi5Tt1M; ClarityPay plan plan_SYmjXJxcQwLZI ($9,970); 3/5/10-pay split plans created at pricing sign-off
Checkout structure specA2A Fall '26 Onboarding & Checkout Structure (Notion)

Questions → Parisa (Whop). The repo copy of this doc updates with the code that implements it.