This is the safety framework for moving off ActiveCampaign without putting the Jane Media customer list at risk. The point is not just migration. The point is durable customer data with proven backup and restore paths.
Primary Goal
Safe migration off AC
Master System
Supabase
Non-Negotiable
Restore test before cutover
Cutover Rule
No AC shutdown until verified
Primary rule: Do not decommission or materially alter ActiveCampaign until backup, restore, and reconciliation are proven.
Status update — April 22, 2026: Phase 1 backup exports are complete, archived in 2 locations, and Phase 1.5 restore proof passed with warnings. The remaining safety gaps are the full canonical field/tag mapping, a Postgres- or Supabase-native restore proof, and actual migration / cutover work.
Storage: one copy in /root/.openclaw/workspace/Exports/ and one copy in Google Drive /Exports.
/root/.openclaw/workspace/Exports/
Google Drive /Exports
4.2 Supabase snapshot export
contacts
purchases
subscriptions(not present in current schema)
email_suppressions
Any legacy leads table still in use
4.3 Payment system backup
Stripe customers and payments relevant to Jane Media
PayPal purchase history if active
ThriveCart buyer exports if used as intake source
Backup rule: minimum of 2 locations before migration proceeds.
5. Phase 2 — Define canonical field mapping
Identity model
Primary dedup key: email
Internal PK: UUID
Human-readable ID:customer_id
Required fields to preserve
email
first_name
last_name
phone
source
tags
original created / join date
unsubscribed_at
lifecycle or customer status
purchase history reference
Required migration decisions
Exact AC field → Supabase field mapping
Exact AC tag → GHL tag mapping
Deprecated fields kept for archive only
Duplicate email resolution rules
Malformed or blank email handling
No import starts until this mapping is written down.
Current progress: the identity model is already decided — email is the dedup key, UUID is the internal primary key, and customer_id is the human-readable identifier. Full AC field mapping and AC → GHL tag mapping still need to be locked.
6. Phase 3 — Restore test (mandatory)
This is the trust-building step.
Goal
Prove we can reconstruct the list from backups.
Test process
Take one backup set from AC and Supabase exports
Restore into a safe test destination
Confirm row counts match source export
Confirm key fields survive import/export cycle
Confirm unsubscribe data survives
Confirm at least 10 random customer records match exactly on core fields
Restore test must verify
count integrity
email integrity
tag integrity
suppression integrity
created date integrity
Current result: restore proof passed with warnings in an isolated SQLite environment. A Postgres- or Supabase-native restore is still recommended before irreversible cutover.
If restore test fails, migration pauses.
7. Phase 4 — Migration execution checklist
Migrate in batches, not all at once.
Per-batch checklist
Define batch scope
Export source batch from AC
Archive batch export before import
Import to Supabase / GHL according to approved mapping
Record import log with counts, duplicates, and errors
Reconcile counts immediately
Spot check 5–10 records manually
Verify unsubscribe status survived
Verify automations and tags behave correctly in target