Extracting and Deduplicating Emails from CRM Exports: Salesforce, HubSpot, Pipedrive, Zoho, Freshsales, Close and Other CRM Platforms
On this page
When You Need to Extract Emails from CRM Exports
CRM systems store email addresses across multiple objects (contacts, leads, accounts, opportunities, activities, custom objects) in multiple fields (primary email, secondary email, email fields on related records, email addresses in notes and activity logs). When you need a clean, deduplicated list of all email addresses in a CRM -- or across multiple CRMs -- exporting individual objects one at a time and manually combining them is slow and error-prone. Common scenarios:
| Scenario | What you need | Why it is hard |
|---|---|---|
| CRM migration (moving from one CRM to another) | Complete list of every email address in the old CRM to ensure nothing is lost in migration; deduplicated master list to import into the new CRM | Email addresses live in contacts, leads, accounts, activities, notes, custom objects and email logs; a single contact export misses emails stored elsewhere; old CRM may have years of accumulated duplicates |
| Merging sales teams (acquisition, reorganisation, team consolidation) | Consolidated, deduplicated contact database from 2+ CRM instances or territories | Each team's CRM has overlapping contacts (both teams called the same prospects); different data entry conventions (john@example.com in one, John@Example.com in another); one team uses first-name last-name, the other uses full name |
| Acquiring a company | Master list of the acquired company's contacts to merge with your own CRM | Acquired company may use a different CRM; field mappings differ; significant overlap with contacts already in your CRM; acquired data may have quality issues (old, unverified, duplicate) |
| Building a suppression list | List of all email addresses that should NOT receive marketing or outreach (existing customers, do-not-contact, competitors, partners, employees) | Suppression data lives across CRM (customers), HR system (employees), partner portal (partners), do-not-contact list (legal/compliance), competitor tracking (competitive intelligence); combining these requires extracting emails from each source and deduplicating |
| Data quality audit | Assessment of how many unique, valid email addresses exist in the CRM vs total records | CRM may show 50,000 contact records but only 35,000 unique email addresses (duplicates, blanks, invalid formats); without extraction and deduplication, the true number is unknown |
| Reconciling CRM with email marketing platform | Identifying contacts in CRM that are not in the email platform (and vice versa) to find sync gaps | CRM and email platform (Mailchimp, Constant Contact, ActiveCampaign, Klaviyo) may have drifted apart; contacts added to one were not synced to the other; unsubscribes in the email platform were not reflected in CRM |
CRM Export Formats
| CRM | Export method | Format | What to export | Notes |
|---|---|---|---|---|
| Salesforce | Data Export (Setup > Data > Data Export); Data Loader; Reports (export to CSV); SOQL query | CSV (Data Export produces ZIP of CSVs, one per object) | Contacts, Leads, Accounts (if account-level email), Person Accounts, Campaign Members, Activities (if email addresses in descriptions), Custom Objects with email fields | Data Export gives you everything but is large; Reports let you filter first; Data Loader handles large volumes; custom objects with email fields need separate exports |
| HubSpot | Export from Contacts, Companies, Deals, or Lists; Settings > Import & Export | CSV, XLSX | Contacts (primary email + additional emails), Companies (company email fields), Deal contacts, Lists | HubSpot stores multiple email addresses per contact in a single field (semicolon-separated); exported CSV may have one cell with "john@example.com;jsmith@example.net" |
| Pipedrive | Export from People, Organizations, Deals; Settings > Import/Export | CSV, XLSX | People (email field supports multiple emails), Organizations (if email field added), Deal contacts | Pipedrive supports multiple emails per person; export includes all of them; custom fields with emails need to be included in export columns |
| Zoho CRM | Export from Modules (Contacts, Leads, Accounts, etc.); Setup > Data Administration > Export | CSV | Contacts, Leads, Accounts, Vendors, Custom Modules | Each module exports separately; need to combine multiple CSVs |
| Freshsales (Freshworks CRM) | Export from Contacts, Accounts, Deals | CSV | Contacts (primary email, other emails), Accounts (if email fields exist) | Multiple email fields per contact; exported as separate columns |
| Close | Export from Contacts, Leads; Smart Views export | CSV | Contacts (supports multiple emails per contact), Leads | Close stores contacts within leads; export both levels |
| Monday.com CRM | Export from boards | CSV, XLSX | Items (rows) with email columns | Email is a column type; multiple email columns may exist per board |
| Copper (Google Workspace CRM) | Export from People, Companies, Opportunities | CSV | People (primary email, other emails), Companies | Tightly integrated with Gmail; some email data may be in Google Contacts rather than Copper |
| Insightly | Export from Contacts, Leads, Organizations | CSV | Contacts, Leads, Organizations (if email fields added) | Multiple email fields per contact |
Extraction Workflow
Single CRM extraction
| Step | Action | Details |
|---|---|---|
| 1. Identify all objects with email data | List every CRM object that contains email addresses: contacts, leads, accounts, activities (if emails are logged in activity descriptions), notes (if emails are mentioned in notes), custom objects | Do not assume contacts are the only source; email addresses appear in activity logs, notes, deal descriptions and custom fields |
| 2. Export each object | Export each object to CSV (or the available format); include all email-related fields (primary email, secondary email, CC email, custom email fields); include any identification fields (name, company, record ID) for reference | Some CRMs limit export size; for large databases, export in batches (by date range, by owner, by record type) |
| 3. Upload all exports to Email Extractor | Upload all exported files to Email Extractor; the tool extracts email addresses from all files and deduplicates across all sources automatically | Email Extractor supports CSV, XLSX, TXT, JSON, XML and other formats; it extracts every email-format string from every file and produces a single deduplicated list |
| 4. Download results | Download the deduplicated email list as CSV (with or without source file information) | The "CSV with sources" option shows which file(s) each email address was found in; useful for understanding where duplicates originated |
| 5. Verify | Run the deduplicated list through an email verification service to identify valid, invalid and risky addresses | Verification before importing into a new CRM or marketing platform prevents importing bad data into a clean system |
Multi-CRM extraction (migration, merger, acquisition)
| Step | Action | Details |
|---|---|---|
| 1. Export from CRM A | Follow single-CRM extraction steps above for the first CRM; export all objects with email data | Label files clearly (e.g., "salesforce-contacts.csv", "salesforce-leads.csv") |
| 2. Export from CRM B | Repeat for the second CRM | Label files (e.g., "hubspot-contacts.csv", "hubspot-companies.csv") |
| 3. Export from other sources | Export contacts from email marketing platforms (Mailchimp, Constant Contact), billing systems, event registration systems, support desks (Zendesk, Freshdesk, Intercom) and any other system with contact data | These systems often contain contacts not in either CRM; they also reveal sync gaps |
| 4. Upload all files to Email Extractor | Upload every export file from every source to Email Extractor in a single batch | Email Extractor processes all files together and deduplicates across all sources; the result is every unique email address across all systems |
| 5. Download with sources | Download as "CSV with sources" to see which systems each email appeared in | This mapping is essential: it shows which contacts exist in CRM A only, CRM B only, both CRMs, and other systems; guides the merge strategy |
| 6. Verify | Run the master deduplicated list through email verification before importing into the target CRM | Clean data going into the new CRM from day one; do not carry bad data forward |
CRM-Specific Extraction Notes
Salesforce
| Challenge | Detail | Solution |
|---|---|---|
| Email addresses across multiple objects | Contacts have Email field; Leads have Email field; Person Accounts have PersonEmail; Campaign Members inherit email from Contact/Lead but may have different email; Custom objects may have custom email fields | Export Contacts, Leads, Person Accounts and any custom objects with email fields separately; upload all to Email Extractor |
| Email addresses in activity descriptions | When emails are logged to Salesforce (via Einstein Activity Capture, Outlook/Gmail integration or manual logging), the email addresses may appear in the Activity Description or relate to contacts not in the Contact object | Export Activities (Tasks and Events) if your org logs emails to activity descriptions; Email Extractor will find email addresses in text fields |
| Large data volumes | Salesforce orgs with 100K+ contacts may hit export limits or timeout | Use Data Loader for large exports; export in batches by record type, owner or date range; or use the weekly Data Export feature (Setup > Data > Data Export) which exports all objects to a ZIP of CSVs |
HubSpot
| Challenge | Detail | Solution |
|---|---|---|
| Multiple emails per contact in one field | HubSpot can store additional email addresses in a single field, separated by semicolons | Email Extractor extracts all email addresses from each cell, including multiple addresses in one cell; no manual splitting needed |
| Associated contacts on companies and deals | A company or deal record may have associated contacts whose emails are not in the company/deal export itself | Export contacts separately; the contact export includes all emails regardless of company/deal association |
| Marketing contacts vs non-marketing contacts | HubSpot distinguishes between marketing contacts (count toward billing) and non-marketing contacts; both have email addresses | Export both types; the distinction matters for HubSpot billing but not for email extraction |
Use Case: Building a Suppression List
A suppression list (also called an exclusion list or do-not-email list) is a list of email addresses that should be excluded from outreach campaigns. Building a comprehensive suppression list requires extracting emails from multiple systems:
| Source | Why suppress | Export format |
|---|---|---|
| CRM (existing customers) | Do not send cold outreach to existing customers; they should receive customer communications, not prospecting emails | CSV export of all customer-status contacts |
| CRM (do-not-contact records) | Legal or compliance requirement; person requested no contact; litigation hold | CSV export filtered by do-not-contact flag or status |
| HR system (employees) | Do not send sales or marketing emails to your own employees | CSV export of employee email addresses |
| Competitor tracking (competitor contacts) | Do not accidentally email competitors with sales materials or pricing | CSV export of competitor-tagged contacts |
| Partner portal (partner contacts) | Partners should receive partner communications, not prospecting emails | CSV export of partner contacts |
| Email marketing platform (unsubscribes) | People who unsubscribed from marketing emails; must be suppressed per CAN-SPAM, GDPR, CASL | CSV export of unsubscribed contacts |
| Legal (litigation holds, regulatory) | People or companies involved in legal proceedings; regulatory restrictions | CSV or list from legal department |
Upload all suppression source files to Email Extractor to produce a single deduplicated suppression list. Use this list to filter any outreach list before sending: remove any email address that appears on the suppression list.
Metrics
| Metric | What it tells you | Typical finding |
|---|---|---|
| Unique emails vs total records | How much duplication exists in the CRM | 15-30% of CRM records are duplicates (same email address on multiple records) |
| Email addresses per source | Where email data lives across systems | 60-70% in primary CRM; 15-25% also in email marketing platform; 5-15% only in non-CRM systems (billing, support, event registration) |
| Invalid email rate | How much of the CRM data is bad | 5-15% of CRM emails are invalid (bouncing); higher for older databases or databases without regular verification |
| Cross-system overlap | How well systems are synced | 70-85% of CRM contacts also in email marketing platform; 15-30% exist in CRM only or email platform only (sync gap) |
| Suppression list coverage | How comprehensive the suppression list is | A complete suppression list typically contains 5-15% of the total email universe you might target; missing entries lead to embarrassing emails to existing customers, employees or competitors |