Jane Media · CRM Cutover

CRM Cutover Control Sheet

Command board for the ActiveCampaign → GoHighLevel/Supabase cutover before the May 20 renewal pressure point. This board converts decisions, blockers, evidence, and next actions into one operating surface.

Updated May 14, 2026Posture: Hard CRM cutover targetSupabase: Live masterStripe wins buyer conflicts
Yellow / risky

Overall posture

Hard CRM cutover

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.

Locked

Master record rule

Supabase

Supabase is the live operating master. Stripe is authoritative when buyer/payment state conflicts.

Must duplicate

Critical automation

1

1 - Bought LYSP 2024 is the only active AC automation that must be duplicated before final cutover confidence.

Important distinction: “Hard cutover” here means hard CRM/source-of-truth cutover. Because the only operationally critical ActiveCampaign automation is 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

Met

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.
Partially locked

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.
Open

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.
Open

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.
Open

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.
Pending

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

DecisionAnswerOperating meaning
Supabase roleLive masterSupabase is the live operating master record set.
Buyer conflict winnerStripe actual paymentStripe wins buyer/payment conflicts. PayPal/ThriveCart provide reconciliation/delivery context.
AC listsArchive/referenceMove away from AC list dependency; use only as temporary automation continuity if needed.
AC automationsOverlap/fallbackOnly `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 exportRequired by defaultExport 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 postureHard CRM cutoverTarget 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

AreaStatusRiskGap / decisionRecommended next actionEvidence
Contact archive + identity mapping
Gate: G2 Mapping locked
Archive complete and two restore proofs passed; no approved AC→GHL/Supabase field map yet.mediumLock 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.highDecide 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.mediumDecide 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.highNeed 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.highNeed 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.mediumNeed 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.highNeed 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.highNeed 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.mediumDocument 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.highNeed 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.highNeed 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.highNeed 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.mediumTranslate 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.highNeed 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

  1. Duplicate 1 - Bought LYSP 2024 in GHL.
  2. Archive all inactive AC automation email copy as Markdown.
  3. Attempt safe ThriveCart buyer/order export.
  4. Write AC → GHL field/tag mapping.
  5. Run suppression reconciliation and pilot pre-send suppression test.
  6. 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.