MySaaSIncome
This page contains affiliate links. We may earn a commission at no extra cost to you. Learn more.

Migrating CRMs Without Losing Client Data: Field Mapping & Export/Import

This guide is the mechanics: how to structure an export, map fields between an old CRM and a new one, handle the custom fields, tags, and pipeline stages that never line up 1:1, and validate that an import actually landed the way you expect. It doesn't cover the mistakes and planning judgment calls around a migration — timing, client communication, deliverability, piloting — that's a separate topic, and we've already written it up: for common mistakes to avoid during this process, see Common Mistakes When Migrating Clients to a New CRM. This guide picks up where that one leaves off — the actual how-to.

Before you export: inventory what exists

Before you touch an export button, get a clear list of what's actually in the old system. At minimum:

Automations, workflows, and any logic tied to the old platform generally can't be exported at all — they're rebuilt from scratch in the new system, which is a real project on its own and outside the scope of this guide.

Step 1: Structure the export

Step 2: Map fields between the old and new schema

This is the step that gets rushed and causes most of the actual data problems. Build a simple two-column mapping sheet — old field name, new field name — before you import anything, and work through it deliberately by category:

Step 3: Test the mapping on a small batch first

Don't run your full export through the mapping on the first attempt. Import a small batch — enough records to cover every tag, every pipeline stage, and every custom field you're bringing over, even if that's only a few dozen contacts — and check the results before touching the rest of the file. Confirm custom field values, tags, and pipeline stage all landed in the right place, fix whatever's wrong in your mapping sheet, and only then move to the full import.

Step 4: Run the full import

Step 5: Validate that the import actually landed correctly

A completed import isn't the same as a correct one. Before you consider the migration done:

Keeping two systems in sync during a transition

If clients or team members need to keep working in the old system for a stretch while you finish validating the new one, you may need the two systems to stay roughly in sync rather than doing one hard cutover. Zapier can push new records or updates between two systems during a transition period without needing to be a permanent part of your stack. Some newer tools like Whalesync also handle this kind of two-way sync, though it's a newer, less established option than the more common connector tools — worth a look if your case is a good fit, but not something we'd put ahead of tools with a longer track record without your own testing.

If GoHighLevel is the platform you're migrating into, it's worth reviewing its default field set and pipeline structure before you finalize your mapping sheet, since building the mapping around what the destination system actually expects saves a round of rework after the fact.

None of these steps are exotic — they're the same export, map, test, import, validate sequence regardless of which two systems are involved. The failure mode to avoid is skipping the mapping and validation steps because the import itself "completed successfully" — a successful import and a correct one are not the same thing, and the difference usually doesn't surface until a client asks about a record that's missing or wrong.