TL;DR: Move subscriber records, suppression rules, history, and flow state as separate jobs. Reconcile them before switching sends, keep one sending owner per audience, and test rollback without restoring outdated consent.
What does email platform migration include?
Email platform migration moves a marketing program between email service providers, or ESPs. It includes lists, permission records, campaign history, forms, templates, and automations. A successful move preserves who can receive which message and what has already happened to them.
This runbook covers marketing email, not employee mailboxes or a move from Gmail to Outlook. It assumes you have already chosen the destination. If the workflow itself needs review, start with our small-business automation guide before rebuilding it in another tool.
An email platform migration checklist needs more than a matching contact count. A person can exist in both systems while their opt-out, purchase history, or place in a welcome sequence disappears. Treat “without losing history” as a promise to keep needed records accessible, with their source and meaning intact—not a promise that every old report becomes a native destination report.
Use this approach in these situations:
| SMB situation | What the handover must preserve |
|---|---|
| A Shopify store changes ESPs | Order identifiers, marketing permission, suppression, and unfinished post-purchase messages |
| A home-service company replaces its newsletter tool | Service-area tags, quote follow-up ownership, and customer opt-outs |
| A B2B firm moves nurture into a new platform | Account links, form source, sales exclusions, and messages already sent |
| A membership business consolidates lists | Topic choices, cadence, membership status, and existing renewal notices |
| A retailer combines several audiences | Original list membership and consent scope before any deduplication |
Keep receipts, password resets, and other critical transactional mail on their existing route unless their migration is separately scoped and tested. A working promotional newsletter does not prove that a purchase receipt still arrives.
How do you preserve consent and subscriber history?
Preserve consent as dated evidence plus an enforceable sending state, and preserve history in both usable destination fields and a protected archive. Move suppressed records as suppression data, never as fresh subscribers. Records with unclear permission stay outside promotional sends until the owner resolves them.
Create a field map before the first import. A customer relationship management system, or CRM, stores customer and sales records; its contact flag is not automatically the authority for marketing permission. Name the system that owns each field and map the destination's native subscription controls, not only custom labels.
| Record | Minimum information to preserve | Acceptance check |
|---|---|---|
| Identity | Source contact ID, destination ID, email, CRM/customer ID | One reviewed mapping per person; disputed matches quarantined |
| Subscription | Channel, list/topic scope, status, effective time, source | Destination eligibility matches the approved scope |
| Permission evidence | Capture form/source, timestamp, notice version or evidence reference | A reviewer can retrieve the supporting record |
| Suppression | Unsubscribe, complaint, bounce, or administrative reason; scope and time | Blocked test profiles cannot receive promotional mail |
| Preferences | Topics, frequency, language, time zone | Values survive the move without widening permission |
| Segmentation | Tags, custom fields, original lists, rule definitions | Rebuilt segments match expected member IDs |
| Engagement | Event time, type, source campaign/message ID | Original time is retained; import time is separate |
| Purchases | Stable order ID, amount, USD/currency field, refund status | Duplicate imports do not create duplicate purchases |
| Flow progress | Flow/version, last completed step, next due time, owner | Already-completed messages do not send again |
Normalize obvious formatting differences, but do not merge people only because names match. Keep the original values and a merge log. When one address belongs to multiple lists, preserve list-specific choices; when a global opt-out exists, it blocks all promotional lists covered by that request. Our preference-center sync guide explains how to keep those choices consistent after launch.
Export more than the subscriber CSV
Save contact statuses, campaign reports, message content, flow diagrams, templates, and form settings. Mailchimp allows one account export per 24-hour period. Its account-backup documentation describes separate contact-status files and reporting folders, so request the export early and verify the downloaded contents.
For each file, record its name, export time, source, row count, and checksum—a fingerprint that detects a changed file. Keep exports in restricted storage, name an owner, and set a retention/deletion schedule. Test retrieval of a few old records; a ZIP file nobody can open is not a useful archive.
History support is route-specific. Klaviyo's Mailchimp migration guide documents a 90-day initial campaign-history window, excludes A/B-test campaigns from the listed engagement sync, and requires separate tag migration. Older or unsupported records therefore need an archive or a separately tested import path.
Do not replay old opens or purchases as new live events to rebuild history. Use supported historical imports with sending disabled, or store clearly named historical properties such as legacy_last_click_at. Keep source campaign IDs and metric definitions so the next operator does not compare unlike reports.
Make suppression win the import
Prepare the suppression state before enabling any destination sending. Where supported, load it before subscribers; then recheck it after every import and integration sync. Import order alone is not protection, because an update can change subscription state later.
Test contacts that already exist at the destination, too. Klaviyo documents a case where an already-active profile is not automatically suppressed when its Mailchimp record was cleaned or bounced; a separate suppression import is needed. Verify this exception against the migration guide and test actual send eligibility.
Treat a conflict as unresolved unless the source records show a valid later change. An old “subscribed” snapshot must never overwrite a newer opt-out. Keep inactivity decisions from your email sunset policy; moving software is not a reason to reactivate cold contacts.
How do you move active flows without restarting them?
Move an active flow by choosing who finishes it, recording each participant's progress, and preventing the other platform from sending the same step. Rebuilding the diagram does not move the waiting queue. Keep imported profiles out of new enrollment until the chosen handover policy is tested.
An email flow is a sequence triggered by an event or list change. List imports can themselves be triggers: Klaviyo tells operators to turn off list-triggered flows before uploading existing contacts, and its CSV uploads do not trigger double opt-in. See the subscriber-import instructions.
Choose one policy for each flow, not one policy for the entire account:
| Policy | When it fits | Required control |
|---|---|---|
| Drain on the old ESP | Short sequences with a known finish date | Stop new enrollment; old participants remain excluded from the replacement |
| Resume at a mapped step | Destination can represent progress and due times reliably | Import a reviewed participant manifest; skip completed steps |
| Stop and admit only future events | Old offers are stale or continuation is not worth the risk | Document the missed-message tradeoff; do not enroll the old list again |
For a welcome flow, suppose a subscriber already received message one and is waiting for message two. That person either finishes on the old ESP or resumes at message two through a tested route. They do not enter a new welcome flow just because the contact CSV arrived. Use the welcome-email workflow guide to check the replacement's triggers and exits.
Maintain a handover ledger with contact_id, flow_id, flow_version, source_event_id, last_sent_step, next_due_at, and sending_owner. Record provider message IDs once a send is accepted. Before resuming, exclude steps already accepted by either provider; a timeout is not proof that no email left the system.
If the old tool cannot stop new enrollment while safely finishing existing participants, do not claim that it can drain. Choose a brief pause and tested resume, or stop the old sequence explicitly. Recheck opt-outs, purchases, cancellations, and support exclusions at the moment each remaining message becomes due.
Build the email migration plan in seven steps
Run the migration as a controlled handover with evidence at each gate. The sequence below separates data movement from permission to send, then closes the gap created by changes during the move. Give one person authority to stop the cutover.
Keep a shared document titled “Email Platform Migration Runbook: Move Lists, Flows, and Consent Without Losing History.” Attach the field map, participant ledger, export manifest, test results, owner list, and rollback checklist. These are working records, not a replacement for the ESP's own setup instructions.
1. Inventory and freeze the design
The marketing owner lists email marketing campaigns, flows, forms, landing pages, popups, ecommerce connections, CRM updates, and scheduled imports. Pause edits to their rules during rehearsal, but continue capturing legitimate customer changes. Separate the rules freeze from the later sending pause.
For every connection, record its current destination and the person who can switch it. Include hidden routes such as a Zapier action attached to an old form. Pass this gate when each incoming event and outgoing message has a named owner.
2. Rehearse a small import with sending disabled
Create controlled test profiles for subscribed, unsubscribed, bounced, unknown-permission, duplicate, and already-existing contacts. Import them with destination campaigns, flows, and integration-triggered messages disabled. Klaviyo limits each subscriber-import CSV file to 50 MB. Follow its import requirements when splitting files.
Compare actual status fields, segment membership, and eligibility—not only “import successful.” Re-run the same batch and confirm that it updates the same records without duplicate events or extra enrollment. Keep batch IDs and the destination job result for reconciliation.
3. Configure and test the sending route
The domain administrator follows the destination's authentication instructions and tests a real message to controlled inboxes. SPF names authorized senders; DKIM signs messages; DMARC checks authentication alignment with the visible sender domain. Preserve the old route's required records while it still has authorized work.
Google requires SPF or DKIM for all senders to personal Gmail accounts, and SPF, DKIM, and DMARC for bulk senders. Its sender guidelines also specify alignment and unsubscribe requirements. Inspect received headers, reply routing, visible opt-out links, and applicable one-click unsubscribe headers; a verified-domain badge alone is insufficient.
4. Import the baseline and reconcile record sets
Load the reviewed baseline with sending still disabled. Compare expected and actual contact IDs by status, not just totals. Reconcile subscribers, scoped opt-outs, complaints, bounces, unknown records, segments, supported events, and flow participants separately.
For example, an illustrative baseline of 12,000 unique contacts could contain 8,400 eligible subscribers, 2,100 unsubscribed contacts, 500 bounce/complaint suppressions, and 1,000 unresolved records. Those mutually exclusive buckets sum to 12,000, but only 8,400 are eligible under this example's policy. An equal total with swapped statuses fails the gate.
5. Close the change gap and switch ownership
Record a cutoff time in UTC, pause affected promotional sends, and capture all changes since the baseline. This final delta includes new signups, opt-outs, preference changes, deletions, orders, and messages accepted by the old sender. Apply it before enabling the destination.
Use one controlled event route or a short durable holding queue while connectors switch. Confirm that every change through the cutoff was applied; then release later events to the new owner with deduplication. Continue accepting opt-outs during the pause, and block sending if their delivery to the active sender cannot be confirmed.
Old emails still create new opt-outs after cutover. Keep those endpoints working and feed their changes into the current suppression state. A draining legacy flow needs the same fresh opt-outs and exit events; it must pause if that feed fails. Integrations with built-in delays need an explicit reconciliation step, not a hopeful wait.
6. Release a limited cohort and exercise failure paths
Start with recently engaged, permissioned contacts and a simple message. Increase volume only after authentication, delivery, complaints, opt-outs, and duplicate-send checks remain acceptable. Set the cohort size and monitoring window with your provider; a tiny inbox test does not establish deliverability for the whole list.
Google recommends keeping user-reported spam rates below 0.1% and avoiding 0.3% or higher. Those figures come from its sender FAQ, not from a universal ESP dashboard formula. Small lists may lack enough Postmaster data, so missing data is not a passing score.
| Failure test | Passing result | Stop condition |
|---|---|---|
| Same signup arrives twice | One profile and one intended flow enrollment | Duplicate enrollment or message |
| Opt-out arrives during import | Newer opt-out blocks both senders | Any promotional eligibility remains |
| API times out after accepting a batch | Job/status check resolves accepted records before retry | Acceptance state remains unknown |
| Required field or permission is blank | Record stays quarantined with a visible reason | Blank value becomes subscribed |
| Old and new systems receive one purchase | One sending owner handles its intended step | Both queue the same message |
| Suppression sync stops | Affected promotional sends pause; events remain recoverable | Sending continues with stale permission |
7. Prove rollback, then retire the old sender
To roll back, pause destination sending first and resolve already-accepted messages. Export its new contacts, opt-outs, deletions, purchases, and send ledger back to the authorized old route. Reconcile those changes, switch event ownership, and resume only unsent, still-eligible work.
Do not restore a pre-cutover subscriber snapshot over current consent. An email already sent cannot be rolled back, and restarting both platforms repeats the incident. If the destination is unavailable and its latest sends or opt-outs cannot be recovered, keep promotional sends paused until the uncertainty is resolved.
Archive final reports, verify that legacy forms and links still behave as intended, then remove obsolete integrations and credentials. Klaviyo's Mailchimp guide warns that cleanup while the integration remains connected can propagate suppression. Separate account cleanup from the final synchronization decision.
An operator composite with a measurable handover
A useful migration outcome is verified continuity plus lower ongoing work, not an unexplained jump in attributed revenue. The following seven-paragraph example is a hypothetical operator composite for planning, not a public customer claim or a measured That'sGonnaHelp engagement. All business counts, costs, and outcomes in it are assumptions.
Consider a small Shopify retailer moving from Mailchimp to Klaviyo. Its baseline contains the illustrative 12,000 contacts above, four active flows, and two years of campaign exports. One marketer spends an assumed six hours each month repairing inconsistent segments and checking which system owns a send.
The team creates a protected export folder and uses a spreadsheet to map IDs, subscription states, and historical fields. Shopify remains the order authority. The team tests the destination's native Mailchimp integration and CSV imports with sending off, then checks old and new signup forms using controlled addresses.
The rehearsal finds two problems: a historic purchase would retrigger a post-purchase message, and a previously active destination profile remains emailable despite a source bounce. The team blocks historical events from live enrollment and repairs the suppression mapping. It then repeats those exact tests before allowing a pilot.
The team drains a short welcome sequence on the old sender while keeping its participants out of the new one. Both routes receive current opt-outs, and each participant has one sending owner. For context, Mailgun's named Customer.io case describes a three-week traffic ramp; that infrastructure-scale case supports gradual handover, not this retailer's assumed schedule or results.
In the composite's assumed acceptance results, all 12,000 IDs reconcile, the 3,600 blocked or unresolved records remain outside promotional sends, and every pilot participant has the expected owner. The test matrix records no duplicate or suppressed sends. That means the controlled tests passed; it does not establish a permanent zero-error rate or guarantee inbox placement.
Suppose ongoing manual work falls from six to two hours per month, valued at $50 per hour, and net software savings are $100 monthly. The modeled benefit is $300 per month: four hours × $50 plus $100. At $3,600 in one-time effort and transition costs, simple payback is 12 months; no revenue uplift is included.
How much does email migration cost?
Email migration cost includes mapping, rebuilding, testing, dual subscriptions, and post-cutover monitoring. Price the work by flows, data quality, and integration complexity as well as contact count. The USD table below is a planning model, not a vendor quote or a market average.
| Cost line | USD amount or calculation | Evidence or assumption |
|---|---|---|
| Klaviyo Free | $0/month; up to 250 active profiles and 500 email sends/month | Public pricing checked September 6, 2026; suitable only within its limits |
| Mapping, rebuild, rehearsal | 30–60 hours × $50/hour = $1,500–$3,000 | Assumed small-project labor range; replace with your estimate |
| Overlap, archive and monitoring | $300–$900 total | Assumed transition allowance; paid ESP tiers need current quotes |
| Total project allowance | $1,800–$3,900 | Sum of the two assumed project-cost rows |
| Composite example | $3,600 one-time; $300 monthly net benefit | Assumptions from the example, not observed savings |
The free-plan limits are published by Klaviyo. They are not a budget for a 12,000-contact migration. Confirm billable-profile definitions, send limits, support, retained history, renewal dates, and cancellation terms for both actual accounts before approving spend.
Use the automation ROI calculator to test your own labor and recurring-cost assumptions. Simple payback equals one-time cost divided by monthly net benefit. In the composite, counting only the $100 subscription saving gives a 36-month payback; the 12-month figure depends on actually reclaiming four monthly hours at the stated value.
Saved capacity is not automatically cash saved. If nobody uses those hours productively and staffing costs stay fixed, report the time benefit separately. Keep old and new revenue reports split at cutover until attribution windows, event definitions, refunds, and currencies are aligned.
Limits and common migration mistakes
Delay migration when permission records cannot be reconciled, critical flows cannot be safely handed over, or nobody can monitor the cutover. Repairing those gaps is more useful than importing them into new email marketing software. A seasonal sales peak is also a poor time to test an unproven sending route.
This runbook is not a good fit for a mailbox migration, a full CRM replacement, or a change in the legal purpose of a mailing list. Those require their own data and approval scope. It also cannot make unsupported historical events behave exactly like native destination events.
Avoid these five mistakes:
- Equating list membership with permission. Preserve native subscription and suppression states alongside tags.
- Importing with welcome flows live. Existing subscribers can look like fresh signups.
- Treating equal totals as equal records. Compare IDs, status buckets, and segment members.
- Keeping both senders active without ownership. Define responsibility per flow and participant, including retries.
- Canceling the old account immediately. Old opt-out links, hosted assets, reports, and rollback dependencies may still be needed.
FAQ
The final migration questions concern timing, import limits, re-permission, and safe retirement. Resolve them against the specific source and destination accounts before scheduling cutover. These answers distinguish the proposed operating policy from documented platform behavior.
How long does email migration take?
For a modest account, allow a planning window of two to four weeks for mapping, rebuilding, rehearsal, and monitored handover. This is an estimate, not a researched industry benchmark. Long-running flows, export limits, unsupported history, or permission disputes can extend it; leave the date open until the rehearsal gates pass.
What is the best email migration tool?
Use a supported native connector when its documented field and history coverage matches your requirements; add verified CSV exports for gaps. Choose a custom API transfer only when necessary records cannot move safely that way and someone can maintain its retry and reconciliation logic. A mailbox migration tool is not a substitute for an ESP migration tool.
Do subscribers need to opt in again after migration?
Do not reset permission just because the software changes. Carry forward verified permission within its original scope, subject to applicable law and the destination's rules. Unclear records remain excluded from promotional sends; do not assume a re-permission email is allowed merely because you lack evidence for the original consent.
Can you keep old campaign open and click data?
You can retain exportable records in an archive, but native destination reporting depends on the supported import route. Before selecting a connector, test an old campaign outside its normal history window and one unusual campaign type. Record unsupported fields as known gaps instead of substituting import timestamps or claiming that aggregate reports equal per-person event history.
When can you cancel the old email platform?
Cancel only after its remaining flows, report access, hosted assets, and old opt-out endpoints have a verified replacement or no remaining dependency. The FTC says an email opt-out mechanism must work for at least 30 days after the message is sent. Its CAN-SPAM guide also requires honoring opt-outs within 10 business days; Google recommends 48 hours. This runbook targets immediate suppression, and those periods are not permission to ignore a request until the deadline.
What should you do if an import times out?
Check the import job and destination records before retrying, because the request may already have succeeded. Resume confirmed missing batches with stable IDs and sending disabled. If the provider cannot establish what was accepted, keep the affected audience paused and resolve the uncertainty with support before sending or replaying events.
Answer clarity notes
This article separates current public documentation from proposed operating controls and illustrative business math. Its migration checks are recommendations, not certification of a particular account. Do not turn the example's assumptions into a customer success claim.
- Dates: the publication date is December 19, 2025. Sources and the free-plan price were checked on September 6, 2026; they describe that later review, not historical 2025 capabilities or prices. Recheck vendor documentation before acting.
- Evidence: linked vendor and government pages support attributed facts. The retailer example is an operator composite with hypothetical counts and results; the named Customer.io case is Mailgun's public account of an infrastructure migration.
- Costs and ROI: labor rates, project allowances, the two-to-four-week window, savings, and payback are planning assumptions, not guarantees. They are not quotes or benchmarks. Paid ESP pricing was not verified and is not quoted.
- History: preserving history means retaining accessible source records and migrating supported fields. It does not guarantee identical native reports, full event portability, or permission to retain personal data indefinitely.
- Scope: this is an operating guide for US SMB marketing email. The FTC and Google links support the stated rules, but the article is not legal or platform-policy advice and does not resolve consent requirements for every jurisdiction or audience.
Sources
These primary sources support the specific export, import, delivery, pricing, and opt-out facts linked in the article. Their capabilities and terms can change. The cost model and retailer composite are separate assumptions.
- Mailchimp: Export and back up account data
- Klaviyo: How to migrate from Mailchimp
- Klaviyo: How to import subscribers to a list
- Google: Email sender guidelines
- Google: Email sender guidelines FAQ
- FTC: CAN-SPAM compliance guide for business
- Klaviyo: Pricing and free-plan limits
- Mailgun: Customer.io migration case study
That'sGonnaHelp can help turn your account inventory into a scoped migration and test plan. Bring the flow list, permission map, and one sample export so the discussion starts with the actual handover risk.

