Español

Exporting Cleanly from Pipedrive: Deals, Contacts, and Activity History

A founder migrated 8,000 deals from Pipedrive to a new CRM. The import finished clean. Row counts matched. Then, six months later, a board member asked for a pipeline velocity report showing how long deals had spent in each stage over the past two years. The data wasn't there. Pipedrive's deal stage history — the log of when each deal moved from stage to stage — isn't included in the standard export. It requires either the API or a third-party tool, and nobody had known to ask for it.

Stage history was gone. The report couldn't be built. Two years of pipeline pattern data disappeared at export time.

This guide covers what Pipedrive exports cleanly, what it silently leaves out, and how to get a complete migration-ready data set before you leave.


Understanding Pipedrive's Data Model

Pipedrive is built around the Deal. Everything else is secondary.

In most CRMs (Salesforce, HubSpot, most modern tools), Contacts and Accounts are the primary objects. Deals (or Opportunities) link back to them. In Pipedrive, the Deal is the primary record. Persons (contacts) and Organizations (companies) exist primarily as fields on Deals. The Pipedrive API developer documentation documents the full object model and available endpoints for deal flow and stage history retrieval.

Pipedrive's core objects:

Pipedrive object Equivalent in most CRMs Key difference
Deal Opportunity Primary object; drives most reports
Person Contact Secondary; links to Deals and Organizations
Organization Account Optional; many Deals link to Persons but not Orgs
Activity Task/Event Links to Deals, not to Persons
Note Note Can attach to Deals, Persons, or Organizations
File Attachment Attached to any object

The structural implication: in Pipedrive, a salesperson's relationship history lives on the Deal. In most destination CRMs, relationship history lives on the Contact. This mismatch is the core challenge of every Pipedrive migration, and it needs to be resolved before or during the cleaning step — not after import. Mapping fields between legacy and new systems is where you formalize this structural translation before cleaning begins.

Activities in Pipedrive also behave differently. In Salesforce or HubSpot, activities log against a Contact. In Pipedrive, activities log against a Deal. When you move to a contact-centric CRM, every activity needs to be re-associated with a Contact, not just left linked to the Deal.


Step 1: Export Each Object Separately

Pipedrive's export tool is under Settings > Data export. You export one object at a time.

Export path: Settings > Data export > [Choose object]

What to export and in what order:

  1. Organizations — Export first (equivalent to Accounts; Persons reference them)
  2. Persons — Export second (Contacts; reference Organizations)
  3. Deals — Export third (the primary object; references both)
  4. Activities — Export fourth (reference Deals, Persons, and Organizations)
  5. Notes — Export fifth (can reference any object)

For each export:

  • CSV format — Choose CSV over Excel. Excel introduces date formatting inconsistencies and encoding problems that create cleaning headaches.
  • Include all fields — Pipedrive defaults to a subset of fields. Use the column selector to include every field you want. Don't rely on the default selection.
  • Include custom fields — Pipedrive lists standard and custom fields together in the selector. Make sure custom fields are checked.

What each export contains:

Pipedrive exports give you flat CSVs with every selected field as a column. Deal exports include the Person name and Organization name as columns (the relationships are denormalized). But they use names, not IDs, for those references — which creates matching challenges during import if your data has duplicate names.


Step 2: Export Deal Stage History

This is what the standard export misses. Deal stage history — the log of when each deal moved from one pipeline stage to another — lives in Pipedrive's activity log, not in the Deal record itself. The Deal record only stores the current stage.

Why it matters:

Stage history is the foundation for pipeline velocity analysis (average time in each stage), conversion rate reports by stage, and any historical pattern analysis. Without it, your new CRM starts with no pipeline benchmark data. According to Harvard Business Review, companies that systematically analyze pipeline stage data are significantly more accurate at revenue forecasting — historical stage progression is often the most actionable data you have for improving future win rates.

Options for capturing stage history:

Option A: Pipedrive API

The Pipedrive API provides a deal flow endpoint that returns stage change events for each deal:

GET /api/v1/deals/{id}/flow

This returns a log of all updates to the deal, including stage changes with timestamps. For large orgs (thousands of deals), this requires scripted API calls that loop through deal IDs. If you have a technical resource, this is the most complete approach.

Option B: Third-party export tools

Tools like Coupler.io and Hevo Data have Pipedrive connectors that pull deal stage history as part of their sync. Setup takes a few hours and doesn't require API programming. Costs vary but are typically under $100/month for a one-time migration use.

Option C: Document and skip

If stage history isn't operationally important in the destination CRM — and for many small teams it isn't — document the decision explicitly, set the export date as the historical baseline, and move on. Don't make this a blocker if the business need doesn't justify it. Records you choose not to migrate belong in a planned archive — long-term archiving of legacy CRM data covers the retention options that don't require keeping Pipedrive licensed forever.


Step 3: Export Custom Fields Correctly

Pipedrive custom fields export with internal field IDs as column headers, not the labels you see in the UI. An export column might appear as abcdef123456 instead of "Contract Value." This is a known characteristic of many CRM export tools — the Wikipedia article on data dictionary describes the documentation practice of maintaining field name-to-ID mappings, which is exactly what you need to build before Pipedrive exports run.

How to get the label mapping before export:

Settings > Data fields > Custom fields. For each object (Deals, Persons, Organizations), Pipedrive shows the field name and its internal key. Export or screenshot this mapping before you run your exports — you'll need it during field mapping and cleaning.

Alternatively, if you're using Data Loader or API export, field labels are available via:

GET /api/v1/dealFields — Returns all deal fields including names and keys GET /api/v1/personFields — Same for Person fields GET /api/v1/organizationFields — Same for Organization fields

Write the label mapping to a separate reference spreadsheet. Keep it alongside your export files.


Step 4: Reconstruct the Account-Contact-Deal Hierarchy

This is the structural translation step. Pipedrive's Person/Organization/Deal model needs to be reshaped into the Contact/Account/Opportunity model used by most destination CRMs.

The mapping:

Pipedrive Destination CRM
Organization Account
Person Contact
Deal Opportunity
Activity (linked to Deal) Task/Event (linked to Contact and Opportunity)
Deal owner (user) Opportunity owner
Organization owner Account owner

The edge cases:

Persons not linked to Organizations. Pipedrive allows Persons to exist without an Organization link. In a destination CRM with mandatory Account association on Contacts, these Persons will fail import unless you either create placeholder Accounts or remove the mandatory association temporarily during import. Identify these records before cleaning starts.

Deals linked to Persons but not Organizations. This is common in transactional or small business pipelines. In a Contact-centric model, these become Opportunities linked to a Contact but no Account. Decide upfront whether to create an Account for each of these Persons or accept Contact-only Opportunities — the destination CRM may handle this differently.

Multiple Persons on one Deal. Pipedrive supports adding multiple contacts to a Deal. In most export CSVs, only the primary Person exports. To capture all contact associations, use the API or check whether Pipedrive's export settings include secondary participants. These multi-contact deal records are a specific case where handling historical activities, notes, and emails intersects with the structural translation — each Contact on the deal may have their own activity context worth migrating.

Object mapping reference table:

Pipedrive field Destination field Notes
Deal title Opportunity name Direct mapping
Deal value Opportunity amount Check currency fields
Expected close date Close date Verify date format
Stage Stage Requires stage name mapping
Person name Contact name (first/last) Split on space if needed
Organization name Account name Match on name for linking
Activity type Task/Event type Types may not map 1:1
Note content Note body Check character limits

Step 5: Validate the Export

Run these checks before moving to the cleaning step.

Row count validation:

Open Pipedrive's Insights or list views to get the canonical record count:

Object Where to count in Pipedrive What to compare
Deals Deals > List view (all pipelines, all stages, all users) CSV row count minus header
Persons Contacts > People > List view (all owners) CSV row count
Organizations Contacts > Organizations > List view CSV row count
Activities Activities > List view (all types, all owners) CSV row count

Large discrepancies (more than 2-3%) indicate filtering issues in the export. Common causes: export defaulting to "my records" instead of all records, or active/inactive filters.

Custom field completeness:

Take your label mapping reference (from Step 3) and verify every custom field has a corresponding column in the export CSV. Missing columns mean those fields weren't selected during export.

Activity-to-deal linkage:

Pick 20 random Deals. For each, check that your Activities export contains at least one row where the deal name (or deal ID) matches. If Deals have activities in Pipedrive's UI but nothing shows up in the export, your Activities export has a filtering or export option problem.

Persons not linked to Organizations:

Use a spreadsheet formula to count Person rows where the Organization column is blank. This tells you how many placeholder Accounts you'll need to create (or decisions you'll need to make) before import.


The Pipedrive Export Checklist

  • Organizations exported first
  • Persons exported (includes Organization name column)
  • Deals exported (includes Person name and Organization name columns)
  • Activities exported (includes Deal name column)
  • Notes exported for all object types
  • Custom field label mapping documented alongside export files
  • Deal stage history captured (via API, third-party tool, or documented as out of scope)
  • Row counts validated against Pipedrive list views for all objects
  • Persons without Organization links identified and counted
  • Activity-to-deal linkage spot-checked for 20 random deals

Common Pitfalls

Losing won/lost deal reasons. Pipedrive stores won/lost reasons as a separate field that doesn't always appear in standard export columns. Add "Won/Lost reason" explicitly to your Deal export field selection. It's there — just not selected by default.

Missing notes attached to Activities vs. Deals. Notes in Pipedrive can attach to Deals, Persons, or Activities independently. Your Notes export should include a "linked type" and "linked ID" column so you can reconstruct which notes belong where after import.

Forgetting email integration history. If your team used Pipedrive's email sync feature, those emails live in the Deal timeline but may not export via standard tools. Check the API's deal flow endpoint if email history matters for the migration.

Duplicate Persons for the same contact. Pipedrive doesn't enforce email uniqueness on Persons by default. Teams that manually add Persons over years accumulate duplicates with slightly different names or the same email. Deloitte's research on data quality management identifies duplicate records as the most common and costly data quality problem in CRM systems, with resolution costs that compound significantly the longer duplicates sit unresolved. Run a deduplication pass on Person email before cleaning. The full deduplication process is covered in data cleaning: deduplication, normalization, and enrichment.


What to Do Next

Your Pipedrive export gives you the raw data. But the data model needs to be translated — Person/Organization to Contact/Account — before it's ready to clean and import.

The next step is mapping fields between legacy and new systems. This is where you formalize the Pipedrive-to-destination-CRM field map and handle the deal-centric to account-centric structural translation.

Before cleaning starts, also prepare your data before you migrate anything if you haven't already defined your scope, record types, and data quality standards.

Then data cleaning: deduplication, normalization, and enrichment covers the actual cleaning work once the export and mapping are solid.


Learn More