Explainer

What Is Identity Resolution?

Identity resolution decides which records belong to the same person. Here is how matching works, where it breaks, and which keys to trust in B2B data.

Get your free API key →Free to start. No credit card. 1,000 records to spend whenever you like.

Identity resolution is the process of deciding which records, from which systems, belong to the same real person. It turns three half-filled contacts into one profile you can act on.

Key takeaways

  • Identity resolution answers one question: are these two records the same person, or two people?
  • Deterministic matching uses exact keys such as a work email or a LinkedIn URL. It is precise but misses records that lack the key.
  • Probabilistic matching scores near matches on name, company and title. It finds more links and makes more mistakes.
  • In B2B, the person key matters more than the device or cookie. LeadOcean returns a record key (person_id), a person key (person_group_id) and reverse lookup by email or phone.

What it is

Identity resolution is the process of matching records from different sources to a single person, then keeping that link stable over time.

The records can come from a CRM, a web form, a webinar list, a support tool or a purchased file. Each one holds a different slice of the same buyer: a personal email here, a work email there, a phone number somewhere else.

Without resolution, those slices look like separate people. A rep emails the same contact twice. Lead scoring splits one buyer's activity across three rows. Routing sends the account to the wrong owner.

Consumer marketing uses the term for cookies, device IDs and ad profiles. B2B teams use it for contacts and accounts. The goal is the same: one record per person, linked to one company.

How it works

The process has five steps, and every tool that claims to do it follows some version of them.

  1. Collect. Pull records from every system that holds prospect data: CRM, forms, events, support, enrichment.
  2. Standardize. Lowercase emails, strip tracking parameters from URLs, format phones to one pattern, and normalize company names. Matching on messy values fails quietly.
  3. Match. Compare records. Exact matches on a strong key link records at once. Near matches get a similarity score.
  4. Resolve. Link records above your confidence line to one profile and assign a persistent ID. Send low-scoring pairs to a human or leave them apart.
  5. Maintain. Re-run as data changes. People switch jobs, domains change, and a merge that was right last year can be wrong now.

A worked example

Take a fictional buyer, Jane Doe, at acme.com. Three records exist.

  • The CRM has jane.doe@acme.com, title "Head of Sales".
  • A webinar list has a personal webmail address and the same name.
  • A sales rep keyed in a LinkedIn URL and the number +1 415 555 0133.

Matching on email links nothing, because the three emails differ. Matching on name alone is risky, since many people share a name. A reverse lookup of the work email returns the person who holds it, with a person_group_id. Enriching the LinkedIn URL returns the same person_group_id, so the records collapse into one.

The strong keys did the work. The name only confirmed it.

Identity resolution vs identity verification

People mix these up because both touch emails and phones. They answer different questions.

Identity resolutionIdentity verification
Question answeredDo these records describe the same person?Is this contact point valid and deliverable?
InputTwo or more recordsOne email or phone
OutputA link and a persistent IDA status such as verified, risky or invalid
Failure modeWrong merge, or a missed duplicateBounce, or a good address dropped
Typical useDeduplicate a CRM, stitch a leadDecide whether to send
LeadOcean fieldperson_group_id, reverse lookupemail_status

Entity resolution is the wider term. It covers companies, products and places as well as people. B2B work needs both: person matching to avoid duplicates, and account matching to know which company a person belongs to.

When it matters

Deduplicating a CRM

Duplicates waste rep time and distort reporting. Resolution finds the pairs, picks a surviving record and keeps the link. Start with exact email matches, then review fuzzy name and company pairs by hand.

Stitching inbound leads to known accounts

A form fill with a personal email carries no company. Resolution ties it to a person and an account, so routing and scoring treat it as a buyer from a target company, not an isolated lead.

Combining a purchased list with your own data

Two lists rarely share a clean key. Resolve on work email first, then LinkedIn URL, then phone. Check each source's email status before you trust a match, since a stale address can link to the wrong person.

Catch-all domains

On a catch-all domain, the server accepts any address, so an email can look valid and still not belong to a real mailbox. A match on such an address is weaker evidence. See the catch-all domains guide before you treat these emails as strong keys.

How LeadOcean handles it

LeadOcean does not run a matching engine or merge records in your CRM. It has no rep workspace, sequencer, dialer or CRM. It supplies the keys and lookups that make your own matching reliable.

The calls map to the steps like this:

  • Resolve by email or phone: /v2/people/reverse takes an email or a phone, never both, and returns the person who holds it. It costs one record, including when it finds nobody.
  • Enrich by any strong key: POST /v1/people/enrich takes exactly one of linkedin_url, email, phone or person_id. A person we hold nothing for is a 404 and costs nothing.
  • Record key: a people-search row carries person_id at meta.source_ids.person_id. Send it back to enrich that exact record.
  • Person key: person_id names a record, and one person can come back under different person_ids through different contact points. Compare person_group_id instead: two records that share it are the same person.
  • Link people to companies: GET /v1/companies/{domain}/people lists the people we hold at a domain, up to 10,000 rows.
  • Read the confidence: each email carries an email_status from a list of 13 values, so you can weight a match by how good the address is.

Here is a reverse lookup, then an enrichment by the person_id it returns. Store the person_group_id from each answer for matching. Replace the placeholder email with your own.

bash
curl "https://api.leadocean.io/v2/people/reverse?email=jane.doe@acme.com" \
  -H "x-api-key: $LEADOCEAN_API_KEY"

curl "https://api.leadocean.io/v1/people/enrich?person_id=PERSON_ID&reveal_email=true" \
  -H "x-api-key: $LEADOCEAN_API_KEY"

The database holds 693M people and 63M companies (measured September 2026), refreshed monthly. Each record carries its own fetched_at date, so you can see how fresh a match is.

The free plan gives 1,000 records, one-off, with no card. Pro is $499 a month, flat. See pricing.

FAQ

What is the difference between identity resolution and entity resolution?

Entity resolution matches any kind of record: people, companies, products or locations. Identity resolution is the people case. In B2B you usually need both, so contacts attach to the right company.

What is the difference between deterministic and probabilistic matching?

Deterministic matching links records that share an exact key, such as a work email. Probabilistic matching scores near matches on fields like name and company. Use deterministic matching first and probabilistic matching to fill gaps, with a human check on risky merges.

Does identity resolution need cookies?

No. Cookie and device matching is the consumer version. B2B matching runs on first-party keys: work email, phone, LinkedIn URL and an account domain. Those keys come from the buyer or from systems you control.

Which key is best for matching B2B contacts?

A verified work email is the strongest default, because it is unique to one person at one company. A LinkedIn URL is a close second and survives job changes. Phone is useful as a tiebreaker.

Can LeadOcean merge my CRM duplicates?

No. LeadOcean returns the person behind an email, phone or LinkedIn URL, with a person_group_id you can compare across lookups. Your CRM or data tool does the merge. This is not legal advice on how to handle personal data in your region.

Match your records to one person on 1,000 free records

Free to start. No credit card. 1,000 records to spend whenever you like.

Get your free API key →