How to Enrich HubSpot Contacts Without Overwriting Good CRM Data

How to Enrich HubSpot Contacts Without Overwriting Good CRM Data

To enrich HubSpot contacts without overwriting good data, control three things: which records the enrichment job can touch, which properties it can write to, and whether each property is fill-only or allowed to overwrite. In practice, that means scoping the job to a HubSpot list, mapping only the properties you want filled, leaving overwrite switched off for anything your team maintains by hand, and running one small manual job before you schedule anything. Read the match report before you write back, then spot-check property history on a sample of records.

If a job lands wrong, you have two recovery paths. SalesIntel’s job-level rollback is available for 15 days after a job runs, and HubSpot’s property history lets you restore values field by field. Merged duplicates are the exception. HubSpot states that merged records cannot be reverted, so duplicates get reviewed before enrichment, not after.

The steps below use SalesIntel’s HubSpot enrichment as the worked example, because its overwrite controls are documented at the field level. The same sequence applies to any enrichment tool or CSV import, and a section near the end covers HubSpot’s own import settings.

What do you need before you start?

Check four things before you open a mapping screen.

  • HubSpot edition and property capacity: SalesIntel’s HubSpot installation and configuration guide (last updated April 27, 2026) says every HubSpot edition except the free one is supported, and each object you enrich needs at least 10 available custom properties. The integration installs those properties automatically to track enrichment status.
  • An admin with the right permissions: The designated SalesIntel CRM Admin, or an Operations Admin, needs a connected HubSpot account with read and write access to contacts and the contact schema, read access to lists, and import and export permissions. Only those roles can set field mappings or run enrichment jobs.
  • A pre-job export: Export the records in your target segment with every property you plan to map. Property history covers most recovery needs, but a flat file lets you compare before and after without opening records one at a time.
  • A written precedence table: Step 2 shows how to build one. Build it before you touch the settings, because the settings screen asks you to make the decision field by field.

To connect, log in to SalesIntel, open Enrichment, then HubSpot Enrichment, click Connect Now, and sign in to HubSpot. If you manage more than one HubSpot account, confirm you are connecting the one you intend to enrich. If the connection breaks later, enrichment does not run until it is re-established.

Step 1: How do you choose which HubSpot contacts to enrich?

Start with records that have a match key and a gap. SalesIntel matches contacts on name, email, personal email, LinkedIn URL, company name, company website, mobile phone, work phone, and title, with some fields used in pairs to keep matches unique. A contact that has only a first name and a company gives the match little to work with, so leave those out of the first run.

Define the segment with these conditions:

  • At least one strong match field is populated, such as email or LinkedIn URL.
  • At least one of the properties you plan to fill is empty.
  • The record is not flagged as manually verified.

The third condition needs a custom checkbox property, for example “CRM data locked.” That property is a convention you create, not a SalesIntel or HubSpot feature. A rep or ops user ticks it when someone has hand-verified a record, and your list excludes anything where it is true. It gives you a record-level exclusion that field-level overwrite settings cannot.

SalesIntel jobs accept up to three user-defined filters combined with AND, an existing HubSpot list (active or static), or all records. Use a HubSpot list when you need more than three conditions. In current HubSpot navigation, lists live under CRM, then Segments. For the first run, use a static list of a few hundred contacts so membership cannot shift between the preview and the writeback, and pull records from more than one source (forms, imports, rep-created) because the overwrite risk differs depending on who last touched a field. Switch to an active list when you move to recurring jobs.

Step 2: How do you decide which source wins for each field?

Field precedence means deciding, property by property, whether your CRM or the enrichment source is the source of truth. SalesIntel’s mapping screen expresses that decision as one of three rules:

  • Skip: leave the field on “– skip –” so it is never written.
  • Fill only: map the field and leave Allow Overwrite unchecked. According to SalesIntel’s guide, your original data is preserved.
  • Overwrite: map the field and check Allow Overwrite. SalesIntel replaces your value with its update when it has one, and keeps your value when it has no data.

Write the decision down before you open the screen. The table below is an example to adapt, not a recommended default for every account.

Property Who maintains it Rule Reason
Lifecycle stage Marketing and sales ops Skip Drives routing and reporting
Contact owner RevOps Skip Assignment is a business decision
Lead status Reps Skip Reflects live sales activity
Preferred first name (custom) Reps Skip Entered by hand on purpose
Mobile phone Mixed Fill only Reps often verify by calling
Company name Mixed Fill only May feed association and revenue reporting
HQ city, state, country Enrichment Fill only Rarely edited by hand
Job title Mixed Overwrite, after sampling Changes often, and stale titles skew segmentation

Before you assign a rule to a field, check who changes it today. HubSpot lets you export a property’s history with the user or tool that triggered each update. If reps edit a property regularly, treat it as hand-maintained.

SalesIntel also splits matches into accuracy tiers. Your main mappings apply to human-verified data, which SalesIntel describes as reviewed by a researcher and 95% accurate. A second column on the mapping screen controls email-verified data, which is not researcher-reviewed. For that tier you can fill missing values only, overwrite, or skip. The guide’s own example overwrites phone numbers with human-verified data but only fills empty phone fields with email-verified data. For any field you consider hand-maintained, set the email-verified column to skip or fill only.

Step 3: How do you fill only the missing values?

In SalesIntel, open Enrichment, then choose Contacts under Specify Your Settings. Map each SalesIntel field to a HubSpot property. Map as many fields as you reasonably can, because SalesIntel uses your original data to find the match, and more mapped data produces more matches. Mapping a field and allowing it to be overwritten are separate decisions. If you want your existing data to take priority, leave Allow Overwrite unchecked, and the field still contributes to matching.

If you do not use the Company object in HubSpot, you can choose lead-style mapping, which writes company data onto the contact record. SalesIntel does not recommend lead-style mapping if you do use the Company object.

Check for placeholder values before you run anything. A field containing “N/A,” “unknown,” a hyphen, or a space holds a value, so a fill-only rule will skip it. Filter for those values and clear them if you want them filled. Clearing them is itself a write, so run it after your pre-job export.

Then set up the job. Choose Contact, name the job, and pick a task type. An auto task runs matching and writeback as soon as you click Start. A manual task runs matching, emails you when it finishes, and waits for you to return to the app and click Start Enrichment. For a first run, choose manual.

Step 4: How do you protect fields your team maintains manually?

Use three layers, from strongest to weakest.

  1. Leave the field unmapped. A skipped field cannot be written, so this is the strongest protection. Use it for lifecycle stage, owner, lead status, and any custom property your team fills in by hand.
  2. Map the field with overwrite off. The field can still help the match, and your existing value is preserved. New values land only in empty fields.
  3. Exclude locked records from the job’s list. This is the record-level exclusion from Step 1, and it protects every field on those records.

The limit of the second layer is that overwrite is a field-level setting. If you check Allow Overwrite on a property, it applies to that property for every record in the job. It cannot tell a value a rep typed yesterday from a value an old import wrote two years ago. If a property holds both kinds of values, keep overwrite off or use the lock flag.

Hold off on scheduled and triggered enrichment until the first manual job checks out. When you do turn them on, SalesIntel recommends scheduling auto-enrichment during non-operational hours, such as evenings and weekends, to avoid disrupting workflows. Review any HubSpot workflow that triggers on the properties you mapped before the first writeback.

Step 5: How do you handle duplicate contacts when enriching?

Duplicates can enter the picture in three places.

Duplicates already in HubSpot. HubSpot compares property values daily to surface potential duplicates. Review them under Data Management, then Data Quality, on the Manage Duplicates tab. Bulk merging requires a Data Hub Professional or Enterprise subscription, and merged records cannot be reverted, so review pairs before you merge. HubSpot also lets you export merge history, which gives you a record of what was merged even though the merge itself is permanent. SalesIntel’s published guide does not describe how two HubSpot records that match the same person are handled inside an enrichment job. Resolving them first removes the question.

Job changes. When SalesIntel finds that a contact has moved to a new employer, it marks the Changed Job fields and does not enrich the original record, which keeps the history of the previous role’s activity intact. You then choose whether to stop there or create a new contact. To link the two records, create a contact-to-contact association label pair in HubSpot, labeled Old Job and New Job, with the internal name old_job_new_job and many-to-many limits, then paste the association ID into the contact mapping. Creating a new contact is the one place an enrichment job adds records, so decide deliberately, and check whether the new-employer record may already exist in your CRM. Job changes are processed once per record. To rerun a record after changing your settings, clear its job-change disposition fields.

Exports from SalesIntel into HubSpot. If you also export new contacts, the Duplicate Resolution setting matches on email address and offers three options, described in SalesIntel’s integration configuration article. Always Skip exports nothing for a duplicate. Always Update respects the overwrite settings in your field mappings. Always Append fills only empty fields, regardless of overwrite settings. For protecting good data, Always Append or Always Skip are the safer defaults.

Step 6: How do you inspect a sample before writing anything to HubSpot?

Use three checkpoints. First, click Preview before you save the job configuration. It shows an estimate of eligible records and a list of up to 50 of them, which confirms your scope is selecting the contacts you intended.

Second, run the manual job and open the report when the email arrives. The left side shows your overall match rate by accuracy tier. The right side splits matches into four groups: fill missing (only empty fields could be updated), updated existing (only populated fields could be updated), fill and update (both), and already up to date. Total available records is the sum of the first three. Records to Enrich is the smaller number that has data to write and also follows your settings. If everything is fill-only, a visible gap between total available and Records to Enrich is expected, and it shows your overwrite settings are holding.

Third, click View enrichment details by field. It lists the fields that will be updated, overwritten, or skipped, and shows fields you have not mapped where SalesIntel has data. Stop here if a protected field shows overwrites, or if a field you expected to skip is being written. A manual job writes nothing until you click Start Enrichment, so you can leave without changing a record.

A manual job pauses between matching and writeback. Review and start it promptly, so the report you approved still describes the data in your CRM.

Step 7: How do you verify the results after enrichment?

SalesIntel installs tracking properties on each impacted HubSpot object. These include First Enriched Date, Last Enriched Date, SalesIntel Enriched, Attempted Enrichment, Attempted Enrichment Disposition (Matched, Unmatched, or Invalid), Last Attempted Enrichment, Last Matched Date, and SalesIntel Enrichment Accuracy Tier. Contact records also have SalesIntel Changed Job and SalesIntel Changed Job Date. See the SalesIntel HubSpot Installation & Configuration Guide for the documented field list.

For your post-enrichment audit, create a HubSpot contact view filtered by Last Enriched Date for the day the job ran. Add your protected properties, the properties you intended to fill, and the enrichment disposition as columns.

Then run four checks:

  1. Reconcile counts. Compare the records attempted, disposition counts, and report totals. Unmatched records are not necessarily errors; they are records SalesIntel could not match.
  2. Compare protected fields with your export. Look up each record by Record ID and compare every skipped or fill-only property that held a value before the job. Investigate any unexpected change.
  3. Check property history on a sample. Select 25 to 50 records across your sources. For each contact, click Actions in the left sidebar, then View property history. Confirm that only intended properties changed.
  4. Review job-change records. If new contacts were created, confirm that the Old Job and New Job association appears correctly on both records. Follow the SalesIntel guide to associating contacts’ old and new roles to configure and verify the association.

Complete these checks in the first few days, well within the 15-day rollback window described in the HubSpot Installation & Configuration Guide.

Can you undo an enrichment in HubSpot?

Yes, within limits. You have two main tools, and they differ in scope.

SalesIntel job rollback. Click the rollback icon next to the job name in the enrichment task table. Per SalesIntel’s guide, you have 15 days to roll back a job, rolling back resets every field the job updated to its status before the job started, and any later changes to those fields are lost. You receive a notification when it completes. Rollback is not available for the buying-committee job type (labeled Buying Center in the app as of the April 2026 guide), because SalesIntel does not delete contacts from your HubSpot account. Note: If your enrichment job involved job-change handling, review any newly created contacts in HubSpot manually after the rollback to determine whether they need to be removed or updated.

HubSpot property history. For one record, open Actions, then View property history, and restore a value. For many records, go to the property in your settings, hover, click More, and choose Export property history. Copy the Record ID column and the column holding the values from before the most recent update, then import that file. HubSpot keeps up to 45 revisions per contact property. When you import to restore values, leave Don’t overwrite unchecked, because overwriting is the point.

Both methods replace current values, so the difference is scope. Rollback resets every field the job touched, including edits reps made afterward. Property-history restore lets you choose the specific properties and records. If your team has worked the records since the job ran, restoring the affected properties is the narrower fix.

Two other safeguards sit outside both tools. Your pre-job export is the fallback if a property has passed its revision limit. Merges are the one change with no recovery: HubSpot states merged records cannot be reverted.

What if you enrich with a CSV import instead?

HubSpot’s import tool has its own overwrite control. In the mapping step, the Manage existing values column includes a Don’t overwrite checkbox for each property, and a checkbox at the top of the table applies it to every property in the file. When it is selected, the import updates the property for new records and for existing records that have never had a value for it. By that wording, a record whose value was deliberately cleared is not treated as empty, so test on one such record before a large import.

To keep an import from creating contacts, choose Update existing records only. Contacts are matched on email by default, or on a custom property that requires unique values. Recovery for imports relies on the same property history tools described above.

What can still go wrong?

Fill-only protects values you already have. It does not verify the new ones. Even human-verified data is described as 95% accurate, so a sample check belongs in every run.

Overwrite off also keeps stale values stale. For fast-decaying properties such as title and phone, review after the first sampled run whether switching to overwrite is worth it for a defined segment.

Match quality depends on what is in the record. Sparse records match less often, and a low match rate on a thin segment is a data problem, not a setting problem.

Job-change handling runs once per record. If you change your approach after the first pass, clear the disposition fields on the records you want reprocessed.

Frequently asked questions

Does HubSpot enrichment overwrite existing contact data?

It depends on the tool and the setting. HubSpot’s import tool overwrites unless you select Don’t overwrite for a property. SalesIntel overwrites only mapped fields with Allow Overwrite checked. HubSpot’s own enrichment has a mapping tab where you can set overwrite rules per property.

How do you stop an integration from overwriting a field in HubSpot?

Leave the field unmapped, or map it with overwrite off. For records you hand-verified, exclude them from the job’s list with a lock property.

Can you undo HubSpot enrichment?

You can roll back a SalesIntel job within 15 days, and you can restore values from HubSpot property history record by record or in bulk. Merged duplicates cannot be restored.

Should you merge duplicates before or after enriching contacts?

Before. Merges are permanent, and resolving duplicates first means each person has one record when the job matches and writes.