How-to guide

CRM migration checklist: mapping, pilot and cutover

A practical CRM migration checklist: inventory your data, map fields by meaning, run an awkward pilot, plan the cutover and reconcile the result. Includes a field-mapping worksheet.

Decide what is moving and what is staying

Export everything before you build an import file, and keep the untouched originals in a read-only folder so every cleaning step can be reversed. Count records by type and by owner. Those counts become the baseline you reconcile against after cutover.

Write a retention rule and apply it consistently. A typical rule for a small team: import every open deal, every deal closed in the last 24 months, and every contact and company with activity in that window; archive the rest as files. Record the exceptions. Leaving a record out of the new CRM is not the same as deleting it, so keep the archive.

Plan history separately. A contact CSV rarely carries email threads, attachments or a contact's links to several companies. Pipedrive's export, for example, covers leads, deals, organizations, people, products, activities, projects, notes and files in XLSX or CSV, and keeps each export file for 28 days, so download it promptly.

Decide what is moving and what is staying
ObjectCount before exportTypical decision
Companies / organizationsTotal, by owner, without a domainImport those with activity in the retention window
Contacts / peopleTotal, without email, likely duplicatesMerge duplicates in the source, then import
DealsOpen by stage and currency; closed by yearImport all open deals and recently closed ones
Activities and notesOpen tasks; notes on open dealsImport open tasks and active-deal notes; archive the rest
Files and attachmentsCount and total sizeArchive in shared storage; link from the record if needed
Users and ownersActive and inactiveMap every owner to an active destination user
Custom fieldsNumber of fields and share of records filledDrop fields filled on under 10% of records unless a report uses them

Map meanings, not just column names

A field called “status” can mean lead qualification, deal stage or customer lifecycle. Mapping all three to one destination field produces a clean-looking import with misleading reports. For each column, write what it means, its destination, its allowed values and what a blank should do.

Keep the old system's record ID on every imported record, in a dedicated field such as a custom text field named legacy_crm_id. Names are weak keys: two contacts can share a name and companies rebrand. Keep a crosswalk of source ID to destination ID after the pilot; it is how you investigate exceptions and run later updates.

Use each destination's own identifiers for updates. HubSpot matches on Record ID, a custom property that requires unique values, email for contacts and company domain for companies; an association import without identifiers for both records creates duplicates instead of links. Pipedrive updates existing records by its System ID, which you get by adding the ID column to a list view and exporting. An ID from the old CRM is not a Pipedrive System ID, so store it separately.

Check import limits before you split files. Pipedrive's spreadsheet importer accepts XLS, XLSX or CSV files up to 200,000 rows and under 50 MB. HubSpot accepts single-sheet CSV, XLSX or XLS files with a header row; free accounts are limited to 20 MB per file and 500,000 rows per day, paid accounts to 512 MB per file and 10,000,000 rows per day.

Map meanings, not just column names
Source fieldMeaning / transformationDestination / validation
deal_status = quoteA proposal has been sent, not merely draftedStage “Proposal sent”; reject values with no mapped stage
owner = sam@example.testMap the source user to an active destination userOwner; send unmapped owners to an exception list
value = 1200; currency = EURKeep value and currency togetherNumeric amount + currency; reconcile totals per currency
company_id = C-014Relationship to the company's source recordResolve through the ID crosswalk, not the display name
phone = 020 7946 0018Add the country code so the number dials from anywhere+44 20 7946 0018; flag numbers with no country
close_date = 03/04/2026Confirm whether the source writes day/month or month/dayISO date 2026-04-03 or 2026-03-04; reject ambiguous rows

Choose a pilot that is deliberately inconvenient

Ten tidy contacts prove nothing. Pick 20 to 50 records that include each of these: a duplicate contact, an owner who has left, a blank required field, an international phone number, a contact linked to two companies, a closed-lost deal, a deal with notes and an attachment, and a deal in a second currency. Learn the import screens on invented records first.

Check both the import summary and the records themselves. A row can import successfully and still link to the wrong company. Ask the deal owner to find the next task, open the related company and explain the history without opening the old export.

Log every error with its source ID, the failure, the fix and the reviewer. Do not re-import the whole file to fix five rows: confirm how the destination updates existing records first, or you will create duplicates. Pipedrive lets you revert a spreadsheet import within 48 hours, so run the pilot early enough to use that window if the mapping is wrong.

Plan the last update before switching systems

The old CRM keeps changing while you prepare. Pick a cutover window (Friday afternoon to Monday morning works for most small teams), freeze edits in the old system at a set time, take the final export and tell the team exactly where new work goes from that moment. Never run two systems that both claim to be the record of truth.

Name one person who approves the switch and write the stop conditions in advance: any open deal without an active owner, open-pipeline totals that differ from the baseline without an explanation, or a failed critical integration such as the website form. Keep the old system read-only for at least one billing cycle so people can look up history.

Pause automations in the destination before loading production data, or test them against the pilot. Depending on the product and settings, an import can fire workflows, assignment rules or emails to customers. Switch them back on one at a time after reconciliation.

Plan the last update before switching systems
StepWhenDone when
Announce the freeze time and where new work goesOne week beforeEvery user has confirmed
Pause destination automations and integrationsFriday, before importList of paused items saved
Freeze the old CRM and take the final exportFriday, 3 pmExport files stored read-only
Import in order: companies, contacts, deals, activities, notesFriday eveningImport summaries saved
Reconcile counts and pipeline totalsSaturdayEvery difference explained
Go/no-go decisionSundayApprover signs off in writing
First working day with an admin on handMondayException list has owners

Reconcile the work, not just the row count

Compare counts by object, owner and stage against the inventory baseline. Compare open-deal value separately for each currency. Then open a sample of 25 records across owners and check the company link, dates, notes and next activity by hand. Explain every intended difference: records excluded by the retention rule, merged duplicates and items left in the archive.

Make the first working day the real test. Each user should open overdue tasks, current proposals and new inquiries, and the manager should run the weekly report. Give every problem an exception owner and a deadline, and keep a short launch log so you can tell a data problem from a workflow change.

If HubSpot and Pipedrive have to run side by side for a while, set up a sync instead of repeating spreadsheet imports. Migration is a one-time cutover; ongoing synchronization is a question of which system owns each field and how conflicts are resolved.

How long a small-team CRM migration takes

For a team of up to about ten users and a few thousand records, plan two to four weeks of calendar time. The data load itself usually takes hours. The days go into cleaning duplicates, agreeing the mapping, rebuilding automations and reports that never migrate, and checking the pilot.

Assisted routes shorten the load, not the decisions. Pipedrive's Import from other software option uses Import2 and is free for up to 1,000,000 records; HubSpot offers Smart Transfer for moving from supported CRMs. Both still need the mapping, owners and pipelines decided first. Our step-by-step guides cover each direction between HubSpot and Pipedrive.

How long a small-team CRM migration takes
PhasePlanning estimateFinished when
Inventory and cleanup3–5 daysBaseline counts recorded; duplicates merged in the source
Field and stage mapping2–3 daysEvery column has a meaning, a destination and a rule
Pilot2–3 daysAwkward records pass the owner's check
Rebuild automations, reports and forms2–5 daysEach one is rebuilt or deliberately retired
CutoverOne weekendGo/no-go approved
Reconciliation and fixes1–2 weeksException list is empty

Template and next steps

A field-mapping sheet, a pilot acceptance list, a cutover plan with a named go/no-go owner and a reconciliation log. Adapt the fields to your own process and keep passwords, card details and other sensitive account data out of shared worksheets.

Download the field-mapping worksheet (CSV) ↓

Frequently asked questions

How long does a CRM migration take?

For a small team with up to about ten users and a few thousand records, plan two to four weeks of calendar time: about a week for inventory, cleanup and mapping, two or three days for a pilot, a weekend cutover and one to two weeks of reconciliation. The data load itself often takes hours; cleaning duplicates and rebuilding automations and reports takes the days.

What data should I migrate to a new CRM?

Migrate what people use to sell and serve customers: all open deals, deals closed in the last one to two years, contacts and companies with recent activity, open tasks, and the notes behind active deals. Archive the rest as exported files instead of deleting it. Drop custom fields that are rarely filled in unless a report depends on them, and keep the original exports untouched.

How do I avoid duplicates when importing data into a CRM?

Merge duplicates in the source first, then import with a unique identifier on every row. HubSpot matches on Record ID, email for contacts and company domain for companies; Pipedrive updates existing records by its System ID. Import companies before the contacts and deals that link to them, and never re-import a whole file to fix a few rows, because unmatched rows are created as new records.

Can you undo a CRM data import?

In Pipedrive, yes: a spreadsheet import can be reverted within 48 hours. For any other CRM, find its undo or bulk-delete route before the first production import. Either way, run a pilot of 20 to 50 deliberately awkward records first, keep the untouched source exports, and log each imported batch with its date and record count so a bad batch is easy to find.

Should I clean CRM data before or after migration?

Before. Merge duplicate contacts and companies, standardize phone and date formats, map every owner to an active user and remove obvious junk in the source export, not in the new CRM. Cleaning first keeps matching rules reliable and makes the reconciliation counts meaningful. Leave judgment calls, such as retiring old custom fields, to the mapping sheet, where each decision is written down.

Sources

Prices and plan limits come from each vendor's own pricing pages and documentation, checked on the dates shown. Vendors change packaging often, so confirm the final figure in your own quote.

  1. HubSpot: set up your import file — checked Oct 29, 2026Unique identifiers, associations, file formats and import limits.
  2. Pipedrive: importing data with spreadsheets — checked Oct 29, 2026File types, row and size limits, and reverting an import within 48 hours.
  3. Pipedrive: updating data with a spreadsheet — checked Oct 29, 2026Matching rows to existing records by System ID.
  4. Pipedrive: exporting data — checked Oct 29, 2026Exportable objects, formats and the 28-day file window.
  5. Pipedrive: importing from a previous CRM with Import2 — checked Oct 29, 2026Assisted import from other software, free up to 1,000,000 records.