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.
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.
| Gate | Go condition | If it fails |
|---|---|---|
| 1. Snapshot and freeze | A read-only backup exists and restores | Fix the backup before editing anything |
| 2. Audit columns | Every row has values for the CRM's mandatory import fields | Fill or remove rows before mapping |
| 3. Standardise and deduplicate | Formats follow explicit rules; duplicates removed by a written rule set | Rework until the rules apply cleanly |
| 4. Map to the import template | Every spreadsheet column maps to a CRM field; custom fields already exist | Resolve unmapped fields |
| 5. Test import | A small sample imports cleanly into a sandbox | Read the skip file and loop back |
| 6. Verify | Record counts and spot-checks match the source | Fix the named rows and retest |
| 7. Full import with rollback | Post-import checks pass and rollback is confirmed | Roll back, then re-run from the failing gate |
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.
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.
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.
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.
| Field | Inconsistent | Standardised |
|---|---|---|
| Phone | 077-1234-567 | +44 77 1234 567 |
| Phone | 031 555 123 | +386 31 555 123 |
j.doe@company | j.doe@company.com (corrected at source) | |
| Date | 05/04/2024 | 2024-04-05 (use the order the CRM expects) |
| Status | new / NEW / New | New |
| Company | ACME Corp. / Acme Corporation | Acme 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.
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 field | Target CRM field/object | Custom field needed? | If no matching import field |
|---|---|---|---|
| Contact name | Person/contact record — name field | No | Create a custom field before import, or deliberately drop the column and record the decision |
| Company | Company/organisation record, linked to the contact | No | Create a custom field before import, or deliberately drop the column and record the decision |
| Contact record — email field | No | Create a custom field before import, or deliberately drop the column and record the decision | |
| Phone | Contact record — phone field | No, but phone-type fields can require an extra mapping step | Create a custom field before import, or deliberately drop the column and record the decision |
| Lead status | Lead or deal record — status/picklist field | Yes if the options are not already in the CRM | Create the custom field before import, map each option individually, or deliberately drop the column and record the decision |
| Notes | Note object — in Pipedrive, linked to an existing person, organisation, deal, lead, or project | No | Create a custom field before import, or deliberately drop the column and record the decision |
| Follow-up date | Contact or lead/deal record — date field | Yes if no standard date field exists | Create a custom field before import, or deliberately drop the column and record the decision |
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.
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.
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.
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
| Gate | Owner | Completion date | Evidence checked | Failure found | Next action |
|---|---|---|---|---|---|
| 1. Snapshot and freeze | A read-only backup exists and restores | ||||
| 2. Audit columns | Every row has values for the CRM's mandatory import fields | ||||
| 3. Standardise and deduplicate | Formats follow explicit rules; duplicates removed by a written rule set | ||||
| 4. Map to the import template | Every spreadsheet column maps to a CRM field; custom fields already exist | ||||
| 5. Test import | A small sample imports cleanly into a sandbox | ||||
| 6. Verify | Record counts and spot-checks match the source | ||||
| 7. Full import with rollback | Post-import checks pass and rollback is confirmed | ||||
| Hand-over decision | You 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
- 01Importing data into Pipedrive with spreadsheetssupport.pipedrive.com
- 02Importing: mandatory fields - Knowledge Base | Pipedrivesupport.pipedrive.com
- 03CRM API | Imports - HubSpot docsdevelopers.hubspot.com
- 04Art. 5 GDPR – Principles relating to processing of personal ...eur-lex.europa.eu
- 05Import fields - Knowledge Base | Pipedrivesupport.pipedrive.com
- 06Importing: advanced mapping - Knowledge Base | Pipedrivesupport.pipedrive.com
- 07Importing: sample import spreadsheetssupport.pipedrive.com
- 08Format import filesknowledge.hubspot.com