A Pipedrive to HubSpot migration can look finished while the sales team still cannot work. People and deals appear in the new CRM, but notes are missing, a company is linked to the wrong person, or open follow-ups stayed behind. Start with the working record a rep needs, then build the export and import around it. A clean contact list alone is not a complete migration.
This guide separates records, relationships and history. The object names are similar across the two tools, but that does not make every field or activity interchangeable. Decide what must remain editable, what should remain available as history and what can stay in a controlled archive.
Check export access before counting records
Pipedrive export access depends on permissions and visibility. A user with export permission can still export only data visible to that user. Global administrators can export by data type from the Export data section. Before extracting, compare the account used for export with your expected scope. Include archived records deliberately rather than assuming the default view covers them.
Save a manifest for each extraction. Record the item type, filter, exporting user, extraction time and row count. Keep raw files unchanged. Transform a separate copy so you can explain why a destination value differs from its source. Export the field setup and selectable options too. Pipedrive exposes field names, types and API keys in those exports, which helps distinguish similarly named custom fields.
Write the mapping before importing
| Pipedrive data | HubSpot destination | Decision to document |
|---|---|---|
| People | Contacts | Identity, duplicate handling and company links |
| Organizations | Companies | Domains, subsidiaries and missing domains |
| Deals | Deals | Pipeline, stage, owner and associated records |
| Leads | Chosen contact and qualification model | How unqualified work stays distinct from active deals |
| Activities | Selected activity types | Open work, completed history and replay rules |
| Notes | Notes associated with records | Formatting, timestamps and sensitive content |
| Files | Tested destination or controlled archive | Access, links and record placement |
Treat this table as a starting mapping, not an automatic conversion rule. A label may become a custom property. A qualification value may need a new definition. Have a sales operator approve the meaning of each important field. Do not use the move to quietly redefine what an open opportunity or a qualified contact means.
Keep source IDs and destination IDs separate
Keep the Pipedrive ID on every extracted row and create a crosswalk to the resulting HubSpot record. A matching display name is not proof that two rows represent the same customer. Shared company names and reused deal names make poor keys. Decide which records to merge before loading and retain a list of the source records represented by each survivor.
HubSpot imports use unique identifiers to update, deduplicate and associate records. Contact email and company domain name are common choices. Record ID identifies an existing HubSpot record. Supported custom properties that require unique values can also serve as identifiers. Test your selected method in the destination account. Do not put a Pipedrive ID into HubSpot's Record ID column.
Export history as its own workstream
Pipedrive documents separate exports for activities, notes and files linked to deals and contacts. Its notes export offers HTML or plain text. Choose the format based on what the target import can retain and test real examples with lists, line breaks and pasted content. Retain the raw version even if the destination needs cleaned text.
Review files independently. Pipedrive says Google Drive files are excluded from global export and file download links are restricted to administrators. Build a file inventory and test retrieval with the migration account. A row containing a filename does not prove that the file bytes or access permissions moved. Decide whether each file must live in HubSpot or remain in an approved archive.
Prepare HubSpot and load a connected test set
Create the intended properties, pipelines, stages and ownership mapping before loading production records. Check field types and option values. A free text source value may not fit a controlled dropdown. Route unknown values to an exception list rather than silently replacing them with a convenient default.
- Import companies using the agreed identity rules and record the destination IDs.
- Import contacts and explicitly associate them with the right companies.
- Import deals with their pipeline, stage and contact or company relationships.
- Import approved activities and notes against confirmed destination records.
- Handle files through the tested file process and inspect access.
- Reconcile the connected test set before repeating the process at full scope.
HubSpot supports multiple object imports and associations. Two-file imports need a shared column. Use that mechanism deliberately rather than relying on names that happen to match. Inspect contacts associated with multiple companies and deals linked to several people. Those examples reveal relationship errors that a flat row count will miss.
Make retries safe for history
Do not assume every import supports updates. HubSpot documents that multiple object imports can create but not update emails, meetings, notes and tasks. A repeated history batch therefore needs a different retry plan from a contact update. Keep the source activity ID, batch ID and outcome in your migration manifest.
After an interrupted run, determine which rows succeeded before sending more. Separate failed rows from accepted rows. Test an intentional replay during rehearsal and confirm the result. If you cannot safely identify an existing destination activity, stop and reconcile instead of sending the whole file again.
Reconcile and cut over with named owners
Compare source and destination counts by record type, owner and deal stage. Explain exclusions and merges. Compare pipeline values with currency and closed status kept distinct. Ask reps to inspect accounts they know, including recent notes, open tasks, attachments and the people connected to each deal.
Choose a controlled final extraction window and document how edits after the first export will be captured. Pause or reroute integrations that write to Pipedrive when the destination becomes authoritative. Test forms, email capture and downstream reporting against the new records. Keep rollback instructions and source access until the agreed acceptance checks pass.
Mistakes to avoid
- Accepting an export from a restricted account as the full database.
- Matching relationships on company or deal name alone.
- Importing closed deals as open work.
- Retrying create-only history without checking accepted rows.
- Assuming file links prove that files migrated.
- Changing field meanings without the sales team's agreement.
How Remqa handles Pipedrive to HubSpot migrations
Remqa can map the source data, build repeatable loads and test the records your team needs to work. Start with our CRM migration service for objects, history and cutover. If reporting data also needs to move, include data migration in the scope. Bring a sample export and your required relationships so the first conversation stays concrete.