What Is Contact Data Enrichment?

CleanlistThe short answer

Contact data enrichment is filling in the person-level fields a contact record is missing, then verifying the ones that can be verified. In practice it takes a thin row, often a name and a company domain, and returns a verified work email, a direct dial, a job title, a seniority and department, a LinkedIn URL, and the company that person works at. Cleanlist runs it as a waterfall across 25+ data providers, asking them in cost order and stopping at the first answer a live mail server or line-type check confirms, and charges 1 credit for a verified work email and 10 for a direct dial, with a lookup that returns nothing costing nothing. It is distinct from company enrichment, which resolves the organisation rather than the human, and it is harder, because a company has one domain and a person has a name that thousands of other people also have.

  1. 01What is contact data enrichment?
  2. 02What fields does contact data enrichment actually return?
  3. 03Where does enriched contact data come from?
  4. 04How does enrichment know it found the right person?
  5. 05Why is a direct dial harder to find than an email address?
  6. 06How is contact data enrichment different from company data enrichment?
  7. 07How is enrichment different from buying a contact database?
  8. 08How much does contact data enrichment cost?
  9. 09How accurate is enriched contact data, and how do you test a provider?
  10. 10What do you do with catch-all, role-based and unknown addresses?
  11. 11How often does contact data need re-enriching?
  12. 12How should enriched contact fields be set up in a CRM?
  13. 13Is enriching someone's contact data legal?
  14. 14Where does contact data enrichment stop?

What is contact data enrichment?

Contact data enrichment is filling in the person-level fields a contact record is missing from sources outside it, then verifying what came back. The unit of work is one human being, and the output is a row a rep can act on without opening another tab.

The input is nearly always thinner than the people planning the project assume. A webinar registration gives you an email and a first name. A conference attendee list gives you a name and an employer. A Sales Navigator export gives you a profile URL and a title that may be two roles out of date. None of those is enough to route the lead, score it, or call the person, and every one of them is enough to find the rest.

The word contact is doing specific work in the phrase. Contact data enrichment resolves the person: how to reach them, what they do, and where they sit. Company data enrichment resolves the organisation around them. Both are usually bought together and they behave completely differently, which is the subject of a section further down this page.

One framing correction worth making early. Enrichment is not a cleanup project with an end date, because the underlying facts move on their own. A contact record is not wrong or right, it is current or stale, and every month that passes moves a few more rows from the first category to the second.

What fields does contact data enrichment actually return?

The person-level fields Cleanlist stores and returns are work_email, email_status, direct_dial, linkedin_url, job_title, seniority and department, alongside the company fields that arrive with the contact: company_name, company_domain, company_headcount, company_industry, hq_location and founded_year.

That literal list is the whole answer to the only question a data buyer actually has, which is whether their own field is in the response. A phrase like complete contact profile does not answer it, and neither does a screenshot. Ask any vendor for the field list in writing before a trial rather than after one, because a field that is not in the response is not going to appear because the account executive nodded.

Some of these fields are facts that can be checked against a live system and some are not, and the difference decides how much you should trust each one. An email can be confirmed against the mail server that would receive it. A phone number can be checked for line type and format. A job title cannot be verified against anything, because there is no authoritative registry of who holds which title, so it is a best available answer with a source attached rather than a proven fact.

Anything past the stored set is produced rather than looked up. Funding events, hiring signals, tech stack and recent news come back from an AI research column at the moment you ask, priced at 5 credits for AI qualification, and the answer carries the date it was produced, because a produced answer without a timestamp is worthless six weeks later.

Where does enriched contact data come from?

From a pool of specialist providers, each of which built its coverage a different way, which is why no single one of them is complete. Cleanlist licenses and orchestrates 25+ of them rather than maintaining a database of its own.

The honest summary of provenance in this category is that contact data originates from a mix of public professional profiles, company websites and press material, permissioned contributions, partner networks, and pattern inference confirmed by verification. Different providers weight those differently, and that weighting is exactly why their coverage diverges. A provider strong on North American enterprise directors is often weak on European SMB owners, and neither of them is doing anything wrong.

This is the mechanical argument for a waterfall rather than a single source, and it has nothing to do with which vendor is better. If provider A holds 70% of your list and provider B holds 70% of it, the overlap between them is not 100%, so asking B for the rows A missed recovers real records. Repeat that across a pool and the recovery compounds. The Cleanlist 500-Lead Enrichment Benchmark, 2026 measured the gap on identical input: 98% verified work email and 85% direct dial from the pool, against 70% to 80% email and 30% to 60% phone from single sources.

Provenance also matters after the purchase, not just during it. A field that arrives without knowing which provider supplied it cannot be audited when a rep insists the title is wrong, and it cannot be suppressed cleanly when a person asks to be removed. Every field Cleanlist returns carries the source that supplied it, which is a consequence of being an orchestration layer rather than a database owner.

How does enrichment know it found the right person?

By identity resolution: the engine decides which specific human the row refers to before it goes looking for their contact details. This step, not the lookup, is where contact enrichment quietly fails.

Company matching is comparatively easy because a domain is a unique key. Person matching is not, because a name is a string that thousands of people share, and the same person appears across sources as Robert, Bob, Rob and R., at IBM and at International Business Machines, as VP Sales and as Vice President, Sales. A matcher has to reconcile all of that before it can be confident it is looking at one individual.

That is why the keys you send change the outcome more than the vendor you choose. A LinkedIn profile URL is an identifier and resolves cleanly on its own. A name plus a company domain is the workhorse pair and resolves well. A name plus a company name with no domain resolves less reliably, because company names collide and abbreviate. A name alone at a 40,000-person employer is a coin flip, and no amount of provider coverage fixes it.

The practical consequence for anybody about to run a file: the cheapest available improvement to your match rate is usually a column you already have somewhere else. Adding the domain your marketing automation platform already stores, or the profile URL sitting in a spreadsheet from last quarter, lifts results more than switching tools would.

The failure mode to watch for is a confident wrong match. A record that comes back empty is obvious and costs nothing. A record that comes back with a real, verified, deliverable email belonging to a different Sarah Chen is invisible until a rep sends to it, which is why a spot-check by hand on 50 returned rows is worth more than any aggregate number a vendor prints.

Why is a direct dial harder to find than an email address?

Because a work email is largely inferable and verifiable, and a phone number is neither. An address follows a pattern the domain repeats, and a mail server will tell you whether the mailbox exists. A mobile number follows no pattern and no system will confirm it belongs to that person.

The verification asymmetry is the whole story. Cleanlist checks an email in four steps: RFC 5322 syntax, an MX record lookup on the domain, an SMTP handshake against the mailbox, and risk detection for catch-all, disposable and role-based addresses. The address either survives that or it does not, and the record carries the verdict as email_status. There is no equivalent handshake for a phone. You can check formatting and line type, and after that the only real test is dialling it.

Coverage follows the same asymmetry. On the Cleanlist 500-Lead Enrichment Benchmark, 2026, verified work email came back for 98% of 500 stratified B2B leads and a direct dial for 85%. Single sources on the identical input returned 70% to 80% for email and 30% to 60% for phone. Phone is where the spread between a pool and a single database is widest, which is the most practical reason to cascade rather than to license one store.

Pricing reflects the difficulty rather than a packaging decision. A verified work email is 1 credit at Cleanlist and a direct dial is 10, with both on the same person at 11. If a motion is email-first, most of a credit budget never touches the expensive field. If it is call-first, plan for roughly ten times the spend per contact and be deliberate about which segment deserves it.

A planning note that saves money: enrich phone for the accounts a rep will actually dial this quarter, not for the whole database. Phone numbers decay at about 18% a year according to SparkDBI, so a direct dial bought for a contact nobody calls for eleven months is a field you paid ten credits for and will have to buy again.

How is contact data enrichment different from company data enrichment?

Contact enrichment resolves a person and how to reach them. Company enrichment resolves the organisation. They are sourced differently, priced differently, and a single record routinely succeeds at one and fails at the other.

Company fields resolve for almost any row that arrives with a real domain, because a domain is unique and the facts behind it are largely public. Contact fields depend on whether any provider in the pool holds that individual human, which is a far harder question for a 12-person consultancy than for a 12,000-person bank. At Cleanlist a company enrichment is 1 credit, the same as a verified work email and a tenth of a direct dial.

The difference shows up in what each one unblocks. Company fields are what lead scoring, territory assignment and routing need, so they gate the operations layer. Contact fields are what outbound needs, so they gate the sending layer. A team that cannot route is missing firmographics, and a team that can route but cannot reach anybody is missing contact data. The symptoms look identical from a pipeline report and the fixes are different.

The most useful thing to do with a mixed result is read it as market feedback rather than vendor failure. A list that returns complete firmographics and patchy direct dials is telling you the companies are findable and the people are not yet, which is usually a signal to change the ICP rather than to change the tool.

How is enrichment different from buying a contact database?

A database is a store you license and search. Enrichment is an operation you run against records you already have. The difference is which one holds the list: with a database you are shopping in someone else's inventory, with enrichment you bring your own rows and pay to have them completed.

The billing consequence is the one people notice. A database licence is usually a seat or an annual contract, so the invoice is the same whether a seat ran four hundred lookups or none. Enrichment priced per returned field means a list that resolves badly costs almost nothing, because Cleanlist bills on results and a lookup that walks the whole pool without an answer is 0 credits.

The coverage consequence is the one people notice later. A single database is a ceiling: whatever it does not hold, you do not get, and you find out one segment at a time. A waterfall across 25+ providers has a different shape of gap, because a row only fails when nobody in the pool holds the person.

Which one is right depends on what you are actually buying. If the team needs a research surface to browse and explore, and coverage of a defined market is the point, that is a database purchase and enrichment does not substitute for it. If the team already has lists arriving from forms, events, exports and the CRM, and the problem is that those lists are incomplete, that is enrichment. Plenty of teams end up doing both. Cleanlist also runs People Search and Company Search at 0 credits, so building a list and completing it happen in the same place, but the search is a live query across providers rather than a stored database you own a copy of.

How much does contact data enrichment cost?

Cleanlist charges per returned field rather than per attempted lookup: 1 credit for a verified work email, 10 for a direct dial, 11 for both on the same person, 1 for a company enrichment, 0.5 to validate an address you already hold, 5 for an AI qualification, 0.2 to push a finished lead into a CRM, and 0 when nothing comes back. People Search and Company Search cost nothing.

The plan fee buys the credits. Free is $0 for 30 credits a month with one seat and 100 leads per list. Starter is $79 for 1,500 credits and 2 seats, and it is where CSV upload, AI Search, Find People and Sales Navigator open. Pro is $229 for 5,000 credits and 5 seats, and adds two-way CRM sync and the public REST API. Scale is $599 for 15,000 credits and 10 seats, and adds Playbooks and volume credit rates. Annual billing takes 25% off any paid plan and an extra seat is $20 a month.

Working a real budget through: 1,500 credits on Starter is 1,500 verified work emails, or about 136 contacts with email and direct dial together, or any mix in between. Because search costs nothing, narrowing a market down to the 300 people worth enriching happens before a single credit is spent, and for most teams that filtering step is where the real saving sits rather than in the per-credit rate.

The line item most likely to surprise you is phone. At ten credits a direct dial, a decision to enrich phone for an entire list rather than for the accounts being worked can multiply a monthly bill without changing a single outcome. Decide that segment deliberately.

Cleanlist opens every new workspace on Scale for 14 days with 250 credits, 3 seats and no credit card, which is 250 enriched addresses at the email rate: enough to run a real control file before anything is signed. Full detail is on the pricing page.

How accurate is enriched contact data, and how do you test a provider?

Test it against a control file from your own database where you already know the answers, and judge on cost per valid record rather than on price per lookup or on database size. Every published accuracy figure, including ours, is a claim about somebody else's input file until you run yours.

Any accuracy number without a denominator is not a number. A vendor quoting 95% has told you nothing until you know 95% of what: of the records it chose to return, or of the records you asked about. Those two figures can differ by forty points on the same run, because the easiest way to raise the first one is to return fewer rows. Ask for both, and ask which one the marketing figure refers to.

Measure fill rate and accuracy as two separate numbers, because they are two different things. Fill rate says how many fields came back. Accuracy says how many of those are correct. A tool can win on the first and lose on the second, and only the second determines whether a rep reaches anybody.

The test itself takes an afternoon. Pull 500 to 1,000 rows of your own data, stratified across the segments you actually sell to rather than the ones that enrich easily. Hold back a hundred where you already know the answer. Upload as UTF-8 with first name, last name and company domain per row. Run the same file through every finalist on the same day, because coverage moves. Then count three things: how many rows returned anything, how many matched what you knew, and how many bounced when you sent to them. Finish by hand-checking 50 emails and 50 phone numbers, which is the only step that catches a confident wrong match.

Use your own file rather than a vendor's sample. A sample is chosen, and the choosing is the point.

One bias worth stating plainly: this page is published by a vendor in the category. The test above is written so it can be run against Cleanlist, and the 14-day Scale trial with 250 credits and no card exists so that it can be.

What do you do with catch-all, role-based and unknown addresses?

Treat them as three separate buckets with three separate rules, because collapsing them into valid or invalid is how good lists still bounce. Verification returns a status per address, and the status is the instruction.

A catch-all domain accepts mail for every address regardless of whether the mailbox exists, so a positive response proves nothing about that specific person. Catch-all domains are 15% to 25% of B2B addresses, which is far too many to discard and far too many to trust blindly. The workable rule is to cap them as a share of any single campaign rather than excluding them outright, and to send to them from a segment you are willing to risk rather than mixed into your best one.

A role-based address such as info@, support@ or admin@ is a group alias rather than a human being. It is often deliverable and rarely the right recipient for outbound, and it distorts reply-rate measurement because a shared inbox behaves nothing like a person's. Route these somewhere other than a one-to-one sequence.

Unknown means the receiving server never gave a definitive answer, usually because of greylisting or rate limiting, and it is not the same as invalid. Retry the segment later rather than deleting it.

Invalid is the only bucket that is genuinely finished. The domain or the mailbox does not exist, and retrying it does nothing except add a bounce to your sending domain's record.

The cheap habit that keeps this working over time is re-validating before a campaign rather than re-enriching on a calendar. Validation is 0.5 credits an address, a twentieth of the cost of finding a direct dial, so checking what you already hold and only re-enriching the rows that fail is the least expensive way to keep a list sending.

How often does contact data need re-enriching?

More often than company data, because people move and companies mostly do not. Re-verify active segments before a campaign touches them, re-enrich the rows that fail, and re-run contact fields on open opportunities quarterly.

The decay figures explain the cadence. Cognism puts overall B2B contact data decay at about 2.1% a month and 22.5% a year. Email addresses are the fastest field to go, at 22.5% to 30% a year according to Cognism and SparkDBI, and SparkDBI puts phone numbers at about 18%. LinkedIn's Economic Graph puts annual job changes at 10.9% of professionals, which is the mechanism underneath all three: when somebody changes employer, their work email, their direct dial and their title all become wrong on the same day, and their company record becomes wrong too.

Compound that over two untouched years and a database is not slightly stale, it is wrong on roughly two records in five, with the wrongness concentrated in exactly the fields outbound depends on.

The failure is quiet, which is what makes it expensive. A stale contact does not raise an error. It sends an email that bounces against your own sending domain, or routes a lead to a territory owner who no longer covers it, or shows a rep a title that makes the first line of their message wrong. The cost lands in deliverability and in rep credibility rather than in a line item anybody reviews.

Re-enrich immediately on a decay signal rather than waiting for the schedule. A bounce, a disconnected number, or a public profile that no longer matches the title on the record are all the same event, and that event is worth acting on the day it happens. Cleanlist prices re-enrichment identically to first enrichment and charges nothing on a row that returns no change, so a quarterly refresh costs the fill rate rather than the row count.

How should enriched contact fields be set up in a CRM?

Give enriched fields their own home, separate from the fields humans type into, and never let the two share a column. This single modelling decision determines whether a database stays clean between enrichment runs.

The reason is ownership. If a rep can type into the same field an enrichment writes to, one of them is always about to overwrite the other, and no amount of re-running fixes it. Enriched fields should be system-owned and read-only in the interface. Rep observations belong in their own fields beside them. When the two disagree, the disagreement is now visible rather than silently resolved in favour of whoever wrote last.

Store provenance and a timestamp next to any field you might have to defend. Which provider supplied the address, when it was verified, what email_status it carried. A merged record that cannot say where a field came from is a record you cannot audit when a rep says the title is wrong, and it is a record you cannot honour a deletion request against cleanly.

Deduplicate before enriching, not after. Paying to enrich two copies of the same person costs twice and produces a merge conflict as the prize. Clean lookup keys also lift the match rate on everything you do pay for, so the cleanup pays for part of itself.

Then make the write-back real. Enrichment that ends in a CSV nobody imports has changed nothing. Cleanlist syncs two-way with HubSpot, Salesforce and Pipedrive on the Pro and Scale plans, which means records can be read out of the CRM, enriched, and written back, rather than only exported. Outreach, Salesloft and Lemlist receive rows one way, because Cleanlist does not send email and nothing needs to come back from a sequencer. Pushing a lead is 0.2 credits. On Starter, movement happens by CSV export or through the MCP server; the public REST API opens on Pro.

One-way versus two-way is worth reading carefully on any vendor's integration page, because most tools that say CRM integration mean export only. Reading from the CRM is the half that lets you enrich the records you already own, which is where the decay described above is actually sitting.

Where does contact data enrichment stop?

At the contact and company record. Cleanlist is an orchestration layer over other providers' data rather than a data vendor with a database of its own, and it does not sell intent data, technographics, a stored database to browse, job-change alerting, or email sending.

Each of those omissions has a right answer that is not us. If a motion depends on knowing which accounts are in market, an intent platform is the correct purchase and no amount of enrichment substitutes for it. Intent is also structurally different from the fields on this page: it is inferred from behaviour somebody else observed, and there is no second source to verify it against the way an email can be verified against a mail server. If you want a stored database to explore as a research surface, that is a licence purchase. If you want to send, that is a sequencer's job, and Cleanlist writes into Outreach, Salesloft and Lemlist rather than competing with them.

Job-change alerting is the one people ask for most often on this specific term, and the honest answer is that Cleanlist does not push a notification when a contact moves. What it does instead is make re-enrichment cheap enough to run on a schedule, and validation cheaper still at 0.5 credits, so the move surfaces the next time the segment is checked rather than the day it happens.

What is left is a narrow job: take a list of people, work out who each one actually is, find and verify how to reach them, and put the result where the team already works. Every claim on this page is about that job and nothing else.

The follow-up questions.

Can you enrich a contact from an email address alone?

Yes. An email address is a strong key because the domain identifies the company and the local part narrows the person, so a reverse lookup can return the name, the job title, the seniority, the LinkedIn URL and the company fields around them. It is the standard way to make sense of a form fill that captured nothing but an address. The reverse direction, name to email, is the more common request and needs a company domain alongside the name to resolve reliably.

What is the minimum input for contact data enrichment?

A full name plus a company domain is the practical minimum, and a LinkedIn profile URL on its own works too because a URL is a unique identifier rather than a string two people can share. A name plus a company name with no domain resolves less reliably, since company names collide and abbreviate. A name with no company attached is not enough at any scale. Every extra key you can send raises the match rate, and the cheapest improvement available to most teams is a domain column they already have in another system.

What happens to a contact that cannot be enriched?

It comes back empty and costs nothing. Cleanlist bills on returned fields, so a lookup that walks the entire provider pool without a confirmed answer is 0 credits. That caps the downside on a list you are unsure about: the worst case is that you spent nothing and learned your target market is thinner than you assumed. Keep the misses rather than deleting them. A person who is unfindable this quarter is often findable after they change employer, because the move puts them into sources that did not hold them before.

Can you enrich contact data through an API?

Yes, on the Pro and Scale plans. The public REST API v2 authenticates with clapi_ Bearer keys, supports OAuth scopes, and returns a signed cost quote before any credits are spent, which lets an integration read the price of a job and decline rather than letting a runaway script spend a month of credits in an afternoon. Bulk enrichment is asynchronous: a job returns a workflow_id you poll, which is the right shape when a single row may escalate through several providers. The MCP server is available from Starter upward and lets an assistant run search and enrichment conversationally without anyone writing an integration. Both the API and the MCP server are held back during the 14-day trial.

Does contact data enrichment work outside North America and for small companies?

Coverage varies by region, by company size and by seniority far more than it varies by vendor. Senior titles at well-known companies enrich easily almost anywhere. SMB owners, non-English-language markets and people who changed roles last quarter are consistently harder, and no provider flattens that with marketing. A pool of providers helps, because their regional strengths differ and a row only fails when nobody holds the person, but the only way to know what your specific market returns is to run a few hundred rows of it. If a territory is central to the plan, make that territory the control file rather than a mixed sample, because a global average hides exactly the gap you needed to find.

Is contact data enrichment the same as data appending?

They describe the same operation with different framing. Data appending is how buyers of a legacy CRM cleanup usually describe it, filling blanks in a file you already hold. Contact data enrichment is the broader term and covers the same fill-the-blanks work whether the record arrives from a form this morning, an export last year, or the CRM you are refreshing this quarter. Treat them as one category when comparing tools, and compare on the field list and the billing model rather than on the label, since those are the two things that actually differ.

Should you clean contacts before enriching them, or after?

Before, with one exception. Deduplicating and standardising first means you are not paying to enrich two copies of the same person, and clean lookup keys raise the match rate on everything you do pay for, so the cleanup partly funds itself. The exception is validation of addresses you already hold, which is worth running after enrichment as well as before, because the point of validating is to catch the decay that has occurred since anybody last looked.

Do reps need to be technical to run contact data enrichment?

No. A CSV upload on Starter and above, a CRM sync on Pro and above, and the Chrome extension on every plan cover most teams without anybody writing code. Engineering enters only when enrichment has to happen inside another system: a form handler that enriches on submit, a nightly refresh of a segment, or a product that enriches its own signups, which is what the REST API is for. The MCP server sits between the two and lets an assistant do the work conversationally from Starter upward.

Gain full access for 14 days.

Cleanlist runs one lookup across 25+ providers and stops at the first source that returns. Search costs nothing on every plan, a verified work email is 1 credit, a direct dial is 10, and a miss costs nothing at all.

250 credits, 3 seats, 14 days. No card required. Every feature except the public API and MCP. The Free plan stays at 30 credits a month after that.