How it all connects
Every purchase across all four groups flows through the same onboarding engine. The lifecycle Workers (INIT and END) handle every transition, then route to the right per-tier delivery flow.
INIT Worker fires
Stripe webhook lands at stripe-relay.brightlabcrew.com. INIT validates the payment, reads the lookup_key, and routes:
- Launch / Growth / AI → create new GHL sub-account from the right snapshot
- Photography / Website → create contact in BLC parent location
- Add-on (existing customer) → tag existing contact, no new sub-account
END Worker fires
Stripe cancellation webhook lands at stripe-cancel.brightlabcrew.com. END validates, sends an offboarding email via Resend, marks the customer for deletion in 30 days.
Daily 02:00 NZT cron sweeps and runs the actual deletion: GHL sub-account deleted, Pages project deactivated, archive record kept for 7 years for audit.
The system at a glance
| Layer | Status |
|---|---|
| Cloudflare Workers (INIT + END) | Live in production |
| Stripe webhook endpoints | 2 live (init + cancel) |
| Stripe payment links | 17 with ghl_account_id custom field |
| GHL Marketplace OAuth app | Bootstrapped, refresh token in KV |
| Resend email service | Domain verified, sending live |
| GHL snapshots | Launch + Growth real, others on test snapshot until built |
| n8n Growth integration kit | Spec'd, not yet built |
Where to look for what
Each product group page mirrors the GHL workflow builder layout where applicable. Use the sub-nav (under the top nav) to switch between tiers within a group.