{"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-08-31T08:47:15","modified_gmt":"2026-08-31T13:47:15","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 class=\"article-last-updated\"><strong>Last updated:<\/strong> August 31, 2026<\/p>\n<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<p><strong>By Ben Argeband, Founder &amp; CEO of Heartbeat.ai<\/strong> \u2014 a practical walkthrough for recruiters, not a compliance manual.<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 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\" style=\"cursor:inherit\">What\u2019s 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\" >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\" >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\/#The_upload_prep_checklist_clean_dedupe_identify_upload\" >The upload prep checklist: clean, dedupe, identify, 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\" >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\" >Step 1: Start with a &#8220;one row = one physician&#8221; 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_%E2%80%94_why_NPI_beats_name\" >Step 2: Use stable identifiers \u2014 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\" >Step 3: Dedupe before upload<\/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_%E2%80%94_minimum_vs_recommended\" >Step 4: Required columns \u2014 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\" >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\" >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\" >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_about_two_minutes\" >Step 7A: Pre-flight validation (about two 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\" >Step 8: Run enrichment and review outputs<\/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\" >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\" >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\" >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\" >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\" >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\" >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\" >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\" >Pitfall 1: Treating &#8220;name&#8221; 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_blaming_enrichment\" >Pitfall 2: Uploading duplicates and 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\" >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\" >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\" >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\" >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\" >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_with_a_simple_SOP\" >3. Operationalize suppression with a 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\" >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\" >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\" >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\" >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\" >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\" >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\" >What should I do if my list doesn&#8217;t 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\" >What happens to rows that don&#8217;t 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\" >Why did my phone numbers lose &#8220;+1&#8221; 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\" >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\" >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\" >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 written for recruiters working from spreadsheets who want enrichment to go smoothly the first time. If your team keeps losing hours to bad matches, duplicate rows, or re-uploading the same file with different headers, this is meant to fix that.<\/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 confusion about why a row matched the way it did.<\/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 a stable identifier (NPI first), dedupe to one row per physician, map columns cleanly, upload, then check match strength and recency before you contact anyone.<\/dd>\n<dt>Key insight<\/dt>\n<dd>Unique keys prevent wrong-person matches. Clean columns prevent mapping errors. A refresh date keeps your team from working stale contact data without realizing it.<\/dd>\n<dt>Best for<\/dt>\n<dd>Recruiters with spreadsheets who want enrichment without formatting headaches.<\/dd>\n<\/dl>\n<blockquote>\n<p><strong>Compliance &amp; safety<\/strong><\/p>\n<p>This method is for legitimate recruiting outreach only. Respect candidate privacy, opt-out requests, and applicable data laws. Heartbeat does not provide medical advice or legal counsel.<\/p>\n<\/blockquote>\n<h2><span class=\"ez-toc-section\" id=\"The_upload_prep_checklist_clean_dedupe_identify_upload\"><\/span>The upload prep checklist: clean, dedupe, identify, upload<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ol>\n<li><strong>Clean:<\/strong> make the file structurally predictable \u2014 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> make sure each row has at least one strong identifier, plus context fields that reduce collisions.<\/li>\n<li><strong>Upload:<\/strong> map fields, validate a sample, run enrichment, then review outputs \u2014 including recency \u2014 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 &#8220;one row = one physician&#8221; 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> and avoid merged cells or hidden formatting.<\/li>\n<li>Use one header row with no blank header names.<\/li>\n<li>Keep one physician per row \u2014 don&#8217;t mix organizations and individuals.<\/li>\n<li>Store multi-location details in a separate file rather than crowding the main sheet.<\/li>\n<\/ul>\n<p><strong>Common mistake:<\/strong> mixing practice entities and physicians in the same upload. Split them, since identity keys and matching logic differ between the two.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Step_2_Use_stable_identifiers_%E2%80%94_why_NPI_beats_name\"><\/span>Step 2: Use stable identifiers \u2014 why NPI beats name<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Names collide constantly in provider data, and even &#8220;first name plus last name plus city&#8221; isn&#8217;t reliable at scale.<\/p>\n<ul>\n<li><strong>NPI (best):<\/strong> a national identifier built specifically for provider identity resolution.<\/li>\n<li><strong>License number plus state (helpful):<\/strong> supports matching when NPI is missing, though formats vary by board and state.<\/li>\n<li><strong>Email or phone (context, not identity):<\/strong> useful for outreach, but not a dependable identity key on its own.<\/li>\n<\/ul>\n<p>A <em>match key<\/em> is the field, or combination of fields, used to decide whether a row corresponds to a specific real-world physician. Strong match keys stay stable over time and are unique per person, like NPI. Weak match keys drift or collide, like name-only fields.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Step_3_Dedupe_before_upload\"><\/span>Step 3: Dedupe before upload<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Duplicates inflate outreach volume, distort your metrics, and create awkward moments when the same physician gets two messages. Dedupe in this order:<\/p>\n<ol>\n<li><strong>Exact NPI match:<\/strong> keep the most complete row.<\/li>\n<li><strong>License number plus license state:<\/strong> keep the most complete row.<\/li>\n<li><strong>Name plus specialty plus city\/state:<\/strong> use only as a last resort, and flag these rows for review.<\/li>\n<\/ol>\n<h3><span class=\"ez-toc-section\" id=\"Step_4_Required_columns_%E2%80%94_minimum_vs_recommended\"><\/span>Step 4: Required columns \u2014 minimum vs. recommended<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>The minimum set supports clean matching when NPI is present. The recommended set cuts review time and keeps 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>Consistent columns prevent bad mapping and cut support tickets. Use one header pattern across every recruiter&#8217;s export so uploads behave the same way each time.<\/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 or spaces.<\/li>\n<li><strong>license_number and license_state:<\/strong> keep as text, since some boards use letters or leading zeros.<\/li>\n<li><strong>phone:<\/strong> keep as text to preserve &#8220;+1&#8221; and avoid scientific notation.<\/li>\n<li>Don&#8217;t stack multiple emails or phones in one cell \u2014 put the best one in the main column and the rest in notes.<\/li>\n<li>Use consistent state abbreviations, such as &#8220;TX&#8221; rather than &#8220;Texas.&#8221;<\/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 a physician across all rows and files.<\/li>\n<li><strong>Pick a primary location:<\/strong> store one primary_city\/primary_state pair in the main file so matching stays consistent.<\/li>\n<li><strong>Store extras separately:<\/strong> keep additional locations in a separate file or structured notes field, then attach them once 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 confirm the system read the file the way you intended: correct row count, correct column mapping, clean identifiers.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Step_7A_Pre-flight_validation_about_two_minutes\"><\/span>Step 7A: Pre-flight validation (about two 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 mapped correctly and weren&#8217;t swapped with name fields.<\/li>\n<li><strong>NPI format check:<\/strong> spot-check a few NPIs for stray spaces or non-numeric characters.<\/li>\n<li><strong>Phone-as-text check:<\/strong> confirm phone values kept their &#8220;+1&#8221; and didn&#8217;t convert to scientific notation.<\/li>\n<li><strong>Delimiter and 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 proceeding.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Step_8_Run_enrichment_and_review_outputs\"><\/span>Step 8: Run enrichment and review outputs<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>After enrichment, expect outputs you can act on 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 work records more likely to connect first, including ranked mobile numbers by answer probability.<\/li>\n<li><strong>Unmatched or 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> through your refresh_date field, or your internal process, so you work the newest data first.<\/li>\n<\/ul>\n<p><em>Recency<\/em> is how recently a contact field \u2014 email or phone \u2014 was observed, verified, or refreshed. Operationally, it&#8217;s the closest signal you have to whether a record is still reachable today.<\/p>\n<p>There&#8217;s a real trade-off here: letting weak identifiers match automatically moves faster today, but you&#8217;ll 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 &#8220;needs review&#8221; or 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 &#8220;provider id&#8221; 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 whether your file is ready to upload today. Score each item; if you land 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. Without this, you&#8217;re relying on weak identifiers.<\/li>\n<li><strong>(15 pts)<\/strong> One row per physician, with 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 and license_state to support matching when NPI is missing.<\/li>\n<li><strong>(10 pts)<\/strong> Phone and email columns contain only one value per cell, with extras moved to notes.<\/li>\n<li><strong>(10 pts)<\/strong> source and source_date populated, even approximately.<\/li>\n<li><strong>(10 pts)<\/strong> refresh_date populated, or a post-enrichment step in place to stamp it.<\/li>\n<\/ul>\n<p><strong>Mapping tab tip:<\/strong> create a dedicated &#8220;mapping&#8221; tab in your spreadsheet with two columns \u2014 your_header and target_header \u2014 using the standard header pattern above. Require recruiters to update it before exporting. It prevents header drift across teams and cuts 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 built for legitimate recruiting outreach with clear opt-out handling. Customize specialty and location, and keep the message 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&#8217;m 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 &#8220;opt out&#8221; and I&#8217;ll 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&#8217;m calling about a {{Specialty}} opportunity in {{State}}. If you&#8217;re open to a quick conversation, call me at {{CallbackNumber}}. If not, tell me and I&#8217;ll 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 &#8220;name&#8221; as an identifier<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>If your list is mostly first name, last name, and city, you&#8217;re setting yourself up for wrong matches. Add NPI wherever possible and use license_number plus license_state as a backup identifier.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Pitfall_2_Uploading_duplicates_and_blaming_enrichment\"><\/span>Pitfall 2: Uploading duplicates and blaming enrichment<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Duplicates usually come from source exports \u2014 ATS, CRM, event lists. Dedupe before upload, then keep a &#8220;dedupe rule&#8221; note in the file so the next recruiter doesn&#8217;t 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>Without recency tracking, you&#8217;ll work stale records and conclude &#8220;the data is bad&#8221; 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 rather than burying the request 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>Track these rates per campaign and per list source \u2014 ATS export, referral list, conference list \u2014 and 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 plus license_state.<\/li>\n<li><strong>Tier C:<\/strong> matched on name or location only \u2014 review queue before outreach.<\/li>\n<\/ul>\n<p>This keeps the workload realistic: your fastest recruiters work Tier A first, while Tier C gets reviewed so you don&#8217;t burn reputation or annoy the wrong physician.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"3_Operationalize_suppression_with_a_simple_SOP\"><\/span>3. Operationalize suppression with a 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 every outreach send.<\/li>\n<li><strong>Audit:<\/strong> spot-check a small sample of suppressed records to confirm they&#8217;re excluded from outreach.<\/li>\n<\/ol>\n<p>Use NPI as the primary suppression key when available. If NPI is missing, suppress by the channel used \u2014 email address or phone number \u2014 so the same person doesn&#8217;t 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&#8217;t treat enrichment as a one-time event. Stamp refresh_date and re-enrich on a schedule that matches your outreach volume, working the 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&#8217;s policies and applicable laws.<\/li>\n<li><strong>Opt-out:<\/strong> if someone asks you to stop, stop, and apply that request to future uploads.<\/li>\n<li><strong>Data minimization:<\/strong> don&#8217;t collect sensitive personal data you don&#8217;t 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&#8217;re 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>NPI is treated as the strongest identifier here because it&#8217;s part of the national provider identification system built for that purpose. Match outcomes depend heavily on identifier quality \u2014 NPI or board license beats name-only every time. 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 and 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, while NPI stays stable, 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&#8217;t have NPI?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Add license_number and license_state if you have them, 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&#8217;t match cleanly?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Treat them as a review queue. Weak identifiers \u2014 name-only, partial location, conflicting fields \u2014 increase collision risk, so review identity before outreach and improve 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 &#8220;+1&#8221; 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 during pre-flight validation before running 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&#8217;t 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&#8217;re 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><br \/>\n<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><\/p>\n<p><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't 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't 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 \\\"+1\\\" 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't 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 for uploading physician lists for enrichment: NPI-first columns, dedupe rules, validation, 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,"_custom_permalink":"provider-contact-data\/upload-a-physician-list-for-enrichment","footnotes":""},"categories":[1],"tags":[],"class_list":["post-54313","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\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-08-31T13:47:15+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=\"12 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-08-31T13:47:15+00:00\",\"mainEntityOfPage\":{\"@id\":\"http:\\\/\\\/heartbeat.ai\\\/resources\\\/provider-contact-data\\\/upload-a-physician-list-for-enrichment\\\/\"},\"wordCount\":2506,\"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\":\"http:\\\/\\\/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\":\"http:\\\/\\\/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-08-31T13:47:15+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\":\"http:\\\/\\\/hc.heartbeat.ai\\\/wp-content\\\/uploads\\\/2026\\\/02\\\/upload-a-physician-list-for-enrichment-8ebc8d01.png\",\"contentUrl\":\"http:\\\/\\\/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\":\"http:\\\/\\\/heartbeat.ai\\\/resources\\\/\"},{\"@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\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"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\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/9cdd6acf262740ced0b6a1c76378e93640df32a98d2f4d29507f31fbce6817e7?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/9cdd6acf262740ced0b6a1c76378e93640df32a98d2f4d29507f31fbce6817e7?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/9cdd6acf262740ced0b6a1c76378e93640df32a98d2f4d29507f31fbce6817e7?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-08-31T13:47:15+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":"12 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-08-31T13:47:15+00:00","mainEntityOfPage":{"@id":"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/"},"wordCount":2506,"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":"http:\/\/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":"http:\/\/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-08-31T13:47:15+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":"http:\/\/hc.heartbeat.ai\/wp-content\/uploads\/2026\/02\/upload-a-physician-list-for-enrichment-8ebc8d01.png","contentUrl":"http:\/\/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":"http:\/\/heartbeat.ai\/resources\/"},{"@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":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"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":"https:\/\/secure.gravatar.com\/avatar\/9cdd6acf262740ced0b6a1c76378e93640df32a98d2f4d29507f31fbce6817e7?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/9cdd6acf262740ced0b6a1c76378e93640df32a98d2f4d29507f31fbce6817e7?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/9cdd6acf262740ced0b6a1c76378e93640df32a98d2f4d29507f31fbce6817e7?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","targetHints":{"allow":["GET"]}}],"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":2,"href":"http:\/\/heartbeat.ai\/resources\/wp-json\/wp\/v2\/posts\/54313\/revisions"}],"predecessor-version":[{"id":66213,"href":"http:\/\/heartbeat.ai\/resources\/wp-json\/wp\/v2\/posts\/54313\/revisions\/66213"}],"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}]}}