Overall posture
David wants a hard cutover by May 20. Jane’s risk framing: hard CRM/source-of-truth cutover with AC automation overlap/fallback, not blind full AC shutdown.
Master record rule
Supabase is the live operating master. Stripe is authoritative when buyer/payment state conflicts.
Critical automation
1 - Bought LYSP 2024 is the only active AC automation that must be duplicated before final cutover confidence.
1 - Bought LYSP 2024, this is not a blind full AC shutdown. The other automations are inactive/non-critical right now and should be archived for copy/reference before AC dependency is removed.Cutover gates
G1 — Backup + restore proven
Archive exists in 2 locations and two Postgres restore proofs passed.
Next: Keep as evidence; no more archive work unless source exports change.G2 — Mapping + source-of-truth locked
Supabase live master; Stripe wins buyer/payment conflicts; AC lists archive/reference.
Next: Turn decisions into AC→GHL field/tag mapping and dedupe rules.G3 — Compliance + suppression proven
Suppression continuity is archived but not fully reconciled/proven in GHL sends.
Next: Run suppression reconciliation and require pilot pre-send suppression test.G4 — Pilot lane passes
Webinar/event nurture is best prepared but not yet proven as GHL pilot.
Next: Run/test pilot with 364 eligible contacts or internal dry run first.G5 — Critical buyer/delivery flows protected
ThriveCart buyer export and subscription truth still unresolved.
Next: Get ThriveCart export; keep high-risk delivery/payment flows out of first wave.G6 — Renewal decision
David wants hard cutover by May 20; Jane frames as hard CRM cutover with AC automation fallback.
Next: May 19 go/no-go review with this board as scoreboard.Locked decisions
| Decision | Answer | Operating meaning |
|---|---|---|
| Supabase role | Live master | Supabase is the live operating master record set. |
| Buyer conflict winner | Stripe actual payment | Stripe wins buyer/payment conflicts. PayPal/ThriveCart provide reconciliation/delivery context. |
| AC lists | Archive/reference | Move away from AC list dependency; use only as temporary automation continuity if needed. |
| AC automations | Overlap/fallback | Only `1 - Bought LYSP 2024` is operationally critical and must be duplicated. Other automations are inactive/non-critical now; archive their email copy for reference. |
| ThriveCart export | Required by default | Export remains required. ThriveCart is currently struggling to output a complete active-subscriptions CSV, so the fallback is reconstructing active subscription truth from Stripe/PayPal actual payments plus whatever ThriveCart order/customer evidence can be obtained — not waiving the risk. |
| May posture | Hard CRM cutover | Target hard CRM/source-of-truth cutover by May 20, not blind full AC shutdown while automations remain in AC. |
Main control sheet
Source: Projects/JaneMedia/Ops/crm-cutover/crm-cutover-control-sheet-2026-05-14.csv
| Area | Status | Risk | Gap / decision | Recommended next action | Evidence |
|---|---|---|---|---|---|
| Contact archive + identity mapping Gate: G2 Mapping locked | Archive complete and two restore proofs passed; no approved AC→GHL/Supabase field map yet. | medium | Lock primary dedup rule, field map, and duplicate-resolution policy before any broad import. | Draft and approve the canonical contact field map plus per-batch import log format. Owner: Jane · Due: 2026-05-13 | export-manifest-2026-04-22.md; postgres-restore-proof-a-2026-05-04.md; postgres-restore-proof-b-2026-05-04.md |
| Tag + custom-field mapping Gate: G2 Mapping locked | Definitions are archived, but no written AC tag/custom-field disposition exists. | high | Decide keep/rebuild/archive status for every AC tag and field before live automation rebuilds. | Create a tag/field mapping sheet with keep, merge, retire, and archive-only columns. Owner: Jane · Due: 2026-05-13 | export-manifest-2026-04-22.md; 2026-04-22-activecampaign-migration-safety-checklist-design.md §5 |
| Lists + historical metadata anomalies Gate: G2 Mapping locked | Locked 2026-05-14: AC lists are not a long-term operational dependency; move away from AC list logic where possible. | medium | Decide if any AC list membership is temporarily required for the automation overlap; otherwise archive-only. | Mark AC list artifacts archive-only except any needed temporarily for `1 - Bought LYSP 2024` duplication. Owner: Jane · Due: 2026-05-15 | postgres-restore-proof-b-2026-05-04.md; export-manifest-2026-04-22.md |
| Unsubscribe + suppression continuity Gate: G3 Compliance + suppression proven | Archive and restore proof passed, but schema-aware validation shows AC unsubscribes are not reconciled into archived Supabase exports and one suppression row does not map to archived contacts/leads. | high | Need one approved suppression truth path and a proof that GHL imports and live sends respect it. | Reconcile AC unsubscribes against current suppressions, define import precedence, and require a pre-send suppression test in the pilot lane. Owner: Jane · Due: 2026-05-13 | postgres-restore-proof-a-2026-05-04.md; postgres-restore-proof-b-2026-05-04.md; supabase-schema-aware-validation-2026-05-04.md |
| ActiveCampaign automation disposition Gate: G5 Critical flows protected | Corrected 2026-05-14: the only operationally critical AC automation is `1 - Bought LYSP 2024`; all other automations are inactive/non-critical at this time, but their email copy should be archived. | high | Need exact trigger/actions/tags/side effects for `1 - Bought LYSP 2024`, a GHL duplicate with test evidence, and a Markdown archive of copy from inactive automations. | Inventory `1 - Bought LYSP 2024`, duplicate in GHL, test on internal contact, and keep inactive automation copy archived as reference. Owner: Jane + David · Due: 2026-05-15 | ac-automations-inventory-2026-04-22.csv; 2026-04-22-activecampaign-migration-safety-checklist-design.md §8 |
| Pilot lane — webinar/event nurture Gate: G4 Pilot passes | Best-prepared lane: contacts already reconciled, eligible subset already isolated, and blast radius is lower than buyer/onboarding flows. | medium | Need explicit success criteria, send owner, and proof that suppressions and customer exclusions still hold in GHL. | Use the 364-contact eligible CSV as the first controlled pilot while AC remains fallback; validate tags, exclusions, and one live send path before broader cutover. Owner: Jane · Due: 2026-05-14 | ghl-ac-reconciliation-report-2026-04-26.md; ac-automations-inventory-2026-04-22.csv; PLAN_STATE.md |
| Supabase core snapshot Gate: G2 Mapping locked | Locked 2026-05-14: Supabase is the live master operating record set, but current archived counts are smaller than ActiveCampaign and must be reconciled for hard cutover confidence. | high | Need reconciliation between Supabase live-master posture and smaller archived Supabase snapshot counts. | Run current Supabase export/count comparison against AC/GHL/payment sources and document what is master vs historical archive. Owner: Jane · Due: 2026-05-15 | export-manifest-2026-04-22.md; PLAN_STATE.md; postgres-restore-proof-a-2026-05-04.md |
| Supabase schema fidelity Gate: G3 Compliance + suppression proven | Supabase is locked as live master, but schema-aware validation is still WARN: repo SQL does not define all app-dependent objects and no subscriptions table exists. | high | Need canonical schema artifact for live-master tables or explicit hard-cutover risk acceptance for missing schema coverage. | Commit/currently document Supabase canonical schema for contacts, purchases, suppressions, lead tags, and subscription truth path. Owner: Jane · Due: 2026-05-15 | supabase-schema-aware-validation-2026-05-04.md |
| Payment truth reconciliation Gate: G5 Critical flows protected | Locked 2026-05-14: Stripe actual payment wins buyer/payment conflicts. | medium | Document non-Stripe reconciliation rules for PayPal/ThriveCart context without overriding Stripe actual payment state. | Use Stripe as authoritative conflict resolver in buyer-exclusion and lifecycle tests. Owner: Jane · Due: 2026-05-14 | export-manifest-2026-04-22.md; postgres-restore-proof-b-2026-05-04.md |
| ThriveCart buyer continuity Gate: G5 Critical flows protected | Clarified 2026-05-14: export is required, but ThriveCart is struggling to output a complete active-subscriptions CSV. Do not waive casually; use fallback reconstruction if the native export keeps failing. | high | Need complete active subscription truth. Preferred source is ThriveCart export; fallback is reconstructed active subscriptions from Stripe/PayPal payments + ThriveCart order/customer evidence. | Attempt safe ThriveCart export/API pull. If complete active-subscription CSV fails, build a reconciliation file from payment processor actuals and any available ThriveCart order/customer reports; only present waiver if neither path is sufficient. Owner: Jane + David · Due: 2026-05-15 | export-manifest-2026-04-22.md; PLAN_STATE.md; 2026-04-22-activecampaign-migration-safety-checklist-design.md §4.3 |
| Subscription continuity Gate: G5 Critical flows protected | Blocked: subscriptions table/export not present in the archive or current repo-tracked schema. | high | Need a source-of-truth decision for subscription status before moving payment-failure or renewal flows out of AC. | Define the current subscription truth source and keep renewal/dunning automations in AC until that path is proven. Owner: David · Due: 2026-05-14 | export-manifest-2026-04-22.md; supabase-schema-aware-validation-2026-05-04.md; PLAN_STATE.md |
| Product delivery dependencies Gate: G5 Critical flows protected | Audited but not rebuilt; current delivery path is still considered fragile. | high | Need a protected list of must-not-break purchase → access automations before broader CRM changes. | Identify the critical delivery flows and explicitly keep them out of the first cutover wave. Owner: David + Jane · Due: 2026-05-15 | PLAN_STATE.md risk register and active workstreams |
| Source-of-truth operating model Gate: G2 Mapping locked | Locked 2026-05-14: Supabase is live master. Stripe wins buyer/payment conflicts. AC lists are archive/reference unless temporarily needed for automation continuity. | medium | Translate locked source-of-truth rules into import, dedupe, suppression, and pilot QA procedures. | Update cutover implementation plan and use these rules in every import/reconciliation test. Owner: Jane · Due: 2026-05-14 | 2026-04-22-activecampaign-migration-safety-checklist-design.md §2; PLAN_STATE.md |
| AC renewal / rollback posture Gate: G6 Renewal decision | Locked 2026-05-14: David wants hard cutover. Jane risk framing: hard CRM/source-of-truth cutover with AC automation overlap/fallback, not blind full AC shutdown. | high | Need green/yellow/red go/no-go evidence before May 20 and rollback definition if duplicated automation fails. | Build live control board, duplicate `1 - Bought LYSP 2024`, archive inactive automation email copy, prove suppression/import rules, then run May 19 renewal decision review. Owner: David + Jane · Due: 2026-05-19 | PLAN_STATE.md; 2026-04-22-activecampaign-migration-safety-checklist-design.md §10; restore-test-runbook §11 |
Immediate build queue
- Duplicate
1 - Bought LYSP 2024in GHL. - Archive all inactive AC automation email copy as Markdown.
- Attempt safe ThriveCart buyer/order export.
- Write AC → GHL field/tag mapping.
- Run suppression reconciliation and pilot pre-send suppression test.
- Prepare May 19 go/no-go review.
What “ThriveCart export vs waiver” means
Export = get enough ThriveCart buyer/order/subscription evidence before cutover so product delivery and buyer exclusions are not guessed.
Current blocker: ThriveCart is struggling to output a complete active-subscriptions CSV.
Fallback: reconstruct active subscription truth from Stripe/PayPal actual payments plus any available ThriveCart order/customer evidence.
Given hard cutover, current board default is: export/reconstruction required, no waiver unless David explicitly approves later.