Back to blog
CRM implementation12 min read

How to migrate data from Excel into a CRM: the seven-gate plan

A practical, gate-by-gate plan for moving a messy spreadsheet into a CRM without losing customer history — from snapshot and cleaning to test import, verification, and rollback.

Niro Digital

You can move a messy spreadsheet into a CRM without losing the customer history it holds, but only if you treat the migration as a sequence of seven verifiable gates rather than one large import. Each gate has a go condition; if a gate fails, you either loop back to the failing step or stop and hand the job to a professional. This guide gives you that sequence: snapshot and freeze, audit columns, standardise and deduplicate, map to the import template, run a small test import, verify the result, then run the full import with a rollback plan. The framework is professional guidance, not a guarantee that any individual file will import cleanly. It assumes the CRM is already chosen, and where Pipedrive and HubSpot appear it is to name capabilities in their published import documentation, not to walk you through every button.

01

The seven-gate plan at a glance

A verification gate is a stop-and-check point: you continue only when the evidence in front of you says the step worked. The table condenses the whole route. Failures loop back to the previous gate; a separate hand-over test turns an uncleared gate into a decision to get professional help.

GateGo conditionIf it fails
1. Snapshot and freezeA read-only backup exists and restoresFix the backup before editing anything
2. Audit columnsEvery row has values for the CRM's mandatory import fieldsFill or remove rows before mapping
3. Standardise and deduplicateFormats follow explicit rules; duplicates removed by a written rule setRework until the rules apply cleanly
4. Map to the import templateEvery spreadsheet column maps to a CRM field; custom fields already existResolve unmapped fields
5. Test importA small sample imports cleanly into a sandboxRead the skip file and loop back
6. VerifyRecord counts and spot-checks match the sourceFix the named rows and retest
7. Full import with rollbackPost-import checks pass and rollback is confirmedRoll back, then re-run from the failing gate
02

What an import can and cannot carry

Before cleaning anything, settle what the import will actually move. A spreadsheet can carry only the data that fits in its columns, and each CRM decides which objects its importer will accept. Pipedrive's documentation states that a spreadsheet import can add or update eight object types in bulk: people, organisations, leads, deals, projects, activities, notes, and products. Notes are the constrained one: a note must be linked to an existing person, organisation, deal, lead, or project, and cannot be imported standalone. HubSpot's import tooling and API can populate CRM records and activities including contacts, companies, and notes.

Treat email thread history and attachments as not covered unless your vendor's import documentation says they are. Neither has a natural spreadsheet column, and they are the two items sales teams most often expect to appear later. Check the documentation before you promise the sales team that full history will appear in the new system. If the spreadsheet is only one of several systems holding customer history, a standard platform import may never be complete; custom software development covers software built around how your operations actually work.

03

Gate 1: Snapshot and freeze your spreadsheet

Make the backup before you touch anything. Save the master file under a versioned name — for example leads-master-2026-08-21.xlsx — and set it read-only. Open the backup from a separate location and confirm the rows you expect are present. All cleaning then happens on a second working copy, never on the master. The gate clears when a read-only backup exists and you have restored from it once. If you cannot restore it, do not proceed; a backup you cannot restore is not a backup.

04

Gate 2: Audit columns against the CRM's mandatory fields

Mandatory import fields are the columns your CRM refuses to proceed without. Pipedrive makes the rule explicit: people require a person name, organisations require an organisation name, and products require a product name. Leads and deals each require at least one lead or deal field plus a person name or organisation name. Projects require at least one project field plus a deal title, person name, or organisation name; activities have no mandatory fields.

Open the working copy and filter each required column for blanks. If a row is missing a mandatory field and you cannot fill it from another source, remove that row from the import file and keep it in the backup — do not invent a value. If mandatory fields are missing, Pipedrive creates no items from that file and generates a skip file, a list of what was not imported and why. That turns a failed import into a visible, diagnosable one rather than a silently partial import.

05

Gate 3: Standardise formats and deduplicate by rule

Vague cleaning is how imports go wrong. Replace it with field-level rules you can apply with filters, not by eye. The table shows the shape of the rules; the CRM's import template defines the exact accepted formats.

FieldInconsistentStandardised
Phone077-1234-567+44 77 1234 567
Phone031 555 123+386 31 555 123
Emailj.doe@companyj.doe@company.com (corrected at source)
Date05/04/20242024-04-05 (use the order the CRM expects)
Statusnew / NEW / NewNew
CompanyACME Corp. / Acme CorporationAcme Corporation

Use one international phone format, valid email domains, one date format in the order the CRM expects, picklist values that match the CRM's options exactly, and one canonical company name per entity. Choose the canonical name by an explicit rule — for example, the most recent version in your records — not by whatever looks right in the moment.

Then deduplicate by rule, not by eye. Define what counts as a duplicate: the same email address, or the same company name and postcode for organisations. Decide which row wins: the most recently updated row, or the one with the most populated fields. Write those two rules down, apply them with a filter or Excel's built-in Remove Duplicates, and keep the removed rows in a separate archive rather than deleting them permanently.

06

Gate 4: Map columns to the CRM import template

An import template is the structure your CRM expects — its columns, field names, and which fields are mandatory. Use the vendor's sample template as the target, not your own best guess. Pipedrive publishes downloadable sample import spreadsheets in XLSX and CSV, with mandatory fields marked by a red asterisk and a reference tab named "READ ME All default Pipedrive fields". Pipedrive accepts XLS, XLSX, and CSV files for bulk import.

Map every spreadsheet column to a CRM field. Pipedrive fields fall into three types — default, system, and custom — and not all can be mapped during import: some system fields are restricted or set automatically. For multiple-option custom fields, the custom field must already exist in the account before import, and each option must be mapped individually; address and phone-type fields each require an extra mapping step. Leave no column unmapped unless you are deliberately dropping it, in which case write the omission down. If a field your team relies on has no sensible home in the template, that is a signal to stop and look at custom CRMs.

The table below is an example for the spreadsheet fields this guide covers. Check every row against your chosen CRM's import template before importing.

Spreadsheet fieldTarget CRM field/objectCustom field needed?If no matching import field
Contact namePerson/contact record — name fieldNoCreate a custom field before import, or deliberately drop the column and record the decision
CompanyCompany/organisation record, linked to the contactNoCreate a custom field before import, or deliberately drop the column and record the decision
EmailContact record — email fieldNoCreate a custom field before import, or deliberately drop the column and record the decision
PhoneContact record — phone fieldNo, but phone-type fields can require an extra mapping stepCreate a custom field before import, or deliberately drop the column and record the decision
Lead statusLead or deal record — status/picklist fieldYes if the options are not already in the CRMCreate the custom field before import, map each option individually, or deliberately drop the column and record the decision
NotesNote object — in Pipedrive, linked to an existing person, organisation, deal, lead, or projectNoCreate a custom field before import, or deliberately drop the column and record the decision
Follow-up dateContact or lead/deal record — date fieldYes if no standard date field existsCreate a custom field before import, or deliberately drop the column and record the decision
07

Gate 5: Run a small test import

Use a non-production environment only if your CRM documents one. Otherwise, use the smallest representative test import that your CRM's documentation permits, and confirm how to remove or isolate those test records before importing.

In Pipedrive, importing is not available to every user by default — only users with the correct global permission enabled can import — so confirm your access before the dry run. HubSpot's guidance includes a file-requirements and technical-limits section; read it before exporting a large file.

The point is to find failure modes on rows like the worst of your data, not to confirm that the easy rows pass. If rows fail, the skip file lists what was not imported and why, which gives you a repair list.

08

Gate 6: Verify the test results

Verification is the step most people skip. Count the records in the test environment and compare the number against the source spreadsheet. Then spot-check a random sample — not the first ten rows — field by field: phone, email, status, owner, linked company. The go condition is a match on counts and no unexplained differences in the spot-check. If the test failed, the skip file names the rows that need fixing; loop back to the relevant earlier gate rather than proceeding. A test that fails and is ignored is worse than no test.

09

Gate 7: Run the full import with a rollback plan

Rollback is the ability to return to the pre-import state. Confirm which path you have before the full run: either the CRM has its own undo or import rollback, or you can restore from the Gate 1 snapshot and remove the partial result. Run the full import only when Gate 6 passes.

After it completes, walk a short post-import checklist: verify record counts against the spreadsheet, spot-check random records rather than the first page, confirm mandatory fields have values, and check a sample of linked records such as people to organisations and notes to people. If something is wrong, stop, use the rollback path, and re-run from the failing gate with corrected data.

10

The hand-over test: when to stop and book a professional

Hand the job to a professional if you cannot account for rejected test rows, cannot confirm a recovery path before the full import, or cannot resolve required-field and mapping problems from the CRM’s documentation.

Niro Digital's stated services are AI automation, custom software development, recruiting advertising, and lead generation advertising. For this job, the relevant work sits in custom software development. Niro Digital publishes indicative price ranges for typical projects on its pricing page, so you can judge whether professional help fits before contacting anyone. You can reach Niro Digital at info@nirodigital.com or +386 70 630 880.

Working checklist

GateOwnerCompletion dateEvidence checkedFailure foundNext action
1. Snapshot and freezeA read-only backup exists and restores
2. Audit columnsEvery row has values for the CRM's mandatory import fields
3. Standardise and deduplicateFormats follow explicit rules; duplicates removed by a written rule set
4. Map to the import templateEvery spreadsheet column maps to a CRM field; custom fields already exist
5. Test importA small sample imports cleanly into a sandbox
6. VerifyRecord counts and spot-checks match the source
7. Full import with rollbackPost-import checks pass and rollback is confirmed
Hand-over decisionYou can account for every rejected test row, you have confirmed a recovery path before the full import, and you can resolve required-field and mapping problems from the CRM’s documentation

If the verification gate shows more risk than you want to carry alone, book a strategy call.

Sources

  1. 01Importing data into Pipedrive with spreadsheetssupport.pipedrive.com
  2. 02Importing: mandatory fields - Knowledge Base | Pipedrivesupport.pipedrive.com
  3. 03CRM API | Imports - HubSpot docsdevelopers.hubspot.com
  4. 04Art. 5 GDPR – Principles relating to processing of personal ...eur-lex.europa.eu
  5. 05Import fields - Knowledge Base | Pipedrivesupport.pipedrive.com
  6. 06Importing: advanced mapping - Knowledge Base | Pipedrivesupport.pipedrive.com
  7. 07Importing: sample import spreadsheetssupport.pipedrive.com
  8. 08Format import filesknowledge.hubspot.com

Turn this into your system

Reading about it is one thing. Let's map what it would take to run it inside your business.

Book a strategy call
Scroll handle
0