{"id":54309,"date":"2026-02-01T12:58:03","date_gmt":"2026-02-01T18:58:03","guid":{"rendered":"https:\/\/heartbeat.ai\/healthcare\/bulk-physician-lookup\/"},"modified":"2026-08-31T08:47:10","modified_gmt":"2026-08-31T13:47:10","slug":"bulk-physician-lookup","status":"publish","type":"post","link":"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/bulk-physician-lookup\/","title":{"rendered":"Bulk Physician Lookup (CSV + API): Columns, Matching, Validation, Output"},"content":{"rendered":"<p class=\"article-last-updated\"><strong>Last updated:<\/strong> August 31, 2026<\/p>\n<p><strong>Ben Argeband, Founder &amp; CEO of Heartbeat.ai<\/strong> \u2014 Practical: exactly what columns to use and what to do when it fails.<\/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\/bulk-physician-lookup\/#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\/bulk-physician-lookup\/#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\/bulk-physician-lookup\/#The_Bulk_Lookup_Standard_Clean_Inputs_Match_Keys_Validate_Output\" >The Bulk Lookup Standard: Clean Inputs, Match Keys, Validate, Output<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/bulk-physician-lookup\/#Clean_inputs_make_the_file_predictable\" >Clean inputs (make the file predictable)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/bulk-physician-lookup\/#Match_keys_use_deterministic_identifiers_first\" >Match keys (use deterministic identifiers first)<\/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\/bulk-physician-lookup\/#Validate_protect_your_time_and_your_brand\" >Validate (protect your time and your brand)<\/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\/bulk-physician-lookup\/#Output_make_it_usable_downstream\" >Output (make it usable downstream)<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/bulk-physician-lookup\/#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-9\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/bulk-physician-lookup\/#Step_1_Set_your_acceptance_policy_before_you_run_anything\" >Step 1: Set your acceptance policy before you run anything<\/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\/bulk-physician-lookup\/#Step_2_Minimum_viable_columns_for_bulk_lookup\" >Step 2: Minimum viable columns for bulk lookup<\/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\/bulk-physician-lookup\/#Step_3_Build_your_CSV_using_the_copypaste_header\" >Step 3: Build your CSV using the copy\/paste header<\/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\/bulk-physician-lookup\/#Step_4_Run_the_bulk_lookup_%E2%80%94_CSV_upload_or_API\" >Step 4: Run the bulk lookup \u2014 CSV upload or API<\/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\/bulk-physician-lookup\/#Step_5_Field_mapping_ops_can_follow_without_guessing\" >Step 5: Field mapping ops can follow without guessing<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/bulk-physician-lookup\/#Step_6_Recommended_export_column_names\" >Step 6: Recommended export column names<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/bulk-physician-lookup\/#Step_7_Require_these_output_fields\" >Step 7: Require these output fields<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/bulk-physician-lookup\/#Step_8_Spot-check_before_you_send_or_dial\" >Step 8: Spot-check before you send or dial<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/bulk-physician-lookup\/#Step_9_Review_queue_SOP_for_Medium_and_Low_tiers\" >Step 9: Review queue SOP for Medium and Low tiers<\/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\/bulk-physician-lookup\/#Step_10_Export_in_the_format_your_systems_ingest\" >Step 10: Export in the format your systems ingest<\/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\/bulk-physician-lookup\/#Step_11_Where_bulk_lookup_pays_off\" >Step 11: Where bulk lookup pays off<\/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\/bulk-physician-lookup\/#Diagnostic_table\" >Diagnostic table<\/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\/bulk-physician-lookup\/#Common_import_errors\" >Common import errors<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-22\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/bulk-physician-lookup\/#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-23\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/bulk-physician-lookup\/#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-24\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/bulk-physician-lookup\/#Email_template_initial\" >Email template (initial)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-25\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/bulk-physician-lookup\/#Gatekeeper_or_office_line_call_opener\" >Gatekeeper or office line call opener<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-26\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/bulk-physician-lookup\/#SMS_template_only_where_compliant\" >SMS template (only where compliant)<\/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\/bulk-physician-lookup\/#Wrong-person_correction\" >Wrong-person correction<\/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\/bulk-physician-lookup\/#Voicemail_template\" >Voicemail template<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-29\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/bulk-physician-lookup\/#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-30\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/bulk-physician-lookup\/#1_Treating_names_as_identifiers\" >1) Treating names as identifiers<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-31\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/bulk-physician-lookup\/#2_Dropping_recency_fields_during_import\" >2) Dropping recency fields during import<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-32\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/bulk-physician-lookup\/#3_No_suppression_layer_for_opt-out\" >3) No suppression layer for opt-out<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-33\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/bulk-physician-lookup\/#4_Mixing_notes_into_identifier_columns\" >4) Mixing notes into identifier columns<\/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\/bulk-physician-lookup\/#5_Auto-accepting_fallback_matches\" >5) Auto-accepting fallback matches<\/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\/bulk-physician-lookup\/#Mini-case_the_%E2%80%9CInvalid_NPI%E2%80%9D_error_thats_really_a_spreadsheet_problem\" >Mini-case: the &#8220;Invalid NPI&#8221; error that&#8217;s really a spreadsheet problem<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-36\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/bulk-physician-lookup\/#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-37\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/bulk-physician-lookup\/#Improve_match_quality_without_slowing_the_team_down\" >Improve match quality without slowing the team down<\/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\/bulk-physician-lookup\/#Dedupe_and_suppression_merge\" >Dedupe and suppression merge<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-39\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/bulk-physician-lookup\/#Measurement\" >Measurement<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-40\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/bulk-physician-lookup\/#Workflow_fit_inside_Heartbeatai\" >Workflow fit inside Heartbeat.ai<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-41\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/bulk-physician-lookup\/#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-42\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/bulk-physician-lookup\/#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-43\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/bulk-physician-lookup\/#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-44\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/bulk-physician-lookup\/#What_columns_should_I_include_for_bulk_physician_lookup\" >What columns should I include for bulk physician lookup?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-45\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/bulk-physician-lookup\/#Why_do_wrong_matches_happen_in_bulk\" >Why do wrong matches happen in bulk?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-46\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/bulk-physician-lookup\/#How_should_I_handle_opt-out_in_a_bulk_workflow\" >How should I handle opt-out in a bulk workflow?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-47\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/bulk-physician-lookup\/#Should_I_use_CSV_upload_or_the_API\" >Should I use CSV upload or the API?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-48\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/bulk-physician-lookup\/#How_do_I_keep_results_fresh_over_time\" >How do I keep results fresh over time?<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-49\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/bulk-physician-lookup\/#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-50\" href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/bulk-physician-lookup\/#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 and ops teams who already have a spreadsheet or ATS export and need contact data in bulk fast, without turning outreach into a cleanup project.<\/p>\n<p>You&#8217;ll get a minimum-column standard, a copy\/paste CSV header, an acceptance policy for match confidence, and a measurement loop that ties bulk output quality to outreach results.<\/p>\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>Run bulk physician lookup with NPI or state license identifiers, validate match confidence and recency, then export contacts with opt-out suppression before outreach.<\/dd>\n<dt>Key Insight<\/dt>\n<dd>Bulk quality depends on identifiers more than names. Weak inputs create wrong matches and wasted recruiter cycles.<\/dd>\n<dt>Best For<\/dt>\n<dd>Recruiters and ops teams with spreadsheets needing contact data in bulk fast.<\/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 local data laws. Heartbeat does not provide medical advice or legal counsel.<\/p>\n<\/blockquote>\n<p><strong>What good output looks like:<\/strong> match_confidence plus match_reason, email and phone fields with recency dates, and an opt-out flag you can enforce before any send or dial.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"The_Bulk_Lookup_Standard_Clean_Inputs_Match_Keys_Validate_Output\"><\/span>The Bulk Lookup Standard: Clean Inputs, Match Keys, Validate, Output<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"Clean_inputs_make_the_file_predictable\"><\/span>Clean inputs (make the file predictable)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li>One provider per row.<\/li>\n<li>One value per cell \u2014 no combined identifiers.<\/li>\n<li>Keep identifiers clean, with no notes like &#8220;old&#8221; or &#8220;maybe&#8221; mixed into the field.<\/li>\n<li>Include a stable merge key from your system so you can write results back.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Match_keys_use_deterministic_identifiers_first\"><\/span>Match keys (use deterministic identifiers first)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>In bulk, names collide. Match quality is driven by identifiers, in this order of reliability:<\/p>\n<ul>\n<li><strong>NPI<\/strong> \u2014 best when present.<\/li>\n<li><strong>License matching<\/strong> \u2014 license_state plus license_number.<\/li>\n<li>Name plus geography plus organization \u2014 a fallback only, and it should not auto-accept.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Validate_protect_your_time_and_your_brand\"><\/span>Validate (protect your time and your brand)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><strong>Match confidence<\/strong> is a score or label indicating how likely the returned record corresponds to your input provider, based on the strength and agreement of identifiers. An exact NPI match is stronger evidence than a name-only match.<\/p>\n<p><strong>Recency<\/strong> describes how recently a contact point was observed, verified, or refreshed. It matters because contact data decays and routing changes over time.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Output_make_it_usable_downstream\"><\/span>Output (make it usable downstream)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Output should be outreach-ready and system-ready: normalized columns, match confidence, recency fields, and suppression flags for opt-out and internal do-not-contact rules.<\/p>\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_Set_your_acceptance_policy_before_you_run_anything\"><\/span>Step 1: Set your acceptance policy before you run anything<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Decide what you&#8217;ll auto-accept versus what must go to review. This prevents a silent failure where you fill rows but quietly degrade outreach performance.<\/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>Tier<\/th>\n<th>Auto-accept?<\/th>\n<th>Typical match_reason<\/th>\n<th>What you do next<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>High<\/td>\n<td>Yes<\/td>\n<td>Exact NPI match<\/td>\n<td>Export to ATS\/CRM and outreach lists (still enforce opt-out)<\/td>\n<\/tr>\n<tr>\n<td>Medium<\/td>\n<td>Conditional<\/td>\n<td>Exact license match (license_state + license_number)<\/td>\n<td>Spot-check a small sample, then export if identity alignment holds<\/td>\n<\/tr>\n<tr>\n<td>Low<\/td>\n<td>No<\/td>\n<td>Name + state\/city\/organization<\/td>\n<td>Route to manual review; do not automate outreach<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>The trade-off: loosening matching to fill more rows increases wrong-person risk and downstream cleanup work.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Step_2_Minimum_viable_columns_for_bulk_lookup\"><\/span>Step 2: Minimum viable columns for bulk lookup<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>If you only remember one thing, remember this: bulk lookup works when you can uniquely identify the provider and merge results back.<\/p>\n<ul>\n<li><strong>Required:<\/strong> source_system_id<\/li>\n<li><strong>Required (one of):<\/strong> npi or (license_state + license_number)<\/li>\n<li><strong>Recommended:<\/strong> first_name, last_name, state, organization \u2014 useful for validation and disambiguation<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Step_3_Build_your_CSV_using_the_copypaste_header\"><\/span>Step 3: Build your CSV using the copy\/paste header<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Use this header exactly. It keeps identifiers separate so matching stays deterministic and your import mapping stays stable.<\/p>\n<p><strong>Copy\/paste CSV header:<\/strong><\/p>\n<p>npi,first_name,last_name,license_state,license_number,specialty,city,state,organization,source_system_id<\/p>\n<ul>\n<li><strong>npi<\/strong>: 10-digit NPI, stored as text with no spaces.<\/li>\n<li><strong>license_state<\/strong>: two-letter state code.<\/li>\n<li><strong>license_number<\/strong>: exactly as issued; don&#8217;t add extra prefixes unless they&#8217;re part of the number.<\/li>\n<li><strong>source_system_id<\/strong>: your internal ID for clean merges.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Step_4_Run_the_bulk_lookup_%E2%80%94_CSV_upload_or_API\"><\/span>Step 4: Run the bulk lookup \u2014 CSV upload or API<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li><strong>CSV upload:<\/strong> best for one-off lists and ops teams. Use <a href=\"https:\/\/heartbeat.ai\/upload-file\">upload file<\/a> and map columns once.<\/li>\n<li><strong>API:<\/strong> best for recurring enrichment pipelines. Use the <a href=\"https:\/\/heartbeat.ai\/api\">Heartbeat.ai API<\/a> and store match_confidence plus recency in your system of record.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Step_5_Field_mapping_ops_can_follow_without_guessing\"><\/span>Step 5: Field mapping ops can follow without guessing<span class=\"ez-toc-section-end\"><\/span><\/h3>\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>Input field<\/th>\n<th>Used for<\/th>\n<th>Output fields you should store<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>source_system_id<\/td>\n<td>Merge key back to ATS\/CRM<\/td>\n<td>source_system_id (unchanged)<\/td>\n<\/tr>\n<tr>\n<td>npi<\/td>\n<td>Deterministic identity match<\/td>\n<td>match_confidence, match_reason, normalized identity fields<\/td>\n<\/tr>\n<tr>\n<td>license_state + license_number<\/td>\n<td>Deterministic identity match when NPI missing<\/td>\n<td>match_confidence, match_reason, normalized license fields<\/td>\n<\/tr>\n<tr>\n<td>first_name + last_name<\/td>\n<td>Validation and disambiguation<\/td>\n<td>normalized name fields, match_reason details<\/td>\n<\/tr>\n<tr>\n<td>state\/city\/organization<\/td>\n<td>Disambiguation for common names<\/td>\n<td>identity alignment fields for review queues<\/td>\n<\/tr>\n<tr>\n<td>(none)<\/td>\n<td>Contact enrichment output<\/td>\n<td>email, email_recency_date, mobile_phone, phone_recency_date, opt_out<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"Step_6_Recommended_export_column_names\"><\/span>Step 6: Recommended export column names<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Keep these names stable across CSV and API outputs so downstream imports and reporting don&#8217;t break.<\/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>Category<\/th>\n<th>Recommended column names<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Merge<\/td>\n<td>source_system_id<\/td>\n<\/tr>\n<tr>\n<td>Identity<\/td>\n<td>npi, first_name, last_name, specialty, organization, city, state<\/td>\n<\/tr>\n<tr>\n<td>Licensing<\/td>\n<td>license_state, license_number<\/td>\n<\/tr>\n<tr>\n<td>Match<\/td>\n<td>match_confidence, match_reason<\/td>\n<\/tr>\n<tr>\n<td>Contact<\/td>\n<td>email, mobile_phone<\/td>\n<\/tr>\n<tr>\n<td>Recency<\/td>\n<td>email_recency_date, phone_recency_date<\/td>\n<\/tr>\n<tr>\n<td>Suppression<\/td>\n<td>opt_out<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"Step_7_Require_these_output_fields\"><\/span>Step 7: Require these output fields<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Don&#8217;t accept an export that&#8217;s &#8220;just a phone or email.&#8221; Require:<\/p>\n<ul>\n<li><strong>match_confidence<\/strong> (High\/Medium\/Low or equivalent)<\/li>\n<li><strong>match_reason<\/strong> (exact NPI, license match, name+state)<\/li>\n<li><strong>email<\/strong> and <strong>email_recency_date<\/strong><\/li>\n<li><strong>mobile_phone<\/strong> where available, plus <strong>phone_recency_date<\/strong><\/li>\n<li><strong>opt_out<\/strong> boolean, plus suppression reason if available<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Step_8_Spot-check_before_you_send_or_dial\"><\/span>Step 8: Spot-check before you send or dial<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Bulk lookup is a production step, not the finish line. Outreach readiness requires validation and suppression enforcement.<\/p>\n<ul>\n<li>Sample across tiers and include rows from High, Medium, and Low.<\/li>\n<li>Verify identity alignment (name, state, organization) on sampled rows.<\/li>\n<li>Confirm opt-out handling actually works \u2014 suppressed contacts should never appear in outreach lists.<\/li>\n<li>Version your input file so you can trace changes to a specific run.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Step_9_Review_queue_SOP_for_Medium_and_Low_tiers\"><\/span>Step 9: Review queue SOP for Medium and Low tiers<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>When match_confidence isn&#8217;t High, route rows to a review queue with a consistent checklist so recruiters aren&#8217;t improvising.<\/p>\n<ul>\n<li><strong>Identity alignment:<\/strong> confirm name, state, and organization align with the input row.<\/li>\n<li><strong>Match reason:<\/strong> prefer license matching over name-only; downgrade anything that looks like a collision.<\/li>\n<li><strong>Recency:<\/strong> prioritize fresher contact points; flag older records for cautious outreach.<\/li>\n<li><strong>Suppression:<\/strong> if opt_out is true, suppress immediately \u2014 don&#8217;t export to outreach tools.<\/li>\n<li><strong>Write-back:<\/strong> store the reviewer&#8217;s decision alongside source_system_id for auditability.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Step_10_Export_in_the_format_your_systems_ingest\"><\/span>Step 10: Export in the format your systems ingest<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Most teams lose time after enrichment reformatting for ATS, CRM, or dialer tools. Keep column names stable and use a known structure like the <a href=\"http:\/\/heartbeat.ai\/resources\/integrations-automation\/csv-import-template-physician-contacts\/\">CSV import template for physician contacts<\/a>.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Step_11_Where_bulk_lookup_pays_off\"><\/span>Step 11: Where bulk lookup pays off<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li><strong>ATS export cleanup:<\/strong> provider list from your ATS, run through bulk lookup, write back match_confidence, recency, and contact fields.<\/li>\n<li><strong>Conference or association leads:<\/strong> attendee spreadsheet, add NPI or license fields where possible, run bulk lookup, then segment by confidence before outreach.<\/li>\n<li><strong>Locums pipeline refresh:<\/strong> stale CRM list, bulk lookup with recency fields, prioritize fresher contacts first.<\/li>\n<li><strong>Multi-site outreach:<\/strong> facility roster by site, bulk lookup, dedupe by NPI, and enforce opt-out suppression globally.<\/li>\n<\/ul>\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 test<\/th>\n<th>Fix<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Too many &#8220;no match&#8221; rows<\/td>\n<td>Missing NPI\/license fields; names only<\/td>\n<td>Count rows with blank npi AND blank license_number<\/td>\n<td>Backfill NPI from your source system; add license_state and license_number where possible<\/td>\n<\/tr>\n<tr>\n<td>Matches look close but are the wrong person<\/td>\n<td>Fallback matching used for common names<\/td>\n<td>Filter to match_reason = name+state and review a sample<\/td>\n<td>Don&#8217;t auto-accept Low tier; require NPI or license matching for automation<\/td>\n<\/tr>\n<tr>\n<td>Emails bounce after import<\/td>\n<td>Old records; formatting issues; domain policy changes<\/td>\n<td>Review email_recency_date distribution; validate email format<\/td>\n<td>Segment by recency; keep recency fields in ATS\/CRM; suppress known bad addresses internally<\/td>\n<\/tr>\n<tr>\n<td>Dialer connect rate is low<\/td>\n<td>Office main lines; stale numbers; wrong phone type<\/td>\n<td>Sample-call a small set of numbers across tiers<\/td>\n<td>Prioritize mobile where compliant; keep phone_recency_date; segment by match_confidence<\/td>\n<\/tr>\n<tr>\n<td>Duplicates in output<\/td>\n<td>Multiple input rows per provider; inconsistent IDs<\/td>\n<td>Group by npi or source_system_id and count &gt; 1<\/td>\n<td>Deduplicate upstream; enforce one row per provider; keep source_system_id stable<\/td>\n<\/tr>\n<tr>\n<td>Import fails on upload<\/td>\n<td>Header mismatch; hidden characters; wrong delimiter<\/td>\n<td>Open in plain text and confirm commas plus exact header<\/td>\n<td>Use the copy\/paste header; export as UTF-8 CSV; remove extra commas in fields<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"Common_import_errors\"><\/span>Common import errors<span class=\"ez-toc-section-end\"><\/span><\/h3>\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>Error<\/th>\n<th>What it usually means<\/th>\n<th>What to do<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>&#8220;Missing required column&#8221;<\/td>\n<td>Header spelling or case differs from expected<\/td>\n<td>Paste the exact header line; don&#8217;t rename columns midstream<\/td>\n<\/tr>\n<tr>\n<td>&#8220;Invalid NPI&#8221;<\/td>\n<td>NPI stored as a number and converted to scientific notation<\/td>\n<td>Format the NPI column as text and re-export as CSV<\/td>\n<\/tr>\n<tr>\n<td>&#8220;Too many columns&#8221;<\/td>\n<td>Commas inside fields, like organization names, aren&#8217;t quoted<\/td>\n<td>Quote fields containing commas or remove commas from those cells<\/td>\n<\/tr>\n<tr>\n<td>&#8220;Encoding error&#8221;<\/td>\n<td>Non-UTF-8 characters from copy\/paste<\/td>\n<td>Re-export as UTF-8 CSV; avoid smart quotes<\/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 a file is safe to run as auto-accept or should go to a review queue first. Score each item and apply the routing rule below.<\/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>Item<\/th>\n<th>Weight<\/th>\n<th>Pass criteria<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>NPI present<\/td>\n<td>+5<\/td>\n<td>Most rows have a 10-digit NPI stored as text<\/td>\n<\/tr>\n<tr>\n<td>License matching fields present<\/td>\n<td>+4<\/td>\n<td>license_state and license_number populated where NPI is missing<\/td>\n<\/tr>\n<tr>\n<td>Stable merge key<\/td>\n<td>+4<\/td>\n<td>source_system_id populated for every row<\/td>\n<\/tr>\n<tr>\n<td>Names normalized<\/td>\n<td>+2<\/td>\n<td>first_name\/last_name separated; no credentials in last_name<\/td>\n<\/tr>\n<tr>\n<td>Geography included<\/td>\n<td>+2<\/td>\n<td>state present; city present when available<\/td>\n<\/tr>\n<tr>\n<td>Recency fields required in export<\/td>\n<td>+3<\/td>\n<td>email_recency_date and phone_recency_date included<\/td>\n<\/tr>\n<tr>\n<td>Suppression handling<\/td>\n<td>+5<\/td>\n<td>opt_out respected; suppressed contacts excluded from outreach lists<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p><strong>Routing rule:<\/strong> if you&#8217;re missing both NPI and license matching for a meaningful share of rows, don&#8217;t automate outreach from that export. Route those rows to review first.<\/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 starting points for recruiting outreach with clear opt-out handling. Customize to your workflow and always honor opt-out requests.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Email_template_initial\"><\/span>Email template (initial)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><strong>Subject:<\/strong> Quick question about your next role<\/p>\n<p><strong>Body:<\/strong><\/p>\n<p>Hi Dr. {{LastName}},<\/p>\n<p>I&#8217;m reaching out because we&#8217;re hiring for {{Role\/Specialty}} in {{State\/City}} and your background looks aligned. Are you open to a brief call this week?<\/p>\n<p>If you&#8217;d rather not receive messages like this, reply &#8220;opt out&#8221; and I&#8217;ll remove you.<\/p>\n<p>\u2014 {{YourName}}<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Gatekeeper_or_office_line_call_opener\"><\/span>Gatekeeper or office line call opener<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Hi \u2014 this is {{YourName}}. I&#8217;m trying to reach Dr. {{LastName}} about a recruiting opportunity. What&#8217;s the best way to get a message to them, or a better number to reach them directly?<\/p>\n<p>If they&#8217;d prefer not to be contacted, I&#8217;m happy to note an opt-out.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"SMS_template_only_where_compliant\"><\/span>SMS template (only where compliant)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Hi Dr. {{LastName}} \u2014 this is {{YourName}} (recruiting). Are you open to hearing about a {{Role}} opportunity in {{Location}}? Reply STOP to opt out.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Wrong-person_correction\"><\/span>Wrong-person correction<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Apologies \u2014 I may have reached the wrong {{LastName}}. I&#8217;ll remove this contact from my outreach. If you&#8217;d like, reply &#8220;opt out&#8221; and I&#8217;ll ensure you&#8217;re suppressed going forward.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Voicemail_template\"><\/span>Voicemail template<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Hi Dr. {{LastName}}, this is {{YourName}} calling about a {{Role}} opportunity in {{Location}}. If you&#8217;re open to a quick conversation, call me back at {{Number}}. If not, let me know and I&#8217;ll close the loop.<\/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=\"1_Treating_names_as_identifiers\"><\/span>1) Treating names as identifiers<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>In bulk, &#8220;John Smith&#8221; is not an identifier. Without NPI or license fields, assume collisions and build a review step.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"2_Dropping_recency_fields_during_import\"><\/span>2) Dropping recency fields during import<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Teams enrich, then strip recency when importing into the ATS or CRM. That removes your ability to segment outreach by freshness and troubleshoot bounces or connect issues later.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"3_No_suppression_layer_for_opt-out\"><\/span>3) No suppression layer for opt-out<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>If your bulk export doesn&#8217;t carry an opt-out flag \u2014 or you don&#8217;t enforce it \u2014 you&#8217;ll eventually message someone who already asked you to stop. Treat suppression as a hard gate, not a courtesy.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"4_Mixing_notes_into_identifier_columns\"><\/span>4) Mixing notes into identifier columns<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Putting &#8220;1234567890 (old)&#8221; in the NPI cell breaks matching and creates avoidable no-match rows. Keep identifiers clean and store notes in a separate column.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"5_Auto-accepting_fallback_matches\"><\/span>5) Auto-accepting fallback matches<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Name-plus-state matches can be useful for research, but they shouldn&#8217;t drive automated outreach. Those rows need manual verification.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Mini-case_the_%E2%80%9CInvalid_NPI%E2%80%9D_error_thats_really_a_spreadsheet_problem\"><\/span>Mini-case: the &#8220;Invalid NPI&#8221; error that&#8217;s really a spreadsheet problem<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>This comes up constantly: an ops team exports a CSV and the NPI column gets converted into scientific notation. The upload then flags &#8220;Invalid NPI,&#8221; or worse, you get mismatches because the identifier changed shape. The fix is simple \u2014 set the NPI column to text before export, then re-export as UTF-8 CSV and re-run the file.<\/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<h3><span class=\"ez-toc-section\" id=\"Improve_match_quality_without_slowing_the_team_down\"><\/span>Improve match quality without slowing the team down<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li><strong>Backfill NPI first:<\/strong> if your source system has NPI buried in notes, extract it into a dedicated npi column.<\/li>\n<li><strong>Add license matching fields:<\/strong> license_state plus license_number is your next best deterministic key when NPI is missing.<\/li>\n<li><strong>Keep organization when you have it:<\/strong> it&#8217;s a strong disambiguator for common names.<\/li>\n<li><strong>Store match_confidence and match_reason:<\/strong> so you can route work and audit outcomes later.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Dedupe_and_suppression_merge\"><\/span>Dedupe and suppression merge<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li><strong>Dedupe order:<\/strong> dedupe by npi first; if npi is missing, dedupe by license_state plus license_number.<\/li>\n<li><strong>Merge order:<\/strong> merge enrichment results back using source_system_id, then apply opt-out suppression before any send or dial export.<\/li>\n<li><strong>Audit:<\/strong> keep a run timestamp and the input filename so you can trace changes.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Measurement\"><\/span>Measurement<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Run a weekly scorecard segmented by match_confidence tier and recency bucket, then tie those segments to outreach outcomes.<\/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>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<li><strong>Reply Rate<\/strong> = replies \/ delivered emails (per 100 delivered emails)<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Workflow_fit_inside_Heartbeatai\"><\/span>Workflow fit inside Heartbeat.ai<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li>For spreadsheets: run bulk via <a href=\"https:\/\/heartbeat.ai\/upload-file\">upload file<\/a> and keep your header stable.<\/li>\n<li>For recurring pipelines: implement via the <a href=\"https:\/\/heartbeat.ai\/api\">API<\/a> and write results back to your ATS\/CRM.<\/li>\n<li>For enrichment strategy and validation concepts: see <a href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/physician-contact-enrichment\/\">physician contact enrichment<\/a>.<\/li>\n<\/ul>\n<p>For high-volume calling workflows, Heartbeat.ai supports ranked mobile numbers by answer probability, so your team starts with the most connectable attempts 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<p>Use bulk lookup for legitimate recruiting outreach with a clear purpose and respectful contact practices.<\/p>\n<ul>\n<li><strong>Consent:<\/strong> follow your organization&#8217;s policies and applicable laws for email, phone, and SMS outreach.<\/li>\n<li><strong>Opt-out:<\/strong> maintain a suppression list and enforce it on every export\/import cycle.<\/li>\n<li><strong>Data minimization:<\/strong> store only what you need for the recruiting workflow; don&#8217;t retain unnecessary personal data.<\/li>\n<li><strong>No legal advice:<\/strong> if you&#8217;re unsure about jurisdictional rules, ask counsel. Heartbeat does not provide legal counsel.<\/li>\n<\/ul>\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>For how we evaluate sources, data handling, and update practices, see our <a href=\"http:\/\/heartbeat.ai\/resources\/trust-methodology\/\">trust methodology<\/a>.<\/p>\n<p>For provider identity baselines and NPI reference, see the official registry: <a href=\"https:\/\/nppes.cms.hhs.gov\/\">NPPES (CMS) NPI Registry<\/a>. This is an identity baseline, not a contact directory.<\/p>\n<p>If you want a ready-to-import structure to reduce mapping errors, use the <a href=\"http:\/\/heartbeat.ai\/resources\/integrations-automation\/csv-import-template-physician-contacts\/\">CSV import template for physician contacts<\/a>.<\/p>\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_should_I_include_for_bulk_physician_lookup\"><\/span>What columns should I include for bulk physician lookup?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>At minimum include source_system_id plus either NPI or license_state and license_number. Add name, state, and organization to validate identity and resolve collisions.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Why_do_wrong_matches_happen_in_bulk\"><\/span>Why do wrong matches happen in bulk?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Wrong matches usually come from fallback matching (name plus geography) and common-name collisions. Set an acceptance policy: auto-accept exact NPI, review license matches, and manually verify name-only matches.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"How_should_I_handle_opt-out_in_a_bulk_workflow\"><\/span>How should I handle opt-out in a bulk workflow?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Carry an opt-out flag through export and import and enforce suppression before any outreach. Treat suppression as a hard gate, not a note for recruiters to remember.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Should_I_use_CSV_upload_or_the_API\"><\/span>Should I use CSV upload or the API?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Use CSV upload for one-off lists and quick ops runs. Use the API for recurring enrichment \u2014 new leads weekly, ATS stage changes, or automated refresh cycles.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"How_do_I_keep_results_fresh_over_time\"><\/span>How do I keep results fresh over time?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Store recency fields and refresh active pipelines on a schedule that matches your outreach cadence. Segment outreach by recency so older records don&#8217;t drag down deliverability and connect rates.<\/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>Prepare your file using the header above, then run it via <a href=\"https:\/\/heartbeat.ai\/upload-file\">bulk CSV upload<\/a>.<\/li>\n<li>Keep your imports consistent with the <a href=\"http:\/\/heartbeat.ai\/resources\/integrations-automation\/csv-import-template-physician-contacts\/\">CSV import template for physician contacts<\/a>.<\/li>\n<li>If you need automation, implement the pipeline with the <a href=\"https:\/\/heartbeat.ai\/api\">Heartbeat.ai API<\/a>.<\/li>\n<li>When you&#8217;re ready to run production volume, <a href=\"https:\/\/heartbeat.ai\/signup\">start free search &amp; preview data<\/a>.<\/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\":[\"bulk physician lookup\",\"CSV\",\"NPI\",\"license matching\",\"recency\",\"opt-out\"],\"author\":{\"@type\":\"Person\",\"jobTitle\":\"Founder & CEO of Heartbeat.ai\",\"name\":\"Ben Argeband\"},\"headline\":\"Bulk Physician Lookup (CSV + API): Columns, Matching, Validation, Output\",\"isAccessibleForFree\":true,\"mainEntityOfPage\":{\"@id\":\"https:\/\/heartbeat.ai\/resources\/provider-contact-data\/bulk-physician-lookup\/\",\"@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\":\"At minimum include source_system_id plus either NPI or (license_state + license_number). Add name, state, and organization to validate identity and resolve collisions.\"},\"name\":\"What columns should I include for bulk physician lookup?\"},{\"@type\":\"Question\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Wrong matches usually come from fallback matching (name + geography) and common-name collisions. Set an acceptance policy: auto-accept exact NPI, review license matches, and manually verify name-only matches.\"},\"name\":\"Why do wrong matches happen in bulk?\"},{\"@type\":\"Question\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Carry an opt-out flag through export\/import and enforce suppression before any outreach. Treat suppression as a hard gate, not a note for recruiters to remember.\"},\"name\":\"How should I handle opt-out in a bulk workflow?\"},{\"@type\":\"Question\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Use CSV upload for one-off lists and quick ops runs. Use the API for recurring enrichment (new leads weekly, ATS stage changes, or automated refresh cycles).\"},\"name\":\"Should I use CSV upload or the API?\"},{\"@type\":\"Question\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Store recency fields and refresh active pipelines on a schedule that matches your outreach cadence. Segment outreach by recency so older records don't drag down deliverability and connect rates.\"},\"name\":\"How do I keep results fresh over time?\"}]}<\/script><\/p>","protected":false},"excerpt":{"rendered":"<p>A practical CSV + API workflow for bulk physician lookup: columns, match confidence tiers, recency fields, and opt-out suppression before outreach.<\/p>","protected":false},"author":5,"featured_media":54308,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_custom_permalink":"provider-contact-data\/bulk-physician-lookup","footnotes":""},"categories":[1],"tags":[],"class_list":["post-54309","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>Bulk Physician Lookup (CSV + API) \u2014 Columns, Matching, Validation<\/title>\r\n<meta name=\"description\" content=\"Run bulk physician lookup via CSV upload or API. Get the exact CSV header, minimum columns (NPI or license), acceptance tiers, field mapping, review SOP, failure modes, and outreach templates.\" \/>\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\/bulk-physician-lookup\/\" \/>\r\n<meta property=\"og:locale\" content=\"en_US\" \/>\r\n<meta property=\"og:type\" content=\"article\" \/>\r\n<meta property=\"og:title\" content=\"Bulk Physician Lookup (CSV + API) \u2014 Columns, Matching, Validation\" \/>\r\n<meta property=\"og:description\" content=\"Run bulk physician lookup via CSV upload or API. Get the exact CSV header, minimum columns (NPI or license), acceptance tiers, field mapping, review SOP, failure modes, and outreach templates.\" \/>\r\n<meta property=\"og:url\" content=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/bulk-physician-lookup\/\" \/>\r\n<meta property=\"og:site_name\" content=\"Heartbeat.ai\" \/>\r\n<meta property=\"article:published_time\" content=\"2026-02-01T18:58:03+00:00\" \/>\r\n<meta property=\"article:modified_time\" content=\"2026-08-31T13:47:10+00:00\" \/>\r\n<meta property=\"og:image\" content=\"https:\/\/hc.heartbeat.ai\/wp-content\/uploads\/2026\/02\/bulk-physician-lookup-58b90638.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=\"14 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\\\/bulk-physician-lookup\\\/#article\",\"isPartOf\":{\"@id\":\"http:\\\/\\\/heartbeat.ai\\\/resources\\\/provider-contact-data\\\/bulk-physician-lookup\\\/\"},\"author\":{\"name\":\"Ben Argeband\",\"@id\":\"http:\\\/\\\/heartbeat.ai\\\/resources\\\/#\\\/schema\\\/person\\\/7b323ddce9b211907423482e2f9db173\"},\"headline\":\"Bulk Physician Lookup (CSV + API): Columns, Matching, Validation, Output\",\"datePublished\":\"2026-02-01T18:58:03+00:00\",\"dateModified\":\"2026-08-31T13:47:10+00:00\",\"mainEntityOfPage\":{\"@id\":\"http:\\\/\\\/heartbeat.ai\\\/resources\\\/provider-contact-data\\\/bulk-physician-lookup\\\/\"},\"wordCount\":2800,\"commentCount\":0,\"publisher\":{\"@id\":\"http:\\\/\\\/heartbeat.ai\\\/resources\\\/#organization\"},\"image\":{\"@id\":\"http:\\\/\\\/heartbeat.ai\\\/resources\\\/provider-contact-data\\\/bulk-physician-lookup\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/hc.heartbeat.ai\\\/wp-content\\\/uploads\\\/2026\\\/02\\\/bulk-physician-lookup-58b90638.png\",\"articleSection\":[\"News\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"http:\\\/\\\/heartbeat.ai\\\/resources\\\/provider-contact-data\\\/bulk-physician-lookup\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"http:\\\/\\\/heartbeat.ai\\\/resources\\\/provider-contact-data\\\/bulk-physician-lookup\\\/\",\"url\":\"http:\\\/\\\/heartbeat.ai\\\/resources\\\/provider-contact-data\\\/bulk-physician-lookup\\\/\",\"name\":\"Bulk Physician Lookup (CSV + API) \u2014 Columns, Matching, Validation\",\"isPartOf\":{\"@id\":\"http:\\\/\\\/heartbeat.ai\\\/resources\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"http:\\\/\\\/heartbeat.ai\\\/resources\\\/provider-contact-data\\\/bulk-physician-lookup\\\/#primaryimage\"},\"image\":{\"@id\":\"http:\\\/\\\/heartbeat.ai\\\/resources\\\/provider-contact-data\\\/bulk-physician-lookup\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/hc.heartbeat.ai\\\/wp-content\\\/uploads\\\/2026\\\/02\\\/bulk-physician-lookup-58b90638.png\",\"datePublished\":\"2026-02-01T18:58:03+00:00\",\"dateModified\":\"2026-08-31T13:47:10+00:00\",\"description\":\"Run bulk physician lookup via CSV upload or API. Get the exact CSV header, minimum columns (NPI or license), acceptance tiers, field mapping, review SOP, failure modes, and outreach templates.\",\"breadcrumb\":{\"@id\":\"http:\\\/\\\/heartbeat.ai\\\/resources\\\/provider-contact-data\\\/bulk-physician-lookup\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\\\/\\\/heartbeat.ai\\\/resources\\\/provider-contact-data\\\/bulk-physician-lookup\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"http:\\\/\\\/heartbeat.ai\\\/resources\\\/provider-contact-data\\\/bulk-physician-lookup\\\/#primaryimage\",\"url\":\"http:\\\/\\\/hc.heartbeat.ai\\\/wp-content\\\/uploads\\\/2026\\\/02\\\/bulk-physician-lookup-58b90638.png\",\"contentUrl\":\"http:\\\/\\\/hc.heartbeat.ai\\\/wp-content\\\/uploads\\\/2026\\\/02\\\/bulk-physician-lookup-58b90638.png\",\"width\":1024,\"height\":1024},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\\\/\\\/heartbeat.ai\\\/resources\\\/provider-contact-data\\\/bulk-physician-lookup\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"http:\\\/\\\/heartbeat.ai\\\/resources\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Bulk Physician Lookup (CSV + API): Columns, Matching, Validation, Output\"}]},{\"@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":"Bulk Physician Lookup (CSV + API) \u2014 Columns, Matching, Validation","description":"Run bulk physician lookup via CSV upload or API. Get the exact CSV header, minimum columns (NPI or license), acceptance tiers, field mapping, review SOP, failure modes, and outreach templates.","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\/bulk-physician-lookup\/","og_locale":"en_US","og_type":"article","og_title":"Bulk Physician Lookup (CSV + API) \u2014 Columns, Matching, Validation","og_description":"Run bulk physician lookup via CSV upload or API. Get the exact CSV header, minimum columns (NPI or license), acceptance tiers, field mapping, review SOP, failure modes, and outreach templates.","og_url":"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/bulk-physician-lookup\/","og_site_name":"Heartbeat.ai","article_published_time":"2026-02-01T18:58:03+00:00","article_modified_time":"2026-08-31T13:47:10+00:00","og_image":[{"width":1024,"height":1024,"url":"https:\/\/hc.heartbeat.ai\/wp-content\/uploads\/2026\/02\/bulk-physician-lookup-58b90638.png","type":"image\/png"}],"author":"Ben Argeband","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Ben Argeband","Est. reading time":"14 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/bulk-physician-lookup\/#article","isPartOf":{"@id":"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/bulk-physician-lookup\/"},"author":{"name":"Ben Argeband","@id":"http:\/\/heartbeat.ai\/resources\/#\/schema\/person\/7b323ddce9b211907423482e2f9db173"},"headline":"Bulk Physician Lookup (CSV + API): Columns, Matching, Validation, Output","datePublished":"2026-02-01T18:58:03+00:00","dateModified":"2026-08-31T13:47:10+00:00","mainEntityOfPage":{"@id":"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/bulk-physician-lookup\/"},"wordCount":2800,"commentCount":0,"publisher":{"@id":"http:\/\/heartbeat.ai\/resources\/#organization"},"image":{"@id":"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/bulk-physician-lookup\/#primaryimage"},"thumbnailUrl":"http:\/\/hc.heartbeat.ai\/wp-content\/uploads\/2026\/02\/bulk-physician-lookup-58b90638.png","articleSection":["News"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["http:\/\/heartbeat.ai\/resources\/provider-contact-data\/bulk-physician-lookup\/#respond"]}]},{"@type":"WebPage","@id":"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/bulk-physician-lookup\/","url":"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/bulk-physician-lookup\/","name":"Bulk Physician Lookup (CSV + API) \u2014 Columns, Matching, Validation","isPartOf":{"@id":"http:\/\/heartbeat.ai\/resources\/#website"},"primaryImageOfPage":{"@id":"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/bulk-physician-lookup\/#primaryimage"},"image":{"@id":"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/bulk-physician-lookup\/#primaryimage"},"thumbnailUrl":"http:\/\/hc.heartbeat.ai\/wp-content\/uploads\/2026\/02\/bulk-physician-lookup-58b90638.png","datePublished":"2026-02-01T18:58:03+00:00","dateModified":"2026-08-31T13:47:10+00:00","description":"Run bulk physician lookup via CSV upload or API. Get the exact CSV header, minimum columns (NPI or license), acceptance tiers, field mapping, review SOP, failure modes, and outreach templates.","breadcrumb":{"@id":"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/bulk-physician-lookup\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["http:\/\/heartbeat.ai\/resources\/provider-contact-data\/bulk-physician-lookup\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/bulk-physician-lookup\/#primaryimage","url":"http:\/\/hc.heartbeat.ai\/wp-content\/uploads\/2026\/02\/bulk-physician-lookup-58b90638.png","contentUrl":"http:\/\/hc.heartbeat.ai\/wp-content\/uploads\/2026\/02\/bulk-physician-lookup-58b90638.png","width":1024,"height":1024},{"@type":"BreadcrumbList","@id":"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/bulk-physician-lookup\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"http:\/\/heartbeat.ai\/resources\/"},{"@type":"ListItem","position":2,"name":"Bulk Physician Lookup (CSV + API): Columns, Matching, Validation, Output"}]},{"@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\/54309","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=54309"}],"version-history":[{"count":2,"href":"http:\/\/heartbeat.ai\/resources\/wp-json\/wp\/v2\/posts\/54309\/revisions"}],"predecessor-version":[{"id":66211,"href":"http:\/\/heartbeat.ai\/resources\/wp-json\/wp\/v2\/posts\/54309\/revisions\/66211"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/heartbeat.ai\/resources\/wp-json\/wp\/v2\/media\/54308"}],"wp:attachment":[{"href":"http:\/\/heartbeat.ai\/resources\/wp-json\/wp\/v2\/media?parent=54309"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/heartbeat.ai\/resources\/wp-json\/wp\/v2\/categories?post=54309"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/heartbeat.ai\/resources\/wp-json\/wp\/v2\/tags?post=54309"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}