How to Enrich CRM Contacts Automatically
How to Enrich CRM Contacts Automatically
How to enrich CRM contacts automatically: re-enrich new and changed contacts on a schedule, fill emails and firmographics, and write back safely.
No credit card required
Free 200 credits every month
The best way to enrich CRM contacts automatically is a setup that re-enriches new and changed contacts on a schedule, runs a provider waterfall ordered by cost and hit rate, pays only for lookups that return data, and writes results back only to the CRM fields you map. Oneprofile does all four on HubSpot and Salesforce.
Most "automatic" enrichment is a one-off pass that someone has to remember to repeat. Contacts go stale the week after it finishes, new ones arrive bare, and the next pass costs the same as the first because nothing told it which contacts actually changed. This guide sets up the version that keeps going without you, in six steps. The wider picture, including what your own systems add, is on the CRM enrichment that keeps every record current page.
What automatic CRM contact enrichment has to do
Four things separate a setup that stays current from one that decays between passes.
Requirement | Why it matters |
|---|---|
Re-enrich new and changed contacts on a schedule | Contacts decay continuously, and a one-off pass starts going stale the day it ends |
Provider waterfall ordered by cost and hit rate | No single provider covers everyone, and the cheapest likely answer should run first |
Pay only for lookups that return data | Re-enrichment passes miss a lot by design, so billed misses make the useful runs the expensive ones |
Per-field write-back you control | A field you leave unmapped is never touched, and a lookup that found nothing never blanks one |
How fast contacts go wrong, and what it costs a small team, is covered in CRM data decay. The steps below are the fix.
Step 1: Connect HubSpot or Salesforce and import contacts to enrich
Connect Salesforce over OAuth as a user with read and write access to contacts and companies, or HubSpot with a private app token that has those scopes. The connection is tested against the live API before it is saved, and you see a real sample of your contacts, so an object the user cannot read is caught now rather than on the first run.
CRM-specific details, such as HubSpot's association rules or Salesforce Lead conversion, live in the HubSpot data enrichment guide and the Salesforce data enrichment guide.
Then import the contacts you want kept current. A whole object works, but the first hundred or so contacts make a cheaper first run to check, and a run condition in step 2 can keep enrichment to the contacts that still need it.
The one setting worth slowing down for is the matching field. Pick the CRM record ID, because every later refresh uses it to recognise a contact it has already seen. Match on something that changes, like email, and a contact who changes jobs comes back as a stranger.
Step 2: Let the automatic waterfall fill emails, phones and firmographics
Add the enrichments you need: work email with a deliverability check, mobile or direct phone, job title and seniority, and company firmographics such as industry, employee count and location.
Each one is a waterfall you do not have to build. Providers are tried in order of cost and hit rate, the first real answer stops the chain, and later providers never run. A lookup that returns nothing is never billed. The run shows its credit cost before it starts.
Then switch on automatic runs for new and changed contacts, with Keep existing results on. From here, a contact that arrives or changes is enriched by itself, and a contact that already has an answer is not paid for twice. Add a run condition if you want to be stricter, for example only contacts that still have no verified email.
Step 3: Add Stripe, your product database and your support desk as enrichment sources
Provider data tells you who someone is. Your own systems tell you whether they matter right now, and no data vendor can sell you that.
Source | Fields it adds | What a rep learns |
|---|---|---|
Billing (Stripe) | Plan, MRR, renewal date | Who pays, how much, and when it is at risk |
Support desk | Open tickets, last ticket outcome | Who is unhappy before the call |
Product database | Last login, seats in use | Who uses what they bought |
Connect each one the same way you connected the CRM, then add a lookup that reads the matching record on your own credentials. People match on email address and companies on domain, so these fields land on the right contact. Switch the lookups to run automatically too, and billing and usage stay as current as the contact details.
Step 4: Set a scheduled refresh so contacts re-enrich on their own
This is the step that makes the setup automatic. Set the CRM import to refresh on a cadence: hourly, daily, weekly, monthly, or a custom interval, at an hour in your timezone. The schedule shows its next few run times, so you can check it before leaving it alone.
Where the CRM supports it, each refresh fetches only contacts created or changed since the last successful run. Those flow straight into the enrichments you switched on in step 2, and nothing else is touched or charged.
Choose the slowest cadence your team can live with. Daily suits most sales teams. Hourly suits inbound teams routing new contacts the same day, and it is also the cadence that spends credits most often. New contacts are picked up on the next refresh rather than the moment they are created, so the cadence is your enrichment delay.
Step 5: Map and export enriched fields back to the CRM
Create the CRM properties first. The export lists only fields your CRM already has and writes only to those, so add any custom property in HubSpot or Salesforce, then click Refresh to see it in the mapping.
Map each enriched field to its property, person data to the contact and company data to the company. An update to a contact that already exists changes only the fields you mapped, and everything else on the record stays as it is. If reps maintain a field by hand, such as a title they corrected, leave it unmapped and write the enriched value to a field of its own.
Skip empty values stays on, so a lookup that found nothing never blanks a field a rep filled.
Dry-run against a handful of real contacts first. It shows exactly what would be written and to which CRM record before anything is sent.
Step 6: Check your automatic enrichment results
Push the export, then open the run history. Each run shows what filled, what came back empty, what failed, and the credits it charged. Open three or four contacts in the CRM and confirm the values landed on the properties you expected.
After that, the routine is short. Push the export after each refresh so new results reach the CRM, glance at run history for failures, and retry failed pushes, which never re-sends contacts that already went through.
What automatic CRM enrichment costs
Every operation has a published credit price, every run quotes its cost first, and misses are free. The Team plan is $20 a month with 1,000 credits and includes the CRM import, scheduled refresh and export back to HubSpot or Salesforce. The free tier is $0 with 200 credits and no card, enough to try it on up to 100 contacts with your CRM and two other systems and see how many were blank. Get started free.
What is the best tool to enrich CRM contacts automatically?
Does automatic enrichment start the moment a contact is created in the CRM?
Which contact fields can be enriched automatically?
Do I pay for enrichment lookups that find nothing?
Do I need to create CRM properties before enriching contacts?
Can I stop automatic enrichment from re-spending credits on contacts already done?