What’s on this page:
Key takeaways
- Use an exact NPI match and at least one matching license state-and-number pair as the workflow’s proposed basis for an automatic merge.
- If a license is missing or identifiers conflict, keep records separate or route them for review rather than relying on name, specialty, location, or contact details alone.
- Store multiple licenses and contact channels on the golden record, with source and verification details where available.
- Keep an audit trail of merge reasons, matched identifiers, source priorities, and manual review details.
- Treat shared phone numbers and email addresses as contact channels, not proof that records represent the same person.
Last updated: August 31, 2026

Ben Argeband, Founder & CEO of Heartbeat.ai — Prevents wrong-person outreach; ops-friendly.
Who this is for
This is for recruiters and recruiting ops teams cleaning provider lists and matching records before outreach — especially when you’re merging multiple sources and fighting duplicate records.
If a candidate has ever replied “wrong person,” or your team burned time chasing a shared clinic line, that’s an identity resolution problem, not a messaging problem.
Quick Answer
- Core Answer
- Anchor each physician to NPI, then confirm with license matching (state + license number) before merging records or attaching contact channels for outreach.
- Key Insight
- NPI is typically more stable than contact methods; licenses disambiguate same-name clinicians and document multi-state practice footprints.
- Best For
- Recruiters and ops teams cleaning lists and matching records before outreach.
Compliance & Safety
This method is for legitimate recruiting outreach only. Always respect candidate privacy, opt-out requests, and local data laws. Heartbeat does not provide medical advice or legal counsel.
The “right person” checklist: NPI → license → specialty → location → contact
To reduce wrong-person calls and messy suppression history, resolve identity before outreach; bad matches can also lead to spam complaints and wasted recruiter hours.
- NPI: stable anchor identifier for a clinician record.
- License: disambiguates duplicates and confirms multi-state footprint.
- Specialty: sanity check for role fit and collisions.
- Location: helps separate similar identities and route territories.
- Contact: only after identity is resolved; then optimize for connectability and deliverability.
The trade-off is speed versus risk: faster auto-merges save time, but wrong-person outreach can cost more later. This workflow uses matching rules and review stops to manage collision risk.
Step-by-step method
Step 1: Write down your matching definition
Matching definition (required): Two records represent the same physician when the NPI matches exactly and at least one license matches on (state + license number). Use name, specialty, and location as secondary validation, not primary keys.
Required identifiers (required): The minimum fields to attempt a deterministic match are NPI (10-digit), license state, license number, and at least one of (full name, or last name + first initial). If a license is missing, treat the record as a candidate match only — don’t auto-merge it.
Step 2: Normalize inputs
Most matching failures start here, not in the matching logic itself.
- NPI: store as a 10-character string; preserve leading zeros.
- License number: strip spaces and punctuation; preserve leading zeros if present.
- License state: normalize to a two-letter state code.
- Name: split first/middle/last/suffix; normalize suffixes (Jr, III).
- Specialty: map to your internal taxonomy rather than comparing raw text strings.
Step 3: Run deterministic matches first
- NPI exact match → same-identity candidate.
- Within that NPI match, run license matching on (state + license number) to confirm identity and capture multi-state licenses.
License status handling: if your source includes license status, treat “active” as a stronger confirmation signal than “unknown,” but still validate with at least one secondary check (specialty, location, or name/suffix). If status is missing, store the license without letting it be the sole confirmation.
If/then routing summary (use in your ETL)
- If NPI matches and at least one license matches (state + number), then auto-merge.
- If NPI matches but license conflicts, then route to review — that’s collision risk.
- If license matches but NPI is missing, then hold as a candidate match and backfill NPI through legitimate sources.
- If only name/specialty/location match, then don’t merge; collect required identifiers first.
- If contact channels match but NPI differs, then treat the channel as shared and keep identities separate.
Edge case: individual vs. organizational NPI
- Don’t merge an organization record into an individual physician record just because a clinic address or phone overlaps.
- Keep separate identity types in your data model (individual clinician vs. organization) and only compare like-to-like during matching.
- If your source doesn’t label type clearly, route to review rather than auto-merge when the record looks like a facility — generic name, shared switchboard, multiple specialties.
Step 4: Route collisions to a review queue
A collision occurs when records for different people appear mergeable until their identifiers are checked.
Mini-case: two Dr. Smiths. Your CRM has “John Smith, MD” from a conference list. Your ATS has “John A. Smith” from a referral. Same specialty, same metro. A rushed merge creates one record, and your team calls the wrong person — because the phone number belonged to the other Smith.
How license matching prevents that:
- Conference and referral entries stay candidate matches until anchored to an NPI.
- Once NPI is present, at least one matching license (state + number) is required before merging.
- If NPI matches but license conflicts, you flag a collision and route to review instead of auto-merging.
Step 5: Implement a golden record merge policy
A merge policy helps prevent “last import wins” from corrupting identity. The following is an example policy to adapt to your data and review process.
| Field | Golden Record Rule | Audit note (what to log) |
|---|---|---|
| NPI | Never overwrite once set; only populate if blank. | merge_reason, matched_identifiers |
| Licenses | Store as a list; append new (state, number, status_if_available, last_verified_date, source). | source, last_verified_date |
| Name | Prefer the most complete name (includes middle/suffix); keep alternates as aliases. | source_priority, reviewer_id_if_manual |
| Specialty | Prefer most recent verified specialty; keep prior values as history. | source, timestamp |
| Locations | Keep multiple locations with source + timestamp; set “primary” by recency. | source, timestamp |
| Keep multiple; store status (delivered/bounced/opt-out) and last seen date. | suppression_flags, last_seen | |
| Phone/mobile | Keep multiple; store call outcomes and last attempted date; mark shared clinic lines as shared. | call_outcome, last_attempted |
Step 6: Attach contact channels only after identity is resolved
Once identity is anchored on NPI plus license, attach contact channels and start optimizing outreach. This sequencing reduces wrong-person attempts and keeps suppression clean.
At Heartbeat.ai, this workflow fit matters — for example, ranking mobile numbers by answer probability so the first dial is more likely to reach the right person.
If you want to validate match quality before pushing anything into your ATS or CRM, you can start a free search and preview data to spot-check collisions early.
Diagnostic table
Use this table to triage records into auto-merge, review, or no-merge decisions.
| What you have | Risk | Decision | Next action |
|---|---|---|---|
| NPI + license match (state + number) | Low | Auto-merge | Apply merge policy; attach contact channels; enforce opt-out suppression. |
| NPI matches but license conflicts | High (collision) | Review queue | Compare suffix/middle, specialty mapping, and location footprint; do not merge until resolved. |
| License matches but NPI missing | Medium | Candidate match | Backfill NPI from legitimate sources; then re-run deterministic match. |
| Name + specialty + city only | Very high | No merge | Collect required identifiers (NPI and license) before any outreach. |
| Two records share phone/email but different NPI | Very high (shared channel) | Split identities | Keep contact as shared; confirm identity in first touch; don’t attribute outcomes across identities. |
Weighted checklist
Use this score as a consistency aid, not as a substitute for required identifier checks or review of hard conflicts.
| Signal | Weight | Pass criteria |
|---|---|---|
| NPI exact match | +60 | 10-digit NPI matches exactly (string match). |
| License matching (state + license number) | +30 | At least one license aligns across sources; if status exists, prefer active, but still require at least one secondary check (specialty, location, or name/suffix). |
| Specialty alignment | +10 | Mapped specialty matches target role or plausible adjacent specialty. |
| Location alignment | +10 | Same metro/health system footprint; multi-site is acceptable if documented. |
| Name/suffix alignment | +10 | Suffix and middle initial consistent (helps with “two Dr. Smiths”). |
| Hard conflict (NPI or license mismatch) | -100 | Any hard conflict forces review; do not auto-merge. |
Operational rule: auto-merge at 90+ with no hard conflicts. Otherwise route to review with a short note listing missing identifiers.
Outreach templates
These templates assume identity is already resolved via NPI + license matching. Always respect consent expectations and honor opt-out requests immediately.
Template 1: First email (identity-confirming, low friction)
Subject: Quick confirm — is this Dr. {LastName}?
Hi Dr. {LastName},
I recruit physicians in {Market} and I’m reaching out about a {Role}. Before I share details, can you confirm I’m contacting the right Dr. {LastName} (licensed in {State})?
If you’re not the right person, reply “wrong contact” and I’ll suppress this address.
— {YourName}
Template 2: First call opener (protects against collisions)
“Hi Dr. {LastName}, this is {YourName}. I recruit in {Market}. Before I take 20 seconds — are you the {Specialty} licensed in {State}?”
If no: “Thanks — what’s the best way to reach the right Dr. {LastName}? If you prefer, I can stop contacting this number.”
Template 3: Opt-out confirmation (fast suppression)
“Understood. I’ll mark you as opt-out and won’t contact you again. If you ever want to re-open, reply and I’ll update it.”
Common pitfalls
- Merging on name + city: creates collisions and corrupts outreach history.
- Using contact channels as identity: shared clinic lines and group emails are common; treat them as channels, not proof.
- Overwriting identifiers: changing NPI or collapsing licenses removes auditability.
- Ignoring multi-state reality: licenses are often the cleanest way to confirm footprint across states.
- Skipping suppression: wrong-person replies and opt-outs must suppress across systems.
Failure modes: symptom → cause → fix
| Symptom | Likely cause | Operational fix | Prevent recurrence |
|---|---|---|---|
| Candidate says “wrong person” | Auto-merge on name/specialty without license confirmation | Split record; add collision flag; suppress wrong contact channel | Require NPI + license match for auto-merge |
| High “front desk” answers, low physician connects | Shared clinic line attached as personal phone | Mark number as shared; adjust call script to confirm identity | Store channel type and call outcomes per identity |
| Duplicate physicians reappear after imports | No golden record policy; “last import wins” | Implement merge rules + audit log fields | Enforce deterministic matching gates in ETL |
| NPI matches but details look off | Formatting/alias issues (suffix, middle initial, location drift) | Normalize names; keep aliases; use specialty/location as secondary checks | Standardize normalization across all sources |
| Email deliverability drops after a list upload | Old emails reintroduced; suppression not enforced | Reapply suppression flags; remove bounced/opt-out addresses | Central suppression table keyed to identity |
How to improve results
1) Instrument your matching pipeline
Track outcomes per 100 incoming records: auto-merged, review-queued, rejected, and later-corrected (wrong merges found after outreach). If later-corrected is non-trivial, tighten your auto-merge threshold or require license confirmation.
2) Track outreach quality with consistent metric definitions
Once identity is resolved and outreach begins, use canonical definitions so numbers are comparable across campaigns:
- Connect Rate = connected calls / total dials (per 100 dials).
- Answer Rate = human answers / connected calls (per 100 connected calls).
- Deliverability Rate = delivered emails / sent emails (per 100 sent emails).
- Bounce Rate = bounced emails / sent emails (per 100 sent emails).
- Reply Rate = replies / delivered emails (per 100 delivered emails).
3) Add an audit log so merges are explainable
When a merge is questioned — internally or by a candidate — you need to show what happened. Add these fields to your merge process:
- merge_reason (e.g., “NPI+license deterministic match”)
- matched_identifiers (which NPI/license pair triggered the merge)
- source_priority (which source won each field)
- reviewer_id and review_timestamp (if manual)
- suppression_flags (opt-out, bounced, wrong-person)
4) Refresh and re-verify instead of relying on static lists
Contact details can become outdated. Use NPI and license information as identity fields, verify them against appropriate sources, and keep contact channels current while enforcing opt-outs and suppression.
Legal and ethical use
Use provider data for legitimate recruiting outreach only. Respect privacy expectations, comply with applicable data laws, and maintain a clear opt-out process across email and phone. If a candidate asks not to be contacted, honor it quickly and consistently across systems.
Heartbeat.ai supports responsible outreach workflows but does not provide legal counsel or medical advice.
Evidence and trust notes
We prioritize transparent sourcing and operationally testable methods. For how we evaluate data quality, verification, and suppression practices, see our trust methodology.
Background on NPI and its purpose (official sources):
Use official CMS/NPPES references for NPI context, and document the sources used to verify identifiers in your audit log. Treat non-official copies cautiously when making merge decisions. This article does not describe or recommend scraping, and it does not claim guaranteed identity matching.
FAQs
Is NPI enough to match a physician record?
NPI is a strong anchor, but for recruiting ops it’s safer to confirm with license matching (state + license number), then use specialty/location/name as secondary validation.
What should I do when two records share the same clinic phone number?
Treat the phone as a shared channel, not identity proof. Keep identities separate (anchored by NPI + license), and confirm identity in the first 10 seconds of the call.
How do I handle physicians with multiple state licenses?
Store licenses as a list on the golden record. Use license matching to confirm the same identity across sources, and use the license set to route territories and outreach rules.
What’s the minimum data I should require before merging records?
At minimum: NPI plus at least one matching license (state + license number). If license is missing, keep the record as a candidate match and route it to review.
What if I don’t have license data yet?
Don’t auto-merge. Keep the record as a candidate match, backfill the missing license identifier through legitimate sources, and route to review if the record is high-risk (common name, shared clinic contact, or conflicting locations).
How does this connect to deduping a provider list?
Deduping is the symptom fix; identity resolution is the system. Pair this workflow with a dedupe process that preserves identifiers and suppression history.
Next steps
- Validate match quality before importing: start free search & preview data.
- Build this into your internal tooling: review the Heartbeat API for identity resolution workflows.
- Operationalize: implement the golden record merge policy, add the audit log fields, and track later-corrected merges so your team stops repeating the same cleanup work.
About the Author
Ben Argeband is the Founder and CEO of Swordfish.ai and Heartbeat.ai. With deep expertise in data and SaaS, he has built two successful platforms trusted by over 50,000 sales and recruitment professionals. Ben’s mission is to help teams find direct contact information for hard-to-reach professionals and decision-makers, providing the shortest route to their next win. Connect with Ben on LinkedIn.