Last updated: August 31, 2026
By Ben Argeband, Founder & CEO of Heartbeat.ai
What’s on this page:
Who this is for
This is for recruiters missing a large share of clinicians by relying on LinkedIn alone. If your team keeps finding profiles but not getting real conversations, the gap is usually in how identity and channels are built, not in effort.
- In-house TA teams with hard-to-fill physician reqs and low reachability
- Agency recruiters who need faster connects without burning margin on dead outreach
- Teams whose ATS/CRM is accumulating duplicates because identity isn’t anchored to anything stable
Quick answer
- Core answer
- Anchor each clinician to NPI/license as a deterministic identity, attach verified channels (phone/email), then run compliant outreach and track reachability metrics to reach clinicians who aren’t visible on LinkedIn.
- Best for
- Recruiters missing a large share of clinicians by relying on LinkedIn alone.
Compliance & safety
This method is for legitimate recruiting outreach only. Respect candidate privacy, opt-out requests, and local data laws. Heartbeat does not provide medical advice or legal counsel.
Visible profiles vs. reachable clinicians
Most teams confuse visibility with reachability.
- Visible means you can find a profile.
- Reachable means you can start a conversation within your SLA — a call connects, an email delivers, someone replies.
Think of it as an iceberg. The part you can see on a social network is the tip. The larger mass underneath is clinicians who are hard to search, inactive on the platform, or simply not messageable there — but still reachable through direct channels tied to a verified identity.
That changes the starting point. Instead of beginning with a social profile and hoping it’s current, you start with deterministic identity — NPI and license matching — and then attach channels you can actually use.
Step-by-step method
Step 1: Treat LinkedIn as a channel, not your index
LinkedIn is useful, but it isn’t a universal clinician directory. What you can see depends on that individual’s visibility settings, so a profile you can’t find isn’t proof the person doesn’t exist or isn’t reachable elsewhere.
If your workflow is “find profile, then message,” you will systematically undercount and underreach physicians who simply aren’t visible to your search.
Step 2: Build your clinician index with deterministic identity
For physicians, the National Provider Identifier is the cleanest universal index available. The NPI Registry is a free, CMS-maintained database, and once an NPI is issued it doesn’t expire or get reassigned, which makes it a stable key over time. When you need extra certainty — common names, multi-state licensure, recent moves — add license matching.
- Define your target: specialty, geography, setting, and any other constraints.
- Build a table keyed by NPI, one row per clinician.
- Attach license data where it improves certainty and routing.
This is how you avoid duplicates, name collisions, and wrong-person outreach before it happens, rather than cleaning it up afterward.
Step 3: Attach reachable channels and label them correctly
Once identity is stable, you need channels. The goal is at least one reliable path to a human conversation:
- Direct mobile number — fastest when it’s current
- Personal email — asynchronous, lower interruption
- Office line — often gatekeepered, but still useful for verification and routing
Direct channels can improve speed to connect, but they also raise the stakes: you need suppression, opt-out handling, and tight, relevant outreach, or you’ll do more harm than good.
Step 4: Put compliance controls in place before you scale
Scaling outreach without controls is how teams burn domains, annoy candidates, and create internal chaos across reqs.
- Consent: document it when you have it; don’t assume it.
- Opt-out: make it easy and honor it immediately across all reqs and teammates.
- Suppression: maintain a do-not-contact list and apply it before every call block and email send.
- Data minimization: store what you need to recruit, not everything you can collect.
Step 5: Run a two-lane sequence that respects clinic reality
Physicians have clinic blocks, procedures, and call schedules. Build sequences that respect that instead of assuming they’re sitting by a phone.
- Lane A (call-first): when you have a direct mobile number and the req is urgent.
- Lane B (email-first): when you have a strong personal email and the pitch needs context — schedule, call burden, location, comp structure.
Keep it simple: a short sequence with clear opt-out language and a single, specific ask, like a 10-minute call or a reply with the best number and time.
Step 6: Instrument reachability with consistent metric definitions
If metrics shift definition week to week, you can’t diagnose what’s actually broken. Use these consistently:
- 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)
Step 7: Store the right fields in your ATS/CRM
For off-platform sourcing to compound over time, your ATS/CRM needs to store identity, channels, and outcomes consistently. Here’s a minimal schema that works for most recruiting teams.
| Field | Example value | Why it matters |
|---|---|---|
| NPI | [10-digit NPI] | Deterministic identity; prevents duplicates and wrong-person outreach |
| License state(s) | [State list] | Disambiguation and routing; supports license matching |
| Specialty | [Specialty] | Segmentation for messaging and channel strategy |
| Channel type | direct mobile number / personal email / office line | Lets you measure performance by channel and avoid gatekeeper traps |
| Last verified date | [Date] | Freshness control; helps decide when to refresh data |
| Last touch date | [Date] | Prevents double-taps and supports cadence rules |
| Outcome code | connect / reply / voicemail / wrong person / not interested | Turns outreach into learnings; improves targeting and suppression |
| Opt-out status | Y/N | Compliance and candidate trust; must suppress before every send |
Step 8: Use Heartbeat.ai to operationalize identity and reachability
Heartbeat.ai is built around deterministic identity — NPI and license matching — so your team can source beyond LinkedIn without turning your ATS/CRM into a duplicate mess. When speed matters, Heartbeat.ai can surface ranked mobile numbers by answer probability so calling blocks prioritize the most reachable records first.
Start free search & preview data and validate reachability before you change your whole sourcing motion.
Diagnostic table
Use this to figure out why “we can’t find them on LinkedIn” is turning into “we can’t reach them at all.”
| Symptom | Likely cause | What to check (fast) | Fix |
|---|---|---|---|
| Lots of profiles found, few conversations | Visibility ≠ reachability | Connect rate and reply rate | Anchor to NPI, attach direct channels, run two-lane sequence |
| Many dials, few connects | Bad numbers or wrong channel mix | Connect rate per 100 dials by channel/source | Refresh phone data; prioritize direct mobile number; suppress bad records |
| Emails bouncing | Stale or guessed emails | Bounce rate per 100 sent | Use personal email; remove high-bounce sources; suppress bounces |
| Delivered emails, no replies | Message-market mismatch or wrong timing | Reply rate per 100 delivered by template version | Shorten the ask; put schedule/call/location up front; test send windows |
| Gatekeepers block everything | Only office lines available | Answer rate per 100 connected calls | Shift to email-first; ask for best routing; log outcomes and stop repeat friction |
Weighted checklist
Score each item 0–2 (0 = missing, 1 = partial, 2 = solid). Total possible: 20. Under 14, and your off-platform motion will feel inconsistent from week to week.
| Category | Item | Score (0–2) | What “2” looks like |
|---|---|---|---|
| Identity | NPI captured and unique per clinician | One row per NPI; duplicates resolved before outreach | |
| Identity | License matching used for disambiguation | Common names and multi-state clinicians verified before first touch | |
| Channels | At least one direct channel exists (mobile or personal email) | Channel is present and recent enough to be actionable | |
| Compliance | Suppression list applied before every send/call block | Opt-out is honored across all reqs and teammates | |
| Messaging | First touch includes schedule/call/location + one clear ask | Candidate can decide relevance in 10 seconds | |
| Measurement | Metrics tracked with consistent definitions | Weekly dashboard by channel: connect, deliverability, reply, opt-out | |
| Workflow | NPI-keyed records sync cleanly into ATS/CRM | No duplicate outreach; outcomes logged to the same identity record | |
| Speed | Same-day “source to first touch” SLA exists | Daily blocks scheduled; handoffs are defined | |
| Quality | Outcome codes are consistent | Data improves over time instead of decaying | |
| Governance | Clear ownership rules prevent double-taps | One owner per clinician per req; suppression prevents collisions |
Outreach templates
These assume you’re reaching out via direct channels tied to NPI/license matching. Keep it direct, respectful, and easy to decline.
Template 1: Personal email (first touch)
Subject: Quick question re: [Specialty] role in [City]
Hi Dr. [Last Name] — I’m recruiting for a [Specialty] opening with [Health System/Group] in [City]. Schedule is [X], call is [Y].
Are you open to a 10-minute call this week, or should I close the loop?
— [Your Name], [Title] | Heartbeat.ai
If you’d prefer no outreach from me, reply “opt out” and I’ll update my list.
Template 2: Direct mobile number (call + voicemail)
Call opener: “Dr. [Last Name], this is [Name]. I’m recruiting for a [Specialty] role in [City]. Do you have 30 seconds for why I’m calling?”
If voicemail: “Dr. [Last Name], [Name] here. I’m recruiting for a [Specialty] role in [City] with [Group]. If it’s worth a quick look, text me at this number with a good time. If not, reply ‘no’ and I’ll stop.”
Template 3: Office line (gatekeeper-safe routing)
“Hi — I’m trying to reach Dr. [Last Name] regarding a physician opportunity. What’s the best way to send a short note for review?”
“Is there an email address or preferred routing process for recruiting messages?”
Goal: get the preferred routing channel without arguing. Log the outcome and move to email-first if needed.
Template 4: Follow-up (email)
Hi Dr. [Last Name] — circling back. If you’re not looking, totally fine. If you are, what’s the best number/time to reach you?
— [Your Name] (reply “opt out” if you’d like no further messages)
Common pitfalls
Pitfall 1: Treating “not on LinkedIn” as a binary
Clinicians can be technically “on” a platform but not searchable, not active, or not messageable through it. Assuming coverage is complete because you can find some profiles is the mistake, not the platform itself.
Fix: measure reachability (calls, emails) on an NPI-keyed cohort, not profile counts.
Pitfall 2: Building lists without deterministic identity
Skip NPI and license matching and you’ll create duplicates, mis-merge records, and eventually contact the wrong person. That last one is a trust killer with candidates.
Fix: one row per NPI; attach channels and outcomes to that record over time.
Pitfall 3: Scaling outreach before suppression and opt-out are real
Teams often pilot off-platform outreach and forget to operationalize opt-out and suppression. Then volume increases and clinicians get double-tapped across reqs by different recruiters on the same team.
Fix: suppression list plus opt-out logging is part of the system from day one, not a nice-to-have added later.
Pitfall 4: Measuring the wrong kind of coverage
Teams often report having “coverage” because they can find profiles, when their actually reachable share is much lower. A weekly coverage map that separates visible from reachable fixes this.
| Iceberg layer | Definition | How to compute (on an NPI-keyed cohort) | What it tells you |
|---|---|---|---|
| Visible | Findable profile exists | # with findable profile / cohort size | Platform visibility, not reachability |
| Reachable | At least one direct channel exists | # with direct mobile number or personal email / cohort size | Whether you can run off-platform outreach |
| Verified | Channel performs (connects or delivers) | Calls: connect rate; email: deliverability rate | Data quality and freshness |
| Engaged | Human response happens | Answer rate and reply rate | Message-market fit and timing |
How to improve results
1) Run an off-platform share worksheet on a real sample
You don’t need an industry-wide percentage to manage your funnel. You need your own number, for your specialty mix and geography.
- Pull a random sample of 100 target clinicians from your NPI-keyed list, matched to your reqs’ specialty and geography.
- Track: NPI, specialty, state, findable profile (Y/N), direct mobile number present (Y/N), personal email present (Y/N), first touch date, reached within 7 days (Y/N), outcome.
- Compute findable profile share, reachable share, and 7-day reach rate as percentages of the 100.
Repeat monthly for the same segments so you can see whether data refresh and messaging changes are actually improving reachability.
2) Plan call blocks with simple time math
Don’t argue about effort levels — plan around them.
- Total dials = minutes in call block × dials per minute
- Expected connected calls = total dials × connect rate
- Expected human answers = expected connected calls × answer rate
Run this separately for direct mobile numbers versus office lines and you’ll see quickly where your time is actually converting.
3) Use a sequence map with stop conditions
A simple, repeatable sequence with defined stop conditions protects deliverability and keeps outreach from turning into harassment.
| Touch | Channel | Goal | Stop if |
|---|---|---|---|
| 1 | Email (personal email) | Confirm relevance fast (schedule/call/location) + ask for 10-minute call | Reply received or opt-out |
| 2 | Call (direct mobile number) | Get a live connect or a text-back time | Human answer with “no,” wrong person, or opt-out |
| 3 | Email follow-up | One-line bump + best number/time ask | Reply received or opt-out |
| 4 | Call (direct mobile number) | Second attempt at a live connect | Wrong person confirmed or opt-out |
| 5 | Office line (routing only) | Ask for preferred routing channel for recruiting note | Routing provided or asked to stop |
| 6 | Email final | Close the loop: “should I close this out?” | Reply received or opt-out |
4) Set refresh triggers instead of a fixed calendar
Don’t refresh data on an arbitrary schedule. Refresh when performance signals decay:
- If connect rate drops for a channel or source, prioritize refreshing phone coverage for that segment.
- If bounce rate rises, stop sending to that source and refresh email coverage before it damages deliverability.
- If you see repeated “wrong person” outcomes on similar name patterns, tighten NPI and license matching rules before scaling further.
5) Fix data quality before rewriting messaging
If connect rate and deliverability rate are both low, the message isn’t the first problem — the channels are.
- Low connect rate: refresh phone data, prioritize direct mobile number coverage, and suppress bad records.
- Low deliverability rate: stop guessing emails, use personal email addresses, and remove high-bounce sources.
6) Adjust the lane by practice setting
Private practice physicians often have heavier gatekeeping and less predictable routing. Employed physicians may have more standardized contact paths but less flexibility.
- Private practice: email-first plus short call attempts; ask for best number/time; log routing outcomes.
- Employed: call-first can work with a direct mobile number; otherwise email-first with clear schedule/call details.
7) Minimum instrumentation before scaling
Track these weekly, by channel and source:
- Connect rate per 100 dials
- Answer rate per 100 connected calls
- Deliverability rate per 100 sent emails
- Bounce rate per 100 sent emails
- Reply rate per 100 delivered emails
- Opt-out rate per 100 delivered emails, with suppression applied before every send
Legal and ethical use
Off-platform sourcing is normal in physician recruiting, but it needs discipline behind it.
- Legitimate purpose only: use contact data for recruiting outreach, not unrelated marketing.
- Respect opt-out: if a clinician asks you to stop, stop, log it, and suppress future outreach.
- Centralize suppression: keep a team-wide suppression list so a clinician who opts out isn’t re-contacted by a different recruiter.
- Minimize disruption: keep messages short, relevant, and easy to decline.
- Follow local rules: comply with applicable privacy, calling, and email laws for your jurisdiction and the clinician’s location.
Heartbeat.ai supports legitimate recruiting workflows, but you’re responsible for how you use contact data and how you document consent and opt-out.
Evidence and trust notes
This workflow is grounded on a few practical facts. NPPES (CMS) NPI Registry is a free, query-only database that CMS updates regularly, which is why NPI works as a stable identity index — but the registry itself is an identity source, not a contactability source, so verification and suppression still have to happen separately. Search visibility on platforms like LinkedIn depends on individual settings and context, which is why a missing profile doesn’t mean a missing clinician.
How Heartbeat.ai approaches verification, suppression, and responsible use: trust methodology for provider contact data.
Related workflows in this pillar:
- NPI and license matching for clean identity resolution
- Physician contact database workflow (what to store, how to refresh)
FAQs
How do I start sourcing physicians not on LinkedIn without creating duplicates in my ATS?
Key your records to NPI first, then attach channels and outcomes to that identity record. Add license matching when you need disambiguation. This prevents wrong-person outreach and duplicate touches.
What’s the fastest way to estimate my off-platform share?
Sample 100 clinicians from your NPI-keyed target list and track findable profile (Y/N), direct channel present (Y/N), and whether you reached them within 7 days. Compute your shares from that sample rather than relying on an industry-wide figure.
Which metrics tell me whether my contact data is actually usable?
For calls, track connect rate and answer rate. For email, track deliverability rate, bounce rate, and reply rate. Define each one consistently so week-over-week comparisons actually mean something.
Is it okay to contact a physician on a direct mobile number or personal email?
It can be appropriate for legitimate recruiting outreach, but you must respect privacy, follow local laws, and honor opt-out immediately. Keep outreach relevant and minimal.
Where does Heartbeat.ai fit in this workflow?
Heartbeat.ai helps you anchor identity to NPI/license matching, attach channels, and run measured outreach so you can reach clinicians outside LinkedIn without losing control of identity in your ATS/CRM. You can start free search & preview data to validate coverage.
Next steps
- Implement NPI-first identity: NPI and license matching.
- Define your data model and refresh cadence: Physician contact database workflow.
- Run the 100-clinician worksheet and build your weekly iceberg coverage map.
- Then start free search & preview data and validate reachability before scaling outreach.
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 platforms used by sales and recruitment professionals. Ben’s focus is helping teams find direct contact information for hard-to-reach professionals and decision-makers. Connect with Ben on LinkedIn.