CRM & RevOps
How to Export Enriched Leads to HubSpot Without Duplicates
Oct 19, 2026
The short answer
To export enriched leads into HubSpot without duplicates, match on a stable unique identifier — email for contacts, domain for companies — before every import. Map your enrichment fields to existing HubSpot properties, use HubSpot's native "update existing" import option, and run a deduplication pass on your spreadsheet before you push. This prevents both net-new duplicates and overwriting good data with stale enriched values.
Key takeaways
- Email address is HubSpot's primary deduplication key for contacts; always include it in every enriched export.
- Company domain is the safest deduplication key for company records — not company name, which varies too much.
- HubSpot's native import offers an 'update existing records' toggle that matches on email or record ID before creating anything new.
- Map enrichment fields to the exact HubSpot internal property names before import to avoid creating orphan custom properties.
- Deduplicate your spreadsheet before export, not after — fixing duplicates inside HubSpot is far more expensive than preventing them.
- Automate the sync with a workflow so enriched data flows on a schedule rather than as ad-hoc CSV drops.
How Do You Export Enriched Leads to HubSpot Without Creating Duplicates?
Every duplicate in HubSpot traces back to one of three mistakes: importing without a match key, mapping fields to the wrong property, or pushing data without checking what's already there. Fix those three things and duplicate creation drops to near zero. Orange Slice's data enrichment agent handles the first two automatically, but the steps below work regardless of which enrichment tool you use.
Why Do Enriched Leads Create More Duplicates Than Raw Leads?
A raw lead list usually has one source. An enriched lead list has many — your original CSV, LinkedIn data, a firmographic provider, a phone enrichment pass. Each source may format the same company name differently, include or omit a domain, or use a slightly different email format.
When you push that merged record into HubSpot, the CRM sees each variation as a potential new record unless you give it a single stable key to match on.
The other problem: enrichment tools often produce more columns than your HubSpot instance has properties. HubSpot's importer will prompt you to create new custom properties for unmapped columns. If you accept every prompt, you end up with duplicate properties — company_size and Company Size and employees all holding the same data in different places.
Step 1: Choose the Right Match Key Before You Export
For contacts: always use email
Email is HubSpot's native deduplication key for contacts. It is the only field HubSpot checks automatically when deciding whether to create or update a record on import. According to HubSpot's own import documentation, email address is the required identifier for contact deduplication during file import.
Rules for your enriched list:
- Every row must have an email. Rows without email will always create new records and cannot be deduplicated later.
- Use the primary work email, not a personal one. HubSpot treats
jane@acme.comandjane@gmail.comas different contacts. - Normalize email to lowercase before export. Some CRMs store emails with capital letters; case mismatches can fool basic string matching.
If your enrichment tool returns multiple emails per contact, pick one and put it in a dedicated primary_email column. Do not import multiple email columns — HubSpot handles additional emails differently and the dedup logic does not apply to them in the same way.
For companies: always use domain, not name
Company name deduplication fails constantly. "Stripe", "Stripe, Inc.", and "Stripe Inc" are three different strings. Domain is stable.
Map your enriched company_domain field to HubSpot's Website URL company property. HubSpot's own company deduplication engine uses domain as its primary signal, as documented in HubSpot's guide to managing duplicate companies. When you import a company record with a domain that already exists in HubSpot, the system will flag it as a potential duplicate and, with the right import settings, update rather than create.
Step 2: Map Fields Before You Touch the Importer
The HubSpot import wizard is not the right place to do field mapping for the first time. Do it in your spreadsheet first.
How Do You Find HubSpot's Internal Property Names?
Every HubSpot property has an internal name — a lowercase, underscore-separated string like firstname, lastname, jobtitle, company, website. You can find these in HubSpot under Settings > Properties.
Rename your enriched spreadsheet columns to match HubSpot internal names exactly before export. When your column header is jobtitle, the importer maps it automatically. When it is Job Title (Enriched), you get a prompt to create a new property or map manually — and manual mapping at scale leads to errors.
Build a field map once and reuse it
Create a simple reference table:
| Enriched Column Name | HubSpot Internal Name | Property Type | Notes |
|---|---|---|---|
| first_name | firstname | Single-line text | |
| last_name | lastname | Single-line text | |
| work_email | Primary dedup key | ||
| job_title | jobtitle | Single-line text | |
| company_name | company | Single-line text | |
| company_domain | website | Single-line text | Dedup key for companies |
| linkedin_url | hs_linkedin_bio | Single-line text | |
| employee_count | numberofemployees | Number | |
| industry | industry | Single-line text | Must match HubSpot picklist values |
| city | city | Single-line text | |
| country | country | Single-line text | |
| lead_source | hs_lead_status | Dropdown | Map to your pipeline stage values |
Keep this table in a shared doc. Every team member exporting enriched leads uses the same map.
Watch out for picklist fields
Fields like industry, lifecycle_stage, and lead_status are dropdown properties in HubSpot. If your enriched value does not exactly match one of the allowed options, HubSpot will reject the row or leave the field blank. Normalize these values in your spreadsheet before export — not after.
Step 3: Deduplicate Your Spreadsheet Before Export
Deduplication inside HubSpot requires manual merges. Deduplication in a spreadsheet takes seconds. Always do it before export.
For contacts:
- Sort by email.
- Remove rows with blank email.
- Use a
COUNTIFor a dedup function to flag rows where the email appears more than once. - Keep the row with the most complete data; delete the rest.
For companies:
- Sort by domain.
- Remove rows with blank domain.
- Flag duplicate domains and merge the data into one row.
If your enrichment workflow produces multiple rows per contact — because you ran several enrichment passes — merge them before export. A contact enriched twice should produce one row, not two.
Orange Slice's data enrichment agent handles this at the source: it enriches each row once and returns a single record, so you are not stacking multiple enrichment passes on top of each other before you even reach the export step.
Step 4: Use HubSpot's Import Settings Correctly
When you run the HubSpot import wizard, two settings determine whether you create duplicates or prevent them.
"Update existing contacts" — This toggle tells HubSpot to check for an existing contact with the same email before creating a new record. If a match is found, it updates the existing record with your new values. Turn this on every time.
"Don't overwrite existing values" — This is a less obvious option, but critical for enriched data. If HubSpot already has a value in a field and your enriched data has a different (potentially stale) value, this setting protects the existing data. Use it when you are not confident your enriched data is fresher than what's in the CRM.
If you are confident your enriched data is current and authoritative, allow overwrites — but only for specific fields like phone, job title, or employee count, not for fields like lifecycle_stage or lead_owner that your team manages manually.
Step 5: Automate the Sync So You Stop Doing This Manually
One-off CSV imports are the most error-prone way to move enriched data into HubSpot. You forget to rename columns, skip the dedup step, or use the wrong import settings. Automate it.
A proper enrichment-to-CRM workflow looks like this:
- Trigger: New lead enters your enrichment spreadsheet (from a form fill, a list import, or a prospecting run).
- Enrich: Pull firmographics, email, LinkedIn data, and any other signals automatically.
- Qualify: Score or filter the lead against your ICP before it touches the CRM.
- Check for existing record: Query HubSpot by email (contacts) or domain (companies) before writing.
- Upsert: If a record exists, update it. If not, create it.
- Log: Record the enrichment date and source on the HubSpot record so you know when it was last refreshed.
Orange Slice's workflow automation supports this kind of multi-step pipeline — enrich, qualify, and push to HubSpot in sequence, with the dedup logic built into the export step. The CRM agent handles the upsert behavior so you are not writing custom API logic to check for existing records.
What Orange Slice does not do: it does not merge existing duplicate records already inside HubSpot. If you have a backlog of duplicates from previous imports, use HubSpot's native duplicate management tool or a dedicated CRM hygiene service to clean that up first.
Step 6: Validate After the First Sync
After your first automated sync, spot-check ten records in HubSpot:
- Does the contact exist once, not twice?
- Are the enriched fields populated on the correct properties?
- Is the company associated correctly, with domain populated?
- Did any picklist fields get rejected or left blank?
Fix mapping errors at the source — in your field map or workflow config — not by editing records in HubSpot one by one. One bad field map will reproduce the same error across every future export until you fix it upstream.
What Do You Do If You Already Have Duplicates in HubSpot?
If duplicates already exist in HubSpot before you start this process:
- Export your full contact list from HubSpot to CSV.
- Sort by email and flag duplicates.
- Use HubSpot's Contacts > Actions > Manage Duplicates tool to review and merge flagged pairs. HubSpot scores each pair by similarity — start with the high-confidence matches.
- For company duplicates, use the same tool under Companies.
- After merging, run your enrichment export using the steps above so future records land cleanly.
For teams with large duplicate backlogs, the CRM agent can help automate the identification and merge workflow rather than clicking through HubSpot's UI record by record.
The Sequence That Prevents Duplicates Every Time
To make this repeatable, follow this order every time you export enriched leads:
- Normalize emails to lowercase.
- Remove rows with no email or no domain.
- Deduplicate by email in your spreadsheet.
- Rename columns to HubSpot internal property names.
- Normalize picklist values.
- Export to HubSpot with "update existing contacts" enabled.
- Decide whether to allow or block overwrites on a field-by-field basis.
- Spot-check ten records after import.
If you are running this more than once a week, automate it. Manual CSV exports compound errors over time.
For teams building out the full enrichment-to-CRM pipeline — from prospecting through qualification to sync — the use cases page shows how other GTM teams have structured this end to end.
Frequently asked questions
What field does HubSpot use to detect duplicate contacts on import?
HubSpot matches contacts on email address by default. If a contact with that email already exists, HubSpot updates the record rather than creating a new one — but only if you select the 'update existing contacts' option during import. Without that toggle, HubSpot may create a second record.
How do I deduplicate company records when pushing enriched data to HubSpot?
Use the company domain (website URL) as your match key, not the company name. Names vary — 'Acme Inc.', 'Acme', and 'ACME Corp' are treated as three different companies. Domain is stable. HubSpot's company deduplication also matches on domain, so keeping that field clean prevents most duplicate company records.
Should I enrich and then export, or export and then enrich inside HubSpot?
Enrich first, export second. Enriching inside HubSpot with a native integration means every API call touches a live record, which risks overwriting good data and triggering workflows unintentionally. Enriching in a staging spreadsheet lets you review, deduplicate, and map fields before anything touches your CRM.
What happens if I import an enriched field that already has a value in HubSpot?
By default, HubSpot overwrites the existing value with the imported value. If your enriched data is older or lower quality than what's already in the CRM, you'll degrade your data. Either use 'only update empty properties' logic in your import, or add a data freshness check before export.
How do I prevent duplicates when syncing a lead enrichment tool to HubSpot on an ongoing basis?
Use a workflow with upsert logic: check for an existing record by email or domain before writing. Most native integrations and tools like Orange Slice support direct HubSpot export with update-on-match behavior. For custom syncs, always query the HubSpot API for an existing record ID before calling the create endpoint.
Is it better to use HubSpot's native deduplication tool or clean data before import?
Both. Clean before import to prevent duplicates from entering. Use HubSpot's native deduplication tool (under Contacts > Actions > Manage Duplicates) to catch anything that slipped through. Reactive deduplication inside HubSpot is slower and requires manual merges, so prevention is always cheaper.