CRM Migration Checklist Spreadsheet: Move Cleanly (Templates + Data Mapping)
CRMData MigrationHow-to

CRM Migration Checklist Spreadsheet: Move Cleanly (Templates + Data Mapping)

sspreadsheet
2026-01-26
10 min read
Advertisement

A practical CRM migration checklist with field-mapping templates, dedupe steps, validation rules and Apps Script tools to reduce post-migration cleanup.

Stop re-cleaning your CRM after every migration: a practical checklist that actually works

CRM migrations are notorious time sinks. You start with high hopes, export CSVs, run a few imports and then spend days — or weeks — fixing duplicates, broken relationships, bad dates and missing fields. If that sounds familiar, this guide is for you. Below you'll find a tested, step-by-step CRM migration checklist, ready-to-use field mapping templates, deduplication strategies, validation checks, and automation ideas (including Apps Script snippets) that reduce post-migration cleanup.

The 2026 context: why migrations still fail (and what’s changed)

Through late 2025 and into 2026, two trends made migration both easier and riskier. First, AI-assisted schema suggestions and low-code connectors speed up mapping. Second, heightened data governance and privacy rules mean a single overlooked field can create compliance headaches. Combine those with increasing CRM API complexity (GraphQL endpoints, rate limits, strong typing) and you need a rigorous checklist — not a hopeful CSV import. For cost and rate-limit planning, see our guide on cost governance and consumption discounts.

“Automate as much as possible — but validate everything.”

Quick wins: What a clean migration saves you

  • Faster sales ramp: accurate records mean reps spend time selling, not fixing leads.
  • Lower compliance risk: validated PII fields and consent flags reduce exposure.
  • Less IT overhead: fewer rollback/import cycles, smaller incremental costs for API calls.
  • Repeatable process: templates and scripts make the next migration predictable.

Top-level migration stages (inverted pyramid: do this first)

  1. Audit & snapshot — inventory sources, export samples, capture counts.
  2. Field mapping — create a canonical mapping sheet with rules and examples.
  3. Deduplicate & normalize — finish dedupe before transforms where possible.
  4. Validation & enrichment — run checks and repair rules.
  5. Test migration — small batch, reconcile counts and relationships.
  6. Full migration — run with monitoring, and keep a rollback plan.

Stage 1 — Audit & snapshot: how to make a migration safe

Before touching the target CRM, create a reliable baseline. Exports should include complete metadata and sample records.

  • Export full CSVs and a compact JSON (if available) for each object: Contacts, Accounts, Deals, Tickets, Activities.
  • Capture counts and last-modified timestamps. Create a single “snapshot” sheet listing: source_system, object_name, record_count, sample_size, last_exported.
  • Run a quick pivot to show distribution (leads by owner, accounts by region). That helps spot anomalies early. For binary artifacts and reproducible snapshots, follow binary-release best practices in binary release pipelines.

Stage 2 — The field mapping template (use this structure)

Mapping is where migrations live or die. Below is a compact, practical template you can copy into Google Sheets or Excel. Each column is a column in your mapping sheet.

  • source_system — e.g., HubSpot, Pipedrive
  • source_object — Contacts, Companies
  • source_field — e.g., email, phone, city
  • source_type — string, date, boolean, enum
  • sample_values — 3–5 typical values
  • target_field — target CRM field name
  • transform_rule — formula, script, normalization step
  • required — Y/N
  • validation — regex or lookup table e.g. email regex
  • lookup_table — reference for relationship mapping
  • notes — consent/legal flags, default values

Example row:

  • source_system: HubSpot
  • source_object: Contacts
  • source_field: phone_number
  • source_type: string
  • sample_values: "+1 (415) 555-1234"
  • target_field: Phone
  • transform_rule: =REGEXREPLACE(A2, "[^0-9+]", "")
  • required: N
  • validation: ^\+?[0-9]{7,15}$
  • lookup_table: —
  • notes: international normalization

Field mapping best practices (2026)

  • Map types, not just names. Date strings need a parse rule; enums require canonicalization.
  • Keep sample values. Sample-driven mapping surfaces hidden formats (e.g., dates like 01-02-03).
  • Define ownership. Who approves mapping changes? Add an approver column; see guidance on choosing the right CRM and governance for publishers.
  • Prepare lookup tables. For account IDs, company matches, territory codes — create a crosswalk sheet.

Stage 3 — Deduplication: 3 practical methods

Deduplication should mostly happen in the source or in a staging spreadsheet before import. Mix exact-match, fuzzy-match and rule-based strategies.

Method A — Exact-key dedupe (fast)

  1. Create a composite key column: e.g., =LOWER(TRIM(email)) & "|" & LEFT(TRIM(name),50)
  2. Use UNIQUE() or remove duplicates by the key.
  3. Flag records with missing keys for manual review.

Method B — Fuzzy matching (find near-duplicates)

When names/phones are noisy, use fuzzy matching. In Google Sheets, you can add a simple Levenshtein function via Apps Script. For Excel, use Fuzzy Lookup add-in or Power Query fuzzy merge.

// Apps Script: simple Levenshtein wrapper (add to Tools > Script editor)
function levenshtein(a, b) {
  if (a == b) return 0;
  if (a.length == 0) return b.length;
  if (b.length == 0) return a.length;
  var matrix = [];
  for (var i = 0; i <= b.length; i++) matrix[i] = [i];
  for (var j = 0; j <= a.length; j++) matrix[0][j] = j;
  for (i = 1; i <= b.length; i++) {
    for (j = 1; j <= a.length; j++) {
      if (b.charAt(i-1) == a.charAt(j-1)) matrix[i][j] = matrix[i-1][j-1];
      else matrix[i][j] = Math.min(matrix[i-1][j-1] + 1, matrix[i][j-1] + 1, matrix[i-1][j] + 1);
    }
  }
  return matrix[b.length][a.length];
}
  

Use normalized fields (lowercase, trimmed, stripped punctuation) and then calculate distance. Flag pairs under a threshold (e.g., <=2) for review.

Method C — Rule-based merges (business logic)

Apply business rules to decide merges: prefer latest activity record, prefer records with opt-in flag, or merge by account hierarchy. Encode these as priority columns and use SORT + UNIQUE with an index to pick the canonical record.

Stage 4 — Validation checks (pre-import QA)

Run these sanity checks in your staging spreadsheet and fail the migration until they pass. Add a validation column for each rule with Y/N and a reason for failures.

Core validation list

  • Record counts: source vs staging vs target (after test import).
  • Primary key uniqueness: no duplicates in target key column.
  • Referential integrity: all lookup IDs exist in their reference tables.
  • Email format & domain checks: regex + MX lookup where possible.
  • Phone normalization: E.164 validation regex.
  • Date ranges: created_date < closed_date etc.
  • Consent & legal flags: GDPR/CCPA required fields populated or marked as redacted.

Sample formulas

  • Unique key check: =COUNTIF(key_range, key_cell)=1
  • Email regex (Google Sheets): =REGEXMATCH(A2, "^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}$")
  • Phone length: =AND(LEN(B2)>=7, LEN(B2)<=15)

Stage 5 — Test migration: small batches, big checks

Always run a pilot run: 1–5% of records that are representative. Validate these after import using pivot tables and reconciliation queries. For migration orchestration patterns and rollback planning at scale, see the Multi-Cloud Migration Playbook.

  • Create pivot tables for counts by owner, stage, region — compare source vs target.
  • Random sample comparison: pick 100 random IDs and diff fields with VLOOKUP/XLOOKUP.
  • Verify relationships: accounts <-> contacts, opportunities <-> accounts are correctly linked.
  • Log errors from the target CRM import API and fix the staging CSV; never edit target records directly during testing.

Automation & Apps Script: speed up repetitive checks

Use Apps Script (Google Sheets) to automate validations, generate sample exports, and call APIs for live checks. Below are compact, practical snippets.

1) Auto-flag invalid emails

function flagInvalidEmails() {
  var ss = SpreadsheetApp.getActive();
  var sheet = ss.getSheetByName('Staging');
  var data = sheet.getRange(2,1,sheet.getLastRow()-1,3).getValues();
  var out = [];
  var re = /^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/;
  for (var i=0;i

2) Export a sample JSON for an import tool

function exportSampleJSON() {
  var ss = SpreadsheetApp.getActive();
  var sheet = ss.getSheetByName('Staging');
  var headers = sheet.getRange(1,1,1,sheet.getLastColumn()).getValues()[0];
  var rows = sheet.getRange(2,1,101,sheet.getLastColumn()).getValues();
  var out = rows.map(function(r){
    var obj = {};
    headers.forEach(function(h,i){ if (r[i] !== '') obj[h]=r[i];});
    return obj;
  });
  var file = DriveApp.createFile('sample_import.json', JSON.stringify(out));
  Logger.log('Saved sample to: ' + file.getUrl());
}
  

These small scripts cut hours from repetitive QA tasks. In 2026, combine them with AI-assisted anomaly detection and prompt templates in your pipeline to flag suspicious transformations earlier.

Post-migration reconciliation & clean-up

After full import, don't celebrate immediately. Reconcile summary numbers, then monitor for behavioral anomalies (e.g., sudden spike in email bounces).

  • Re-run pivot tables and run a reconciliation dashboard comparing source vs target by key metrics.
  • Monitor API error logs and webhook retry queues for 72 hours.
  • Use incremental checks to ensure delta updates (new/updated records since snapshot) were processed correctly.

Governance & rollback planning (must-have)

  • Rollback snapshot: export the target system before import (full export of affected objects).
  • Version your mapping: store mapping sheets in Git or in Sheets with timestamps and approver comments.
  • Rate limiting: abide by target CRM API limits; use exponential backoff and batching.
  • Compliance: record consent status and data handling decisions in the mapping sheet. For tenancy and onboarding automation patterns that help compliance, see onboarding & tenancy automation.

Case study (anonymized): SMB migration that avoided weeks of cleanup

A 1200-contact SaaS client migrated from a legacy CRM to a modern platform in late 2025. Using the mapping template above, dedupe rules and a two-step test migration, they:

  • Reduced manual cleanup from an estimated 5 business-days to a single day of manual review.
  • Cut duplicate contact rate from 12% to under 1% post-migration.
  • Ensured GDPR consent flags were preserved and logged, avoiding compliance gaps.

The secret was rigorous mapping, staged dedupe and a short, representative pilot batch.

Advanced strategies for 2026 and beyond

  • AI-assisted field matching: use LLMs or vendor tools to suggest mappings; always validate suggestions against samples.
  • Composable migrations: split by domain (accounts, activities) and move in logical phases to reduce blast radius.
  • Continuous sync for verification: run a two-way sync for a short period to compare systems rather than a single-shot move.
  • Observability: log transformations and keep a transformation trace for every record (who/what/when). For index and observability patterns, see edge-first directories and observability guidance.

Downloadable assets & templates (what to get right now)

Use these spreadsheets as starting points:

  • Field mapping template (columns listed above)
  • Staging QA workbook with validation rules and pivot sheets
  • Deduplication workbook: exact and fuzzy sheets + Apps Script for Levenshtein
  • Rollback & snapshot checklist

We offer a premium mapping pack with pre-built transforms for common CRMs (HubSpot, Salesforce, Zoho, Pipedrive) and Apps Script automation. That pack includes tested regex rules, phone normalization tables and consent handling examples tailored to 2026 privacy expectations.

Actionable checklist (copyable)

  1. Export full source objects and save snapshots (CSV + JSON).
  2. Create mapping sheet and fill sample values for every field.
  3. Run dedupe: composite keys then fuzzy matching for leftovers.
  4. Normalize phone, email, and date formats in staging.
  5. Run validation formulas and mark failures with a reason column.
  6. Run a pilot import (1–5%) and reconcile using pivot tables and random samples.
  7. Fix staging issues, then re-run pilot until pass criteria met.
  8. Export rollback snapshot of target before full import.
  9. Run full import with monitoring and throttling.
  10. Reconcile counts and run delta checks for 72 hours.

Final notes: avoid the common traps

  • Trap: relying solely on automatic mapping. Fix: validate against samples and require a human approver.
  • Trap: skipping dedupe. Fix: invest time in normalization before import.
  • Trap: ignoring relationships (accounts/contacts). Fix: build lookup tables and test relational imports.

Ready-made migration starters (next steps)

If you want to migrate with confidence, start with the mapping template and the staging QA workbook. Use the CRM selection and integration playbook to pick the right target, use the Apps Script snippets above to automate repetitive QA steps and add an AI-assisted mapping pass for speed — but always validate. In our experience, teams that follow a repeatable process and invest two to three days in mapping and dedupe eliminate the majority of post-migration cleanup.

Call to action

Download the free CRM Migration Checklist Spreadsheet and field mapping template now to run your first pilot migration this week. For ready-to-run transforms and Apps Script automation tailored to your source and target CRMs, explore our premium migration pack — it includes mapping templates for the major 2026 CRM platforms, dedupe scripts, and a 2-week support credit to get your migration over the line.

Advertisement

Related Topics

#CRM#Data Migration#How-to
s

spreadsheet

Contributor

Senior editor and content strategist. Writing about technology, design, and the future of digital media. Follow along for deep dives into the industry's moving parts.

Advertisement
2026-01-28T21:57:45.027Z