{"id":54313,"date":"2026-02-01T12:58:41","date_gmt":"2026-02-01T18:58:41","guid":{"rendered":"https:\/\/heartbeat.ai\/healthcare\/upload-a-physician-list-for-enrichment\/"},"modified":"2026-02-27T13:34:36","modified_gmt":"2026-02-27T19:34:36","slug":"upload-a-physician-list-for-enrichment","status":"publish","type":"post","link":"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/","title":{"rendered":"Upload a Physician List for Enrichment (Clean Matching + Fewer Support Tickets)"},"content":{"rendered":"<p><img decoding=\"async\" loading=\"false\" class=\"aligncenter\" src=\"http:\/\/hc.heartbeat.ai\/wp-content\/webp-express\/webp-images\/uploads\/2026\/02\/upload-a-physician-list-for-enrichment-8ebc8d01.png.webp\" alt=\"54312\" \/><\/p>\n<h1>Upload a physician list for enrichment<\/h1>\n<p><strong>By Ben Argeband, Founder &amp; CEO of Heartbeat.ai<\/strong> \u2014 Clear steps and common errors; operational tone.<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_65 counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\r\n<div class=\"ez-toc-title-container\">\r\n<p class=\"ez-toc-title\" >What&rsquo;s on this page:<\/p>\r\n<span class=\"ez-toc-title-toggle\"><\/span><\/div>\r\n<nav><ul class='ez-toc-list ez-toc-list-level-1' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/#Who_this_is_for\" title=\"Who this is for\">Who this is for<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/#Quick_Answer\" title=\"Quick Answer\">Quick Answer<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/#Framework_The_Upload_Prep_Checklist_Clean_%E2%86%92_Dedupe_%E2%86%92_Identify_%E2%86%92_Upload\" title=\"Framework: The Upload Prep Checklist: Clean \u2192 Dedupe \u2192 Identify \u2192 Upload\">Framework: The Upload Prep Checklist: Clean \u2192 Dedupe \u2192 Identify \u2192 Upload<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/#Step-by-step_method\" title=\"Step-by-step method\">Step-by-step method<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/#Step_1_Start_with_a_%E2%80%9Cone_row_one_physician%E2%80%9D_CSV\" title=\"Step 1) Start with a \u201cone row = one physician\u201d CSV\">Step 1) Start with a \u201cone row = one physician\u201d CSV<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/#Step_2_Use_stable_identifiers_why_NPI_beats_name\" title=\"Step 2) Use stable identifiers (why NPI beats name)\">Step 2) Use stable identifiers (why NPI beats name)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/#Step_3_Dedupe_before_upload_or_youll_create_downstream_mess\" title=\"Step 3) Dedupe before upload (or you\u2019ll create downstream mess)\">Step 3) Dedupe before upload (or you\u2019ll create downstream mess)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/#Step_4_Required_columns_minimum_vs_recommended\" title=\"Step 4) Required columns (minimum vs recommended)\">Step 4) Required columns (minimum vs recommended)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/#Step_5_Standard_header_pattern_and_mapping_tips\" title=\"Step 5) Standard header pattern and mapping tips\">Step 5) Standard header pattern and mapping tips<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/#Step_6_Handling_multiple_practice_locations\" title=\"Step 6) Handling multiple practice locations\">Step 6) Handling multiple practice locations<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/#Step_7_Upload_and_map_fields\" title=\"Step 7) Upload and map fields\">Step 7) Upload and map fields<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/#Step_7A_Pre-flight_validation_2_minutes\" title=\"Step 7A) Pre-flight validation (2 minutes)\">Step 7A) Pre-flight validation (2 minutes)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/#Step_8_Run_enrichment_and_review_outputs_what_to_expect\" title=\"Step 8) Run enrichment and review outputs (what to expect)\">Step 8) Run enrichment and review outputs (what to expect)<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/#Diagnostic_Table\" title=\"Diagnostic Table:\">Diagnostic Table:<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/#Weighted_Checklist\" title=\"Weighted Checklist:\">Weighted Checklist:<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/#Outreach_Templates\" title=\"Outreach Templates:\">Outreach Templates:<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/#Template_1_First_email_work_email\" title=\"Template 1: First email (work email)\">Template 1: First email (work email)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-18\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/#Template_2_Text_mobile\" title=\"Template 2: Text (mobile)\">Template 2: Text (mobile)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-19\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/#Template_3_Voicemail\" title=\"Template 3: Voicemail\">Template 3: Voicemail<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-20\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/#Common_pitfalls\" title=\"Common pitfalls\">Common pitfalls<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-21\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/#Pitfall_1_Treating_%E2%80%9Cname%E2%80%9D_as_an_identifier\" title=\"Pitfall 1: Treating \u201cname\u201d as an identifier\">Pitfall 1: Treating \u201cname\u201d as an identifier<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-22\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/#Pitfall_2_Uploading_duplicates_and_then_blaming_enrichment\" title=\"Pitfall 2: Uploading duplicates and then blaming enrichment\">Pitfall 2: Uploading duplicates and then blaming enrichment<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-23\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/#Pitfall_3_No_refresh_discipline\" title=\"Pitfall 3: No refresh discipline\">Pitfall 3: No refresh discipline<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-24\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/#Pitfall_4_Opt-outs_buried_in_notes\" title=\"Pitfall 4: Opt-outs buried in notes\">Pitfall 4: Opt-outs buried in notes<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-25\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/#How_to_improve_results\" title=\"How to improve results\">How to improve results<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-26\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/#1_Track_reachability_metrics_by_list_source_and_refresh_date\" title=\"1) Track reachability metrics by list source and refresh_date\">1) Track reachability metrics by list source and refresh_date<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-27\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/#2_Segment_by_match_strength_before_outreach\" title=\"2) Segment by match strength before outreach\">2) Segment by match strength before outreach<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-28\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/#3_Operationalize_suppression_simple_SOP\" title=\"3) Operationalize suppression (simple SOP)\">3) Operationalize suppression (simple SOP)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-29\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/#4_Refresh_on_a_cadence_tied_to_active_recruiting\" title=\"4) Refresh on a cadence tied to active recruiting\">4) Refresh on a cadence tied to active recruiting<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-30\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/#Legal_and_ethical_use\" title=\"Legal and ethical use\">Legal and ethical use<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-31\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/#Evidence_and_trust_notes\" title=\"Evidence and trust notes\">Evidence and trust notes<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-32\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/#FAQs\" title=\"FAQs\">FAQs<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-33\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/#What_columns_do_I_need_to_upload_a_physician_list_for_enrichment\" title=\"What columns do I need to upload a physician list for enrichment?\">What columns do I need to upload a physician list for enrichment?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-34\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/#Why_does_NPI_beat_name_for_matching\" title=\"Why does NPI beat name for matching?\">Why does NPI beat name for matching?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-35\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/#What_should_I_do_if_my_list_doesnt_have_NPI\" title=\"What should I do if my list doesn\u2019t have NPI?\">What should I do if my list doesn\u2019t have NPI?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-36\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/#What_happens_to_rows_that_dont_match_cleanly\" title=\"What happens to rows that don\u2019t match cleanly?\">What happens to rows that don\u2019t match cleanly?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-37\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/#Why_did_my_phone_numbers_lose_%E2%80%9C1%E2%80%9D_or_turn_into_scientific_notation\" title=\"Why did my phone numbers lose \u201c+1\u201d or turn into scientific notation?\">Why did my phone numbers lose \u201c+1\u201d or turn into scientific notation?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-38\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/#Should_I_include_work_email_personal_email_or_both\" title=\"Should I include work email, personal email, or both?\">Should I include work email, personal email, or both?<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-39\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/#Next_steps\" title=\"Next steps\">Next steps<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-40\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/#About_the_Author\" title=\"About the Author\">About the Author<\/a><\/li><\/ul><\/nav><\/div>\r\n<h2><span class=\"ez-toc-section\" id=\"Who_this_is_for\"><\/span>Who this is for<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>This is for recruiters with spreadsheets who want enrichment without formatting issues. If your team is losing time to bad matches, duplicate rows, or upload rework, this playbook is meant to cut that friction and keep outreach moving.<\/p>\n<ul>\n<li><strong>Primary user:<\/strong> Recruiters working from CSV exports (ATS\/CRM, conference lists, referrals).<\/li>\n<li><strong>Outcome:<\/strong> cleaner matching, fewer duplicates, and a file your team can reuse on the next refresh.<\/li>\n<li><strong>What this avoids:<\/strong> wrong-person outreach, broken phone\/email fields, and \u201cwhy did this row match?\u201d confusion.<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"Quick_Answer\"><\/span>Quick Answer<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<dl>\n<dt>Core Answer<\/dt>\n<dd>Prepare a CSV with stable identifiers (prefer NPI), dedupe to one row per physician, map columns cleanly, upload, then review match strength and recency before outreach.<\/dd>\n<dt>Key Insight<\/dt>\n<dd>Unique keys prevent wrong-person matches; clean columns prevent mapping errors; stamping a refresh date keeps teams from working stale contact data.<\/dd>\n<dt>Best For<\/dt>\n<dd>Recruiters with spreadsheets who want enrichment without formatting issues.<\/dd>\n<\/dl>\n<blockquote>\n<p><strong>Compliance &amp; Safety<\/strong><\/p>\n<p>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.<\/p>\n<\/blockquote>\n<h2><span class=\"ez-toc-section\" id=\"Framework_The_Upload_Prep_Checklist_Clean_%E2%86%92_Dedupe_%E2%86%92_Identify_%E2%86%92_Upload\"><\/span>Framework: The Upload Prep Checklist: Clean \u2192 Dedupe \u2192 Identify \u2192 Upload<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ol>\n<li><strong>Clean:<\/strong> make the file structurally predictable (headers, one row per physician, no merged cells).<\/li>\n<li><strong>Dedupe:<\/strong> remove duplicates using stable keys (NPI first).<\/li>\n<li><strong>Identify:<\/strong> ensure each row has at least one strong identifier; add context fields that reduce collisions.<\/li>\n<li><strong>Upload:<\/strong> map fields, validate a sample, run enrichment, then review outputs (including recency) before outreach.<\/li>\n<\/ol>\n<h2><span class=\"ez-toc-section\" id=\"Step-by-step_method\"><\/span>Step-by-step method<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"Step_1_Start_with_a_%E2%80%9Cone_row_one_physician%E2%80%9D_CSV\"><\/span>Step 1) Start with a \u201cone row = one physician\u201d CSV<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Before enrichment, make the file predictable so matching and mapping behave the way you expect.<\/p>\n<ul>\n<li>Export to <strong>CSV<\/strong> (avoid merged cells and hidden formatting).<\/li>\n<li>One header row; no blank header names.<\/li>\n<li>One physician per row (don\u2019t mix organizations and individuals).<\/li>\n<li>Keep multi-location details out of the main file; store extra locations in a separate file if needed.<\/li>\n<\/ul>\n<p><strong>Common mistake:<\/strong> mixing practice entities and physicians in the same upload. Split them. Identity keys and matching logic differ.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Step_2_Use_stable_identifiers_why_NPI_beats_name\"><\/span>Step 2) Use stable identifiers (why NPI beats name)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Names collide. Even \u201cFirst + Last + City\u201d collides constantly in provider data. If you want fewer wrong-person matches, use stable identifiers.<\/p>\n<ul>\n<li><strong>NPI<\/strong> (best): a national identifier designed for provider identity resolution.<\/li>\n<li><strong>License number + state<\/strong> (helpful): supports <strong>license matching<\/strong> when NPI is missing, but formats vary by board\/state.<\/li>\n<li><strong>Email\/phone<\/strong> (context, not identity): useful for outreach, but not a reliable identity key by itself.<\/li>\n<\/ul>\n<p><strong>Match key definition:<\/strong> a <em>match key<\/em> is the field (or combination of fields) used to decide whether your row corresponds to a specific real-world physician record. Strong match keys are stable over time and unique per person (e.g., NPI). Weak match keys change or collide (e.g., name-only).<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Step_3_Dedupe_before_upload_or_youll_create_downstream_mess\"><\/span>Step 3) Dedupe before upload (or you\u2019ll create downstream mess)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Duplicates inflate outreach volume, distort performance metrics, and create \u201cwhy did they get two messages?\u201d problems. Dedupe in this order:<\/p>\n<ol>\n<li><strong>Exact NPI match<\/strong> \u2192 keep the most complete row.<\/li>\n<li><strong>License number + license state<\/strong> \u2192 keep the most complete row.<\/li>\n<li><strong>Name + specialty + city\/state<\/strong> \u2192 only if you must; flag these rows as \u201cneeds review.\u201d<\/li>\n<\/ol>\n<p>If you want a deeper dedupe workflow, use <a href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/how-to-dedupe-a-provider-list-npi\/\">how to dedupe a provider list using NPI<\/a>.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Step_4_Required_columns_minimum_vs_recommended\"><\/span>Step 4) Required columns (minimum vs recommended)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Use the minimum set to support clean matching when NPI is present. Use the recommended set to reduce review time and keep your team aligned on recency and suppression.<\/p>\n<div class=\"table-scroll\" style=\"overflow:auto;-webkit-overflow-scrolling:touch;width:100%\">\n<table class=\"separated-content\">\n<thead>\n<tr>\n<th>Minimum (for clean matching)<\/th>\n<th>Recommended (for workflow + auditing)<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>npi<\/td>\n<td>license_number, license_state<\/td>\n<\/tr>\n<tr>\n<td>first_name, last_name<\/td>\n<td>credential, specialty<\/td>\n<\/tr>\n<tr>\n<td>primary_state<\/td>\n<td>primary_city, organization_name<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>work_email, personal_email, phone<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>source, source_date, notes, refresh_date<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"Step_5_Standard_header_pattern_and_mapping_tips\"><\/span>Step 5) Standard header pattern and mapping tips<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Clean columns prevent bad mapping and reduce support tickets. Use a consistent header pattern so every recruiter\u2019s export maps the same way.<\/p>\n<p><strong>npi,first_name,last_name,credential,specialty,primary_city,primary_state,license_number,license_state,organization_name,work_email,personal_email,phone,source,source_date,notes,refresh_date<\/strong><\/p>\n<ul>\n<li><strong>npi<\/strong>: numeric, no dashes\/spaces.<\/li>\n<li><strong>license_number<\/strong> + <strong>license_state<\/strong>: keep as text (some boards use letters\/leading zeros).<\/li>\n<li><strong>phone<\/strong>: keep as text to preserve \u201c+1\u201d and avoid scientific notation.<\/li>\n<li>Don\u2019t put multiple emails\/phones in one cell. Put the best one in the main column and the rest in notes.<\/li>\n<li>Use consistent state abbreviations (e.g., \u201cTX\u201d not \u201cTexas\u201d).<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Step_6_Handling_multiple_practice_locations\"><\/span>Step 6) Handling multiple practice locations<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li><strong>Keep identity stable:<\/strong> use the same NPI for the physician across all rows\/files.<\/li>\n<li><strong>Pick a primary location:<\/strong> store one primary_city\/primary_state in the main file so matching stays consistent.<\/li>\n<li><strong>Store extras separately:<\/strong> keep additional locations in a separate file or a structured notes field, then attach after identity is confirmed.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Step_7_Upload_and_map_fields\"><\/span>Step 7) Upload and map fields<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>When you <a href=\"https:\/\/heartbeat.ai\/upload-file\">upload file<\/a> into Heartbeat.ai, your job is to ensure the system reads the file the way you intended: correct row count, correct column mapping, and clean identifiers.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Step_7A_Pre-flight_validation_2_minutes\"><\/span>Step 7A) Pre-flight validation (2 minutes)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li><strong>Row count check:<\/strong> confirm the system reads the same number of rows you expect.<\/li>\n<li><strong>Header check:<\/strong> confirm NPI, license_number, and license_state are mapped correctly (not swapped with names).<\/li>\n<li><strong>NPI format check:<\/strong> spot-check a few NPIs for extra spaces or non-numeric characters.<\/li>\n<li><strong>Phone-as-text check:<\/strong> confirm phone values didn\u2019t lose \u201c+1\u201d or get converted to scientific notation.<\/li>\n<li><strong>Delimiter\/encoding check:<\/strong> confirm the delimiter is a comma and the file is UTF-8 encoded.<\/li>\n<li><strong>Five-row spot check:<\/strong> pick five physicians you recognize and verify the matched identity looks right before you proceed.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Step_8_Run_enrichment_and_review_outputs_what_to_expect\"><\/span>Step 8) Run enrichment and review outputs (what to expect)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>After enrichment, expect outputs you can use operationally:<\/p>\n<ul>\n<li><strong>Enriched contact fields<\/strong> (where available) plus indicators you can use to prioritize.<\/li>\n<li><strong>Ranking and prioritization<\/strong> so your team can prioritize records that may be more likely to connect first, including <strong>ranked mobile numbers by answer probability<\/strong>.<\/li>\n<li><strong>Unmatched\/needs-review rows<\/strong> when identifiers are weak or conflicting. Treat these as a separate queue before outreach.<\/li>\n<li><strong>Recency tracking<\/strong> via your <strong>refresh_date<\/strong> field (or your internal process) so you can work the newest data first.<\/li>\n<\/ul>\n<p><strong>Recency definition:<\/strong> <em>recency<\/em> is how recently a contact field (email\/phone) was observed, verified, or refreshed. Operationally, recency is what tells you whether a record is likely still reachable today.<\/p>\n<p>The trade-off is\u2026 if you allow weak identifiers to match automatically, you\u2019ll move faster today but you\u2019ll spend that time back later fixing wrong-person outreach and cleaning your CRM.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Diagnostic_Table\"><\/span>Diagnostic Table:<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<div class=\"table-scroll\" style=\"overflow:auto;-webkit-overflow-scrolling:touch;width:100%\">\n<table class=\"separated-content\">\n<thead>\n<tr>\n<th>Symptom<\/th>\n<th>Likely cause<\/th>\n<th>Fast fix<\/th>\n<th>Prevention<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>High \u201cneeds review\u201d \/ unmatched share<\/td>\n<td>Missing NPI; license fields combined or inconsistent<\/td>\n<td>Add NPI where possible; split license into license_number + license_state<\/td>\n<td>Make NPI a required intake field for future lists<\/td>\n<\/tr>\n<tr>\n<td>Wrong-person matches<\/td>\n<td>Matching on name-only or name+city<\/td>\n<td>Re-run with NPI as primary match key; quarantine weak-identifier rows<\/td>\n<td>Collect NPI at intake; avoid free-text \u201cprovider id\u201d columns<\/td>\n<\/tr>\n<tr>\n<td>Phone numbers look corrupted<\/td>\n<td>Spreadsheet auto-formatting (scientific notation, dropped +1)<\/td>\n<td>Re-export phone as text; remove formatting characters<\/td>\n<td>Store phone columns as text in your source system<\/td>\n<\/tr>\n<tr>\n<td>Duplicate physicians after enrichment<\/td>\n<td>Duplicates in source list (same NPI multiple times)<\/td>\n<td>Dedupe by NPI before upload; keep most complete row<\/td>\n<td>Run a dedupe step in every refresh cycle<\/td>\n<\/tr>\n<tr>\n<td>Outreach performance drops after a few weeks<\/td>\n<td>Stale contact fields; no refresh discipline<\/td>\n<td>Stamp refresh_date and re-enrich on a schedule<\/td>\n<td>Work newest refresh_date first; suppress hard bounces and opt-outs<\/td>\n<\/tr>\n<tr>\n<td>Upload mapping confusion<\/td>\n<td>Headers inconsistent; multiple values in one cell<\/td>\n<td>Normalize headers; split multi-value cells<\/td>\n<td>Use one standard header pattern across the team<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<h2><span class=\"ez-toc-section\" id=\"Weighted_Checklist\"><\/span>Weighted Checklist:<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Use this to decide if your file is ready to upload today. Score each item; if you\u2019re under 80, fix the file first.<\/p>\n<ul>\n<li><strong>(30 pts)<\/strong> NPI present for most rows (or a clear plan to add it). If not, you\u2019re relying on weak identifiers.<\/li>\n<li><strong>(15 pts)<\/strong> One row per physician; no organizations mixed in.<\/li>\n<li><strong>(15 pts)<\/strong> Dedupe completed (NPI exact match first). Document your dedupe rule in notes.<\/li>\n<li><strong>(10 pts)<\/strong> License fields split into license_number + license_state (supports license matching when NPI is missing).<\/li>\n<li><strong>(10 pts)<\/strong> Phone and email columns contain only one value per cell; extras moved to notes.<\/li>\n<li><strong>(10 pts)<\/strong> source and source_date populated (even if approximate).<\/li>\n<li><strong>(10 pts)<\/strong> refresh_date populated (or you have a post-enrichment step to stamp it).<\/li>\n<\/ul>\n<p><strong>Uniqueness hook (CSV_TEMPLATE worksheet):<\/strong> Create a dedicated \u201cmapping\u201d tab in your spreadsheet with two columns: <strong>your_header<\/strong> \u2192 <strong>target_header<\/strong> (using the standard header pattern above). Require recruiters to update the mapping tab before exporting. This prevents header drift across teams and reduces remapping errors on every upload.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Outreach_Templates\"><\/span>Outreach Templates:<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>These are designed for legitimate recruiting outreach with clear opt-out handling. Customize specialty\/location and keep it short.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Template_1_First_email_work_email\"><\/span>Template 1: First email (work email)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><strong>Subject:<\/strong> Quick question about your next role<\/p>\n<p>Hi Dr. {{LastName}},<\/p>\n<p>I\u2019m reaching out about a physician opportunity in {{State}}. Are you open to a brief call this week, or should I stop contacting you?<\/p>\n<p>If you prefer not to receive messages, reply \u201copt out\u201d and I\u2019ll suppress your info.<\/p>\n<p>\u2014 {{YourName}}, {{Title}} | Heartbeat.ai<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Template_2_Text_mobile\"><\/span>Template 2: Text (mobile)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Hi Dr. {{LastName}} \u2014 {{YourName}} here (physician recruiting). Are you open to hearing about a {{Specialty}} role in {{City\/State}}? Reply STOP to opt out.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Template_3_Voicemail\"><\/span>Template 3: Voicemail<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Hi Dr. {{LastName}}, this is {{YourName}}. I\u2019m calling about a {{Specialty}} opportunity in {{State}}. If you\u2019re open to a quick conversation, call me at {{CallbackNumber}}. If not, tell me and I\u2019ll take you off my list.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Common_pitfalls\"><\/span>Common pitfalls<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"Pitfall_1_Treating_%E2%80%9Cname%E2%80%9D_as_an_identifier\"><\/span>Pitfall 1: Treating \u201cname\u201d as an identifier<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>If your list is mostly First\/Last with a city, you\u2019re setting yourself up for wrong matches. Fix it by adding NPI wherever possible and using license_number + license_state as a secondary identifier.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Pitfall_2_Uploading_duplicates_and_then_blaming_enrichment\"><\/span>Pitfall 2: Uploading duplicates and then blaming enrichment<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Duplicates usually come from your source exports (ATS, CRM, event lists). Dedupe before upload, then keep a \u201cdedupe rule\u201d note in the file so the next recruiter doesn\u2019t reintroduce duplicates.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Pitfall_3_No_refresh_discipline\"><\/span>Pitfall 3: No refresh discipline<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>If you don\u2019t track recency, you\u2019ll work stale records and conclude \u201cthe data is bad\u201d when the real issue is age. Stamp refresh_date and work newest first.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Pitfall_4_Opt-outs_buried_in_notes\"><\/span>Pitfall 4: Opt-outs buried in notes<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Opt-out needs to be a first-class field in your workflow. If a physician opts out, suppress them across future uploads and campaigns. Don\u2019t bury it in free-text notes.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"How_to_improve_results\"><\/span>How to improve results<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Once your upload is clean, improvement comes from measuring reachability, segmenting by match strength, and closing the loop with suppression and refresh.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"1_Track_reachability_metrics_by_list_source_and_refresh_date\"><\/span>1) Track reachability metrics by list source and refresh_date<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Measure this by\u2026 tracking these rates per campaign and per list source (ATS export vs referral list vs conference list). Always keep the denominator consistent:<\/p>\n<ul>\n<li><strong>Deliverability Rate<\/strong> = delivered emails \/ sent emails (per 100 sent emails).<\/li>\n<li><strong>Bounce Rate<\/strong> = bounced emails \/ sent emails (per 100 sent emails).<\/li>\n<li><strong>Reply Rate<\/strong> = replies \/ delivered emails (per 100 delivered emails).<\/li>\n<li><strong>Connect Rate<\/strong> = connected calls \/ total dials (per 100 dials).<\/li>\n<li><strong>Answer Rate<\/strong> = human answers \/ connected calls (per 100 connected calls).<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"2_Segment_by_match_strength_before_outreach\"><\/span>2) Segment by match strength before outreach<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li><strong>Tier A:<\/strong> matched on NPI.<\/li>\n<li><strong>Tier B:<\/strong> matched on license_number + license_state.<\/li>\n<li><strong>Tier C:<\/strong> matched on name\/location only (review queue before outreach).<\/li>\n<\/ul>\n<p>This keeps workflow fit tight: your fastest recruiters work Tier A first, while Tier C gets reviewed so you don\u2019t burn reputation or annoy the wrong physician.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"3_Operationalize_suppression_simple_SOP\"><\/span>3) Operationalize suppression (simple SOP)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ol>\n<li><strong>Capture:<\/strong> store opt-out and wrong-person reports in a dedicated field (not notes) in your CRM\/ATS.<\/li>\n<li><strong>Apply:<\/strong> apply suppression before every upload and before every outreach send.<\/li>\n<li><strong>Audit:<\/strong> spot-check a small sample of suppressed records to confirm they are excluded from outreach.<\/li>\n<\/ol>\n<p><strong>Suppression key tip:<\/strong> use <strong>NPI<\/strong> as the primary suppression key when available. If NPI is missing, suppress by the channel used (email address and\/or phone number) so the same person doesn\u2019t get re-contacted on the next upload.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"4_Refresh_on_a_cadence_tied_to_active_recruiting\"><\/span>4) Refresh on a cadence tied to active recruiting<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Don\u2019t treat enrichment as a one-time event. Stamp refresh_date and re-enrich on a schedule that matches your outreach volume. Work newest refresh_date first.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Legal_and_ethical_use\"><\/span>Legal and ethical use<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ul>\n<li><strong>Consent:<\/strong> Use outreach channels consistent with your organization\u2019s policies and applicable laws.<\/li>\n<li><strong>Opt-out:<\/strong> If someone asks you to stop, stop. Maintain an opt-out list and apply it to future uploads.<\/li>\n<li><strong>Data minimization:<\/strong> Don\u2019t collect sensitive personal data you don\u2019t need for recruiting.<\/li>\n<li><strong>Auditability:<\/strong> Keep source and source_date so you can explain where a record came from.<\/li>\n<\/ul>\n<p>If you\u2019re unsure about local requirements, involve counsel. Heartbeat.ai does not provide legal advice.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Evidence_and_trust_notes\"><\/span>Evidence and trust notes<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>When we say \u201cNPI is the best identifier,\u201d we\u2019re aligning to the healthcare identity system designed for that purpose. Match outcomes depend on identifier quality (NPI or board license vs name-only). For how we evaluate sources, matching, and data handling, see our <a href=\"http:\/\/heartbeat.ai\/resources\/trust-methodology\/\">trust methodology<\/a>.<\/p>\n<ul>\n<li><a href=\"https:\/\/nppes.cms.hhs.gov\/\">NPPES (CMS) \u2014 NPI registry baseline<\/a><\/li>\n<li><a href=\"https:\/\/www.cms.gov\/medicare\/regulations-guidance\/administrative-simplification\/national-provider-identifier-npi\">CMS \u2014 National Provider Identifier (NPI) overview<\/a><\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"FAQs\"><\/span>FAQs<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"What_columns_do_I_need_to_upload_a_physician_list_for_enrichment\"><\/span>What columns do I need to upload a physician list for enrichment?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Use NPI whenever possible, plus name and location context. At minimum: npi (preferred), first_name, last_name, primary_state. Add license_number + license_state when NPI is missing, and include source_date and refresh_date for auditing and freshness.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Why_does_NPI_beat_name_for_matching\"><\/span>Why does NPI beat name for matching?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>NPI is designed to identify providers uniquely across systems. Names collide and change; NPI is a stable identifier, which reduces wrong-person matches and cleanup work.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"What_should_I_do_if_my_list_doesnt_have_NPI\"><\/span>What should I do if my list doesn\u2019t have NPI?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Add license_number + license_state if you have it, and include specialty and primary city\/state to reduce collisions. Then prioritize collecting NPI going forward in your intake workflow.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"What_happens_to_rows_that_dont_match_cleanly\"><\/span>What happens to rows that don\u2019t match cleanly?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Treat them as a review queue. Weak identifiers (name-only, partial location, conflicting fields) increase collision risk, so review identity before outreach and improve the match keys for the next refresh.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Why_did_my_phone_numbers_lose_%E2%80%9C1%E2%80%9D_or_turn_into_scientific_notation\"><\/span>Why did my phone numbers lose \u201c+1\u201d or turn into scientific notation?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>This usually happens when spreadsheets auto-format phone columns as numbers. Store phone as text, re-export to CSV, and re-check a few rows in the pre-flight validation step before you run enrichment.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Should_I_include_work_email_personal_email_or_both\"><\/span>Should I include work email, personal email, or both?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Include what you have, but keep one value per cell and respect consent and opt-out. If a physician opts out on any channel, suppress them so they aren\u2019t contacted again on future uploads.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Next_steps\"><\/span>Next steps<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ul>\n<li>Run your first file: <a href=\"https:\/\/heartbeat.ai\/upload-file\">upload your CSV and map columns<\/a>.<\/li>\n<li>Preview before you commit: <a href=\"https:\/\/heartbeat.ai\/signup\">start free search &amp; preview data<\/a>.<\/li>\n<li>Standardize dedupe: <a href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/how-to-dedupe-a-provider-list-npi\/\">use NPI-based dedupe rules for provider lists<\/a>.<\/li>\n<li>If you\u2019re building automation, use the <a href=\"http:\/\/heartbeat.ai\/resources\/integrations-automation\/csv-import-template-physician-contacts\/\">CSV import format guide for physician contacts<\/a> to align your integration fields.<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"About_the_Author\"><\/span><b>About the Author<\/b><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><a href=\"http:\/\/heartbeat.ai\/resources\/author\/ben-argeband\"><span style=\"font-weight: 400;\">Ben Argeband<\/span><\/a><span style=\"font-weight: 400;\"> 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&#8217;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 <\/span><a href=\"https:\/\/www.linkedin.com\/in\/ben-m-argeband-2427a8a3\/\"><span style=\"font-weight: 400;\">LinkedIn<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><script type=\"application\/ld+json\">{\"@context\":\"https:\/\/schema.org\",\"@type\":\"Article\",\"about\":[{\"@type\":\"Thing\",\"name\":\"Recruiting operations\"},{\"@type\":\"Thing\",\"name\":\"Provider identity matching\"}],\"articleSection\":\"Playbook\",\"author\":{\"@type\":\"Person\",\"jobTitle\":\"Founder & CEO of Heartbeat.ai\",\"name\":\"Ben Argeband\"},\"dateModified\":\"2026-01-05\",\"datePublished\":\"2026-01-05\",\"headline\":\"Upload a Physician List for Enrichment (Clean Matching + Fewer Support Tickets)\",\"keywords\":[\"upload a physician list for enrichment\",\"CSV\",\"NPI\",\"license matching\",\"recency\",\"opt-out\"],\"mainEntityOfPage\":{\"@id\":\"https:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/\",\"@type\":\"WebPage\"},\"publisher\":{\"@type\":\"Organization\",\"name\":\"Heartbeat.ai\"}}<\/script><br \/>\n<script type=\"application\/ld+json\">{\"@context\":\"https:\/\/schema.org\",\"@type\":\"FAQPage\",\"mainEntity\":[{\"@type\":\"Question\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Use NPI whenever possible, plus name and location context. At minimum: npi (preferred), first_name, last_name, primary_state. Add license_number + license_state when NPI is missing, and include source_date and refresh_date for auditing and freshness.\"},\"name\":\"What columns do I need to upload a physician list for enrichment?\"},{\"@type\":\"Question\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"NPI is designed to identify providers uniquely across systems. Names collide and change; NPI is a stable identifier, which reduces wrong-person matches and cleanup work.\"},\"name\":\"Why does NPI beat name for matching?\"},{\"@type\":\"Question\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Add license_number + license_state if you have it, and include specialty and primary city\/state to reduce collisions. Then prioritize collecting NPI going forward in your intake workflow.\"},\"name\":\"What should I do if my list doesn\u2019t have NPI?\"},{\"@type\":\"Question\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Treat them as a review queue. Weak identifiers (name-only, partial location, conflicting fields) increase collision risk, so review identity before outreach and improve the match keys for the next refresh.\"},\"name\":\"What happens to rows that don\u2019t match cleanly?\"},{\"@type\":\"Question\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"This usually happens when spreadsheets auto-format phone columns as numbers. Store phone as text, re-export to CSV, and re-check a few rows in the pre-flight validation step before you run enrichment.\"},\"name\":\"Why did my phone numbers lose \u201c+1\u201d or turn into scientific notation?\"},{\"@type\":\"Question\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Include what you have, but keep one value per cell and respect consent and opt-out. If a physician opts out on any channel, suppress them so they aren\u2019t contacted again on future uploads.\"},\"name\":\"Should I include work email, personal email, or both?\"}]}<\/script><\/p>","protected":false},"excerpt":{"rendered":"<p>A recruiter-grade playbook to upload a physician list for enrichment: minimum vs recommended columns (NPI-first), dedupe rules, pre-flight validation (including encoding), mapping tips, outputs, recency tracking, and opt-out suppression.<\/p>","protected":false},"author":5,"featured_media":54312,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_yoast_wpseo_focuskw":"upload a physician list for enrichment","_yoast_wpseo_title":"Upload a Physician List for Enrichment: Required Columns, Mapping, and QA","_yoast_wpseo_metadesc":"Step-by-step playbook to upload a physician list for enrichment in Heartbeat.ai: NPI-first columns, dedupe, pre-flight validation, mapping tips, outputs, recency tracking, and opt-out suppression.","_custom_permalink":"provider-contact-data\/upload-a-physician-list-for-enrichment","footnotes":""},"categories":[1],"tags":[],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\r\n<title>Upload a Physician List for Enrichment: Required Columns, Mapping, and QA<\/title>\r\n<meta name=\"description\" content=\"Step-by-step playbook to upload a physician list for enrichment in Heartbeat.ai: NPI-first columns, dedupe, pre-flight validation, mapping tips, outputs, recency tracking, and opt-out suppression.\" \/>\r\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\r\n<link rel=\"canonical\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/\" \/>\r\n<meta property=\"og:locale\" content=\"en_US\" \/>\r\n<meta property=\"og:type\" content=\"article\" \/>\r\n<meta property=\"og:title\" content=\"Upload a Physician List for Enrichment: Required Columns, Mapping, and QA\" \/>\r\n<meta property=\"og:description\" content=\"Step-by-step playbook to upload a physician list for enrichment in Heartbeat.ai: NPI-first columns, dedupe, pre-flight validation, mapping tips, outputs, recency tracking, and opt-out suppression.\" \/>\r\n<meta property=\"og:url\" content=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/\" \/>\r\n<meta property=\"og:site_name\" content=\"Heartbeat.ai\" \/>\r\n<meta property=\"article:published_time\" content=\"2026-02-01T18:58:41+00:00\" \/>\r\n<meta property=\"article:modified_time\" content=\"2026-02-27T19:34:36+00:00\" \/>\r\n<meta property=\"og:image\" content=\"https:\/\/hc.heartbeat.ai\/wp-content\/uploads\/2026\/02\/upload-a-physician-list-for-enrichment-8ebc8d01.png\" \/>\r\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\r\n\t<meta property=\"og:image:height\" content=\"1024\" \/>\r\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\r\n<meta name=\"author\" content=\"Ben Argeband\" \/>\r\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\r\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Ben Argeband\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"13 minutes\" \/>\r\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/#article\",\"isPartOf\":{\"@id\":\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/\"},\"author\":{\"name\":\"Ben Argeband\",\"@id\":\"http:\/\/heartbeat.ai\/resources\/#\/schema\/person\/7b323ddce9b211907423482e2f9db173\"},\"headline\":\"Upload a Physician List for Enrichment (Clean Matching + Fewer Support Tickets)\",\"datePublished\":\"2026-02-01T18:58:41+00:00\",\"dateModified\":\"2026-02-27T19:34:36+00:00\",\"mainEntityOfPage\":{\"@id\":\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/\"},\"wordCount\":2509,\"commentCount\":0,\"publisher\":{\"@id\":\"http:\/\/heartbeat.ai\/resources\/#organization\"},\"image\":{\"@id\":\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/hc.heartbeat.ai\/wp-content\/uploads\/2026\/02\/upload-a-physician-list-for-enrichment-8ebc8d01.png\",\"articleSection\":[\"News\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/\",\"url\":\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/\",\"name\":\"Upload a Physician List for Enrichment: Required Columns, Mapping, and QA\",\"isPartOf\":{\"@id\":\"http:\/\/heartbeat.ai\/resources\/#website\"},\"primaryImageOfPage\":{\"@id\":\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/#primaryimage\"},\"image\":{\"@id\":\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/hc.heartbeat.ai\/wp-content\/uploads\/2026\/02\/upload-a-physician-list-for-enrichment-8ebc8d01.png\",\"datePublished\":\"2026-02-01T18:58:41+00:00\",\"dateModified\":\"2026-02-27T19:34:36+00:00\",\"description\":\"Step-by-step playbook to upload a physician list for enrichment in Heartbeat.ai: NPI-first columns, dedupe, pre-flight validation, mapping tips, outputs, recency tracking, and opt-out suppression.\",\"breadcrumb\":{\"@id\":\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/#primaryimage\",\"url\":\"https:\/\/hc.heartbeat.ai\/wp-content\/uploads\/2026\/02\/upload-a-physician-list-for-enrichment-8ebc8d01.png\",\"contentUrl\":\"https:\/\/hc.heartbeat.ai\/wp-content\/uploads\/2026\/02\/upload-a-physician-list-for-enrichment-8ebc8d01.png\",\"width\":1024,\"height\":1024},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/heartbeat.ai\/healthcare\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Upload a Physician List for Enrichment (Clean Matching + Fewer Support Tickets)\"}]},{\"@type\":\"WebSite\",\"@id\":\"http:\/\/heartbeat.ai\/resources\/#website\",\"url\":\"http:\/\/heartbeat.ai\/resources\/\",\"name\":\"Heartbeat.ai\",\"description\":\"\",\"publisher\":{\"@id\":\"http:\/\/heartbeat.ai\/resources\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"http:\/\/heartbeat.ai\/resources\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"http:\/\/heartbeat.ai\/resources\/#organization\",\"name\":\"Heartbeat.ai\",\"url\":\"http:\/\/heartbeat.ai\/resources\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"http:\/\/heartbeat.ai\/resources\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/hc.heartbeat.ai\/wp-content\/uploads\/2021\/04\/Heartbeat.ai-logo.png\",\"contentUrl\":\"https:\/\/hc.heartbeat.ai\/wp-content\/uploads\/2021\/04\/Heartbeat.ai-logo.png\",\"width\":704,\"height\":126,\"caption\":\"Heartbeat.ai\"},\"image\":{\"@id\":\"http:\/\/heartbeat.ai\/resources\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"http:\/\/heartbeat.ai\/resources\/#\/schema\/person\/7b323ddce9b211907423482e2f9db173\",\"name\":\"Ben Argeband\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"http:\/\/heartbeat.ai\/resources\/#\/schema\/person\/image\/\",\"url\":\"http:\/\/0.gravatar.com\/avatar\/6356f96884d5a313d758128b3d9aaef7?s=96&d=mm&r=g\",\"contentUrl\":\"http:\/\/0.gravatar.com\/avatar\/6356f96884d5a313d758128b3d9aaef7?s=96&d=mm&r=g\",\"caption\":\"Ben Argeband\"},\"url\":\"http:\/\/heartbeat.ai\/resources\/author\/ben-argeband\/\"}]}<\/script>\r\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Upload a Physician List for Enrichment: Required Columns, Mapping, and QA","description":"Step-by-step playbook to upload a physician list for enrichment in Heartbeat.ai: NPI-first columns, dedupe, pre-flight validation, mapping tips, outputs, recency tracking, and opt-out suppression.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/","og_locale":"en_US","og_type":"article","og_title":"Upload a Physician List for Enrichment: Required Columns, Mapping, and QA","og_description":"Step-by-step playbook to upload a physician list for enrichment in Heartbeat.ai: NPI-first columns, dedupe, pre-flight validation, mapping tips, outputs, recency tracking, and opt-out suppression.","og_url":"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/","og_site_name":"Heartbeat.ai","article_published_time":"2026-02-01T18:58:41+00:00","article_modified_time":"2026-02-27T19:34:36+00:00","og_image":[{"width":1024,"height":1024,"url":"https:\/\/hc.heartbeat.ai\/wp-content\/uploads\/2026\/02\/upload-a-physician-list-for-enrichment-8ebc8d01.png","type":"image\/png"}],"author":"Ben Argeband","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Ben Argeband","Est. reading time":"13 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/#article","isPartOf":{"@id":"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/"},"author":{"name":"Ben Argeband","@id":"http:\/\/heartbeat.ai\/resources\/#\/schema\/person\/7b323ddce9b211907423482e2f9db173"},"headline":"Upload a Physician List for Enrichment (Clean Matching + Fewer Support Tickets)","datePublished":"2026-02-01T18:58:41+00:00","dateModified":"2026-02-27T19:34:36+00:00","mainEntityOfPage":{"@id":"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/"},"wordCount":2509,"commentCount":0,"publisher":{"@id":"http:\/\/heartbeat.ai\/resources\/#organization"},"image":{"@id":"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/#primaryimage"},"thumbnailUrl":"https:\/\/hc.heartbeat.ai\/wp-content\/uploads\/2026\/02\/upload-a-physician-list-for-enrichment-8ebc8d01.png","articleSection":["News"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/#respond"]}]},{"@type":"WebPage","@id":"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/","url":"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/","name":"Upload a Physician List for Enrichment: Required Columns, Mapping, and QA","isPartOf":{"@id":"http:\/\/heartbeat.ai\/resources\/#website"},"primaryImageOfPage":{"@id":"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/#primaryimage"},"image":{"@id":"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/#primaryimage"},"thumbnailUrl":"https:\/\/hc.heartbeat.ai\/wp-content\/uploads\/2026\/02\/upload-a-physician-list-for-enrichment-8ebc8d01.png","datePublished":"2026-02-01T18:58:41+00:00","dateModified":"2026-02-27T19:34:36+00:00","description":"Step-by-step playbook to upload a physician list for enrichment in Heartbeat.ai: NPI-first columns, dedupe, pre-flight validation, mapping tips, outputs, recency tracking, and opt-out suppression.","breadcrumb":{"@id":"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/#primaryimage","url":"https:\/\/hc.heartbeat.ai\/wp-content\/uploads\/2026\/02\/upload-a-physician-list-for-enrichment-8ebc8d01.png","contentUrl":"https:\/\/hc.heartbeat.ai\/wp-content\/uploads\/2026\/02\/upload-a-physician-list-for-enrichment-8ebc8d01.png","width":1024,"height":1024},{"@type":"BreadcrumbList","@id":"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/heartbeat.ai\/healthcare\/"},{"@type":"ListItem","position":2,"name":"Upload a Physician List for Enrichment (Clean Matching + Fewer Support Tickets)"}]},{"@type":"WebSite","@id":"http:\/\/heartbeat.ai\/resources\/#website","url":"http:\/\/heartbeat.ai\/resources\/","name":"Heartbeat.ai","description":"","publisher":{"@id":"http:\/\/heartbeat.ai\/resources\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"http:\/\/heartbeat.ai\/resources\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"http:\/\/heartbeat.ai\/resources\/#organization","name":"Heartbeat.ai","url":"http:\/\/heartbeat.ai\/resources\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"http:\/\/heartbeat.ai\/resources\/#\/schema\/logo\/image\/","url":"https:\/\/hc.heartbeat.ai\/wp-content\/uploads\/2021\/04\/Heartbeat.ai-logo.png","contentUrl":"https:\/\/hc.heartbeat.ai\/wp-content\/uploads\/2021\/04\/Heartbeat.ai-logo.png","width":704,"height":126,"caption":"Heartbeat.ai"},"image":{"@id":"http:\/\/heartbeat.ai\/resources\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"http:\/\/heartbeat.ai\/resources\/#\/schema\/person\/7b323ddce9b211907423482e2f9db173","name":"Ben Argeband","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"http:\/\/heartbeat.ai\/resources\/#\/schema\/person\/image\/","url":"http:\/\/0.gravatar.com\/avatar\/6356f96884d5a313d758128b3d9aaef7?s=96&d=mm&r=g","contentUrl":"http:\/\/0.gravatar.com\/avatar\/6356f96884d5a313d758128b3d9aaef7?s=96&d=mm&r=g","caption":"Ben Argeband"},"url":"http:\/\/heartbeat.ai\/resources\/author\/ben-argeband\/"}]}},"_links":{"self":[{"href":"http:\/\/heartbeat.ai\/resources\/wp-json\/wp\/v2\/posts\/54313"}],"collection":[{"href":"http:\/\/heartbeat.ai\/resources\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/heartbeat.ai\/resources\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/heartbeat.ai\/resources\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"http:\/\/heartbeat.ai\/resources\/wp-json\/wp\/v2\/comments?post=54313"}],"version-history":[{"count":1,"href":"http:\/\/heartbeat.ai\/resources\/wp-json\/wp\/v2\/posts\/54313\/revisions"}],"predecessor-version":[{"id":54515,"href":"http:\/\/heartbeat.ai\/resources\/wp-json\/wp\/v2\/posts\/54313\/revisions\/54515"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/heartbeat.ai\/resources\/wp-json\/wp\/v2\/media\/54312"}],"wp:attachment":[{"href":"http:\/\/heartbeat.ai\/resources\/wp-json\/wp\/v2\/media?parent=54313"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/heartbeat.ai\/resources\/wp-json\/wp\/v2\/categories?post=54313"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/heartbeat.ai\/resources\/wp-json\/wp\/v2\/tags?post=54313"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}