{"id":54315,"date":"2026-02-01T12:59:00","date_gmt":"2026-02-01T18:59:00","guid":{"rendered":"https:\/\/heartbeat.ai\/healthcare\/csv-import-template-physician-contacts\/"},"modified":"2026-02-27T13:34:40","modified_gmt":"2026-02-27T19:34:40","slug":"csv-import-template-physician-contacts","status":"publish","type":"post","link":"http:\/\/heartbeat.ai\/resources\/integrations-automation\/csv-import-template-physician-contacts\/","title":{"rendered":"CSV import template for physician contacts (ATS-ready header + NPI dedupe rules)"},"content":{"rendered":"<p><img decoding=\"async\" loading=\"false\" class=\"aligncenter\" src=\"http:\/\/hc.heartbeat.ai\/wp-content\/webp-express\/webp-images\/uploads\/2026\/02\/csv-import-template-physician-contacts-d2f48942.png.webp\" alt=\"54314\" \/><\/p>\n<h1>CSV import template for physician contacts (ATS-ready header + NPI dedupe rules)<\/h1>\n<p><strong>Ben Argeband, Founder &amp; CEO of Heartbeat.ai<\/strong> \u2014 Painfully clear and copy\/paste ready.<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_65 counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\r\n<div class=\"ez-toc-title-container\">\r\n<p class=\"ez-toc-title\" >What&rsquo;s on this page:<\/p>\r\n<span class=\"ez-toc-title-toggle\"><\/span><\/div>\r\n<nav><ul class='ez-toc-list ez-toc-list-level-1' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"http:\/\/heartbeat.ai\/resources\/integrations-automation\/csv-import-template-physician-contacts\/#Who_this_is_for\" title=\"Who this is for\">Who this is for<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"http:\/\/heartbeat.ai\/resources\/integrations-automation\/csv-import-template-physician-contacts\/#Quick_Answer\" title=\"Quick Answer\">Quick Answer<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"http:\/\/heartbeat.ai\/resources\/integrations-automation\/csv-import-template-physician-contacts\/#Framework_The_%E2%80%9CNo_Mess_Imports%E2%80%9D_Standard_Unique_Key_%E2%86%92_Clean_Fields_%E2%86%92_Log_Dates\" title=\"Framework: The \u201cNo Mess Imports\u201d Standard: Unique Key \u2192 Clean Fields \u2192 Log Dates\">Framework: The \u201cNo Mess Imports\u201d Standard: Unique Key \u2192 Clean Fields \u2192 Log Dates<\/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\/integrations-automation\/csv-import-template-physician-contacts\/#Step-by-step_method\" title=\"Step-by-step method\">Step-by-step method<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"http:\/\/heartbeat.ai\/resources\/integrations-automation\/csv-import-template-physician-contacts\/#Step_1_Start_with_the_exact_header_row_copypaste\" title=\"Step 1) Start with the exact header row (copy\/paste)\">Step 1) Start with the exact header row (copy\/paste)<\/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\/integrations-automation\/csv-import-template-physician-contacts\/#Step_2_Use_the_field_definitions_dont_improvise_formats\" title=\"Step 2) Use the field definitions (don\u2019t improvise formats)\">Step 2) Use the field definitions (don\u2019t improvise formats)<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"http:\/\/heartbeat.ai\/resources\/integrations-automation\/csv-import-template-physician-contacts\/#Diagnostic_Table\" title=\"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-8\" href=\"http:\/\/heartbeat.ai\/resources\/integrations-automation\/csv-import-template-physician-contacts\/#Step_3_Set_your_dedupe_policy_before_you_import\" title=\"Step 3) Set your dedupe policy before you import\">Step 3) Set your dedupe policy before you import<\/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\/integrations-automation\/csv-import-template-physician-contacts\/#Step_4_Map_fields_into_Bullhorn_Apploi_pilot_first\" title=\"Step 4) Map fields into Bullhorn \/ Apploi (pilot first)\">Step 4) Map fields into Bullhorn \/ Apploi (pilot first)<\/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\/integrations-automation\/csv-import-template-physician-contacts\/#Step_5_Run_a_pre-import_validation_pass\" title=\"Step 5) Run a pre-import validation pass\">Step 5) Run a pre-import validation pass<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"http:\/\/heartbeat.ai\/resources\/integrations-automation\/csv-import-template-physician-contacts\/#Weighted_Checklist\" title=\"Weighted Checklist:\">Weighted Checklist:<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"http:\/\/heartbeat.ai\/resources\/integrations-automation\/csv-import-template-physician-contacts\/#Common_pitfalls\" title=\"Common pitfalls\">Common pitfalls<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"http:\/\/heartbeat.ai\/resources\/integrations-automation\/csv-import-template-physician-contacts\/#Pitfall_1_Treating_emailphone_as_the_unique_key\" title=\"Pitfall 1: Treating email\/phone as the unique key\">Pitfall 1: Treating email\/phone as the unique key<\/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\/integrations-automation\/csv-import-template-physician-contacts\/#Pitfall_2_No_refresh_date_you_cant_tell_whats_stale\" title=\"Pitfall 2: No refresh_date (you can\u2019t tell what\u2019s stale)\">Pitfall 2: No refresh_date (you can\u2019t tell what\u2019s stale)<\/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\/integrations-automation\/csv-import-template-physician-contacts\/#Pitfall_3_Multi-value_fields_that_break_parsing\" title=\"Pitfall 3: Multi-value fields that break parsing\">Pitfall 3: Multi-value fields that break parsing<\/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\/integrations-automation\/csv-import-template-physician-contacts\/#Pitfall_4_Importing_the_full_file_without_a_pilot\" title=\"Pitfall 4: Importing the full file without a pilot\">Pitfall 4: Importing the full file without a pilot<\/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\/integrations-automation\/csv-import-template-physician-contacts\/#Pitfall_5_Overwriting_opt-outs_on_re-import\" title=\"Pitfall 5: Overwriting opt-outs on re-import\">Pitfall 5: Overwriting opt-outs on re-import<\/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\/integrations-automation\/csv-import-template-physician-contacts\/#Import_error_decoder_symptom_%E2%86%92_cause_%E2%86%92_fix\" title=\"Import error decoder (symptom \u2192 cause \u2192 fix)\">Import error decoder (symptom \u2192 cause \u2192 fix)<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-19\" href=\"http:\/\/heartbeat.ai\/resources\/integrations-automation\/csv-import-template-physician-contacts\/#How_to_improve_results\" title=\"How to improve results\">How to improve results<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-20\" href=\"http:\/\/heartbeat.ai\/resources\/integrations-automation\/csv-import-template-physician-contacts\/#CSV_TEMPLATE_worksheet_import-ready_row_validator\" title=\"CSV_TEMPLATE worksheet: import-ready row validator\">CSV_TEMPLATE worksheet: import-ready row validator<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-21\" href=\"http:\/\/heartbeat.ai\/resources\/integrations-automation\/csv-import-template-physician-contacts\/#If_your_ATS_cant_update_records_by_NPI\" title=\"If your ATS can\u2019t update records by NPI\">If your ATS can\u2019t update records by NPI<\/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\/integrations-automation\/csv-import-template-physician-contacts\/#Track_the_right_metrics_and_define_them_consistently\" title=\"Track the right metrics (and define them consistently)\">Track the right metrics (and define them consistently)<\/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\/integrations-automation\/csv-import-template-physician-contacts\/#Suppression_SOP_so_you_dont_re-contact_opt-outs\" title=\"Suppression SOP (so you don\u2019t re-contact opt-outs)\">Suppression SOP (so you don\u2019t re-contact opt-outs)<\/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\/integrations-automation\/csv-import-template-physician-contacts\/#Use_NPI_to_keep_your_ATS_clean_across_re-imports\" title=\"Use NPI to keep your ATS clean across re-imports\">Use NPI to keep your ATS clean across re-imports<\/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\/integrations-automation\/csv-import-template-physician-contacts\/#Outreach_Templates\" title=\"Outreach Templates:\">Outreach Templates:<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-26\" href=\"http:\/\/heartbeat.ai\/resources\/integrations-automation\/csv-import-template-physician-contacts\/#Template_1_Phone_opener_office_line\" title=\"Template 1: Phone opener (office line)\">Template 1: Phone opener (office line)<\/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\/integrations-automation\/csv-import-template-physician-contacts\/#Template_2_Email_work_email\" title=\"Template 2: Email (work email)\">Template 2: Email (work email)<\/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\/integrations-automation\/csv-import-template-physician-contacts\/#Template_3_Follow-up_after_no_response\" title=\"Template 3: Follow-up (after no response)\">Template 3: Follow-up (after no response)<\/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\/integrations-automation\/csv-import-template-physician-contacts\/#Legal_and_ethical_use\" title=\"Legal and ethical use\">Legal and ethical use<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-30\" href=\"http:\/\/heartbeat.ai\/resources\/integrations-automation\/csv-import-template-physician-contacts\/#Evidence_and_trust_notes\" title=\"Evidence and trust notes\">Evidence and trust notes<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-31\" href=\"http:\/\/heartbeat.ai\/resources\/integrations-automation\/csv-import-template-physician-contacts\/#FAQs\" title=\"FAQs\">FAQs<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-32\" href=\"http:\/\/heartbeat.ai\/resources\/integrations-automation\/csv-import-template-physician-contacts\/#Whats_the_minimum_set_of_columns_I_need_for_a_clean_import\" title=\"What\u2019s the minimum set of columns I need for a clean import?\">What\u2019s the minimum set of columns I need for a clean import?<\/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\/integrations-automation\/csv-import-template-physician-contacts\/#Why_is_NPI_the_best_dedupe_key_for_physicians\" title=\"Why is NPI the best dedupe key for physicians?\">Why is NPI the best dedupe key for physicians?<\/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\/integrations-automation\/csv-import-template-physician-contacts\/#How_should_I_format_phone_numbers_in_the_CSV\" title=\"How should I format phone numbers in the CSV?\">How should I format phone numbers in the CSV?<\/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\/integrations-automation\/csv-import-template-physician-contacts\/#What_should_I_do_when_two_rows_share_the_same_NPI_but_different_phonesemails\" title=\"What should I do when two rows share the same NPI but different phones\/emails?\">What should I do when two rows share the same NPI but different phones\/emails?<\/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\/integrations-automation\/csv-import-template-physician-contacts\/#How_do_I_avoid_breaking_my_ATS_with_duplicates_on_re-import\" title=\"How do I avoid breaking my ATS with duplicates on re-import?\">How do I avoid breaking my ATS with duplicates on re-import?<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-37\" href=\"http:\/\/heartbeat.ai\/resources\/integrations-automation\/csv-import-template-physician-contacts\/#Next_steps\" title=\"Next steps\">Next steps<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-38\" href=\"http:\/\/heartbeat.ai\/resources\/integrations-automation\/csv-import-template-physician-contacts\/#About_the_Author\" title=\"About the Author\">About the Author<\/a><\/li><\/ul><\/nav><\/div>\r\n<h2><span class=\"ez-toc-section\" id=\"Who_this_is_for\"><\/span>Who this is for<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Recruiters and ops teams importing physician contact data into an <strong>ATS<\/strong> who need clean records: no duplicate providers, no broken date\/boolean fields, and clear provenance (where each row came from). This is built around <strong>CSV<\/strong> hygiene, <strong>NPI<\/strong>-first identity, and <strong>recency<\/strong> tracking so your outreach performance doesn\u2019t quietly decay.<\/p>\n<p>This page is a supporting template. For enrichment after upload, use the primary workflow: <a href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/\">upload a physician list for enrichment<\/a>.<\/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>Use an NPI-first CSV with normalized phones\/emails, explicit source + refresh date, and strict dedupe keys so your ATS import stays clean and searchable.<\/dd>\n<dt>Key Statistic<\/dt>\n<dd>Heartbeat observed typicals: include required header and mapping; do not claim native ATS integrations unless true.<\/dd>\n<dt>Best For<\/dt>\n<dd>Recruiters\/ops importing physician contact data into ATS without duplicates\/broken fields.<\/dd>\n<dt>Primary page for this topic<\/dt>\n<dd><a href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/\">https:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/<\/a><\/dd>\n<\/dl>\n<blockquote>\n<p><strong>Compliance &amp; Safety<\/strong><\/p>\n<p>This method is for legitimate recruiting outreach only. Always respect candidate privacy, opt-out requests, and local data laws. Heartbeat does not provide medical advice or legal counsel.<\/p>\n<\/blockquote>\n<h2><span class=\"ez-toc-section\" id=\"Framework_The_%E2%80%9CNo_Mess_Imports%E2%80%9D_Standard_Unique_Key_%E2%86%92_Clean_Fields_%E2%86%92_Log_Dates\"><\/span>Framework: The \u201cNo Mess Imports\u201d Standard: Unique Key \u2192 Clean Fields \u2192 Log Dates<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Most import failures aren\u2019t \u201cCSV problems.\u201d They\u2019re identity problems (no stable unique key), format problems (inconsistent fields), and freshness problems (no way to tell what\u2019s current). The \u201cNo Mess Imports\u201d Standard fixes those in order:<\/p>\n<ul>\n<li><strong>Unique Key<\/strong>: pick one field that represents the provider across systems. For physicians, that\u2019s usually <strong>NPI<\/strong>.<\/li>\n<li><strong>Clean Fields<\/strong>: normalize names, phones, emails, and addresses so your ATS doesn\u2019t split records or reject rows.<\/li>\n<li><strong>Log Dates<\/strong>: store a refresh date so you can suppress stale contacts and prioritize recent ones.<\/li>\n<\/ul>\n<p>The trade-off is\u2026 you\u2019ll spend a few minutes up front on structure, but you\u2019ll avoid contaminating your ATS with duplicates you can\u2019t unwind later.<\/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_Start_with_the_exact_header_row_copypaste\"><\/span>Step 1) Start with the exact header row (copy\/paste)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Paste this header row into row 1 of your CSV. Keep the column names exactly as written to reduce mapping mistakes.<\/p>\n<p><strong>Spreadsheet setup tip:<\/strong> set <strong>NPI<\/strong> and <strong>postal_code<\/strong> columns to <strong>text<\/strong> before you save\/export so leading zeros don\u2019t get dropped.<\/p>\n<p><strong>Copy\/paste CSV header:<\/strong><\/p>\n<p>NPI,first_name,last_name,credential,specialty_primary,organization_name,practice_site_name,address_line1,address_line2,city,state,postal_code,country,phone_main,phone_mobile,email_work,email_personal,preferred_contact_channel,do_not_contact,source_system,source_detail,refresh_date,notes<\/p>\n<p><strong>Example row (synthetic):<\/strong><\/p>\n<p>1234567890,Priya,Shah,MD,Internal Medicine,Northside Medical Group,Northside Clinic &#8211; Midtown,123 Main St,Ste 400,Chicago,IL,02110,US,+13125551212,+13125559876,pshah@northside.org,,phone,FALSE,Heartbeat.ai,IM Midwest outreach list,2026-01-05,Prefers calls 12-2pm local<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Step_2_Use_the_field_definitions_dont_improvise_formats\"><\/span>Step 2) Use the field definitions (don\u2019t improvise formats)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Imports break when the same \u201ctype\u201d of data shows up in multiple formats (dates, phones, booleans). Use the definitions below and enforce them before you import.<\/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>Column<\/th>\n<th>Required?<\/th>\n<th>Definition \/ Allowed values<\/th>\n<th>Example<\/th>\n<th>ATS mapping notes (Bullhorn \/ Apploi)<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>NPI<\/td>\n<td><strong>Yes<\/strong><\/td>\n<td><strong>NPI definition:<\/strong> National Provider Identifier; a unique 10-digit identifier for covered health care providers in the U.S. Store as 10 digits, no dashes.<\/td>\n<td>1234567890<\/td>\n<td>Map to a custom field if your ATS doesn\u2019t have a native NPI field. Use as your primary dedupe key.<\/td>\n<\/tr>\n<tr>\n<td>first_name<\/td>\n<td>Yes<\/td>\n<td>Given name only. No titles.<\/td>\n<td>Priya<\/td>\n<td>Standard candidate\/contact first name.<\/td>\n<\/tr>\n<tr>\n<td>last_name<\/td>\n<td>Yes<\/td>\n<td>Family name only. No suffixes unless your ATS requires them.<\/td>\n<td>Shah<\/td>\n<td>Standard candidate\/contact last name.<\/td>\n<\/tr>\n<tr>\n<td>credential<\/td>\n<td>No<\/td>\n<td>Short credential string.<\/td>\n<td>MD<\/td>\n<td>Often maps to \u201cSuffix\u201d or \u201cCredential\u201d custom field.<\/td>\n<\/tr>\n<tr>\n<td>specialty_primary<\/td>\n<td>No<\/td>\n<td>One specialty only (avoid comma-separated lists).<\/td>\n<td>Internal Medicine<\/td>\n<td>Map to specialty field or tags. Keep one value for filtering.<\/td>\n<\/tr>\n<tr>\n<td>organization_name<\/td>\n<td>No<\/td>\n<td>Employer\/health system\/group name.<\/td>\n<td>Northside Medical Group<\/td>\n<td>Map to \u201cCompany\u201d or \u201cEmployer\u201d field if available.<\/td>\n<\/tr>\n<tr>\n<td>practice_site_name<\/td>\n<td>No<\/td>\n<td>Clinic\/site label (optional).<\/td>\n<td>Northside Clinic &#8211; Midtown<\/td>\n<td>Useful for multi-site groups; map to location\/site custom field.<\/td>\n<\/tr>\n<tr>\n<td>address_line1<\/td>\n<td>No<\/td>\n<td>Street address line 1.<\/td>\n<td>123 Main St<\/td>\n<td>Map to address fields if your ATS supports them; otherwise store in notes.<\/td>\n<\/tr>\n<tr>\n<td>address_line2<\/td>\n<td>No<\/td>\n<td>Suite\/unit.<\/td>\n<td>Ste 400<\/td>\n<td>Same as above.<\/td>\n<\/tr>\n<tr>\n<td>city<\/td>\n<td>No<\/td>\n<td>City.<\/td>\n<td>Chicago<\/td>\n<td>Standard address mapping.<\/td>\n<\/tr>\n<tr>\n<td>state<\/td>\n<td>No<\/td>\n<td>2-letter state code if U.S.<\/td>\n<td>IL<\/td>\n<td>Standard address mapping.<\/td>\n<\/tr>\n<tr>\n<td>postal_code<\/td>\n<td>No<\/td>\n<td>ZIP or postal code as text (preserve leading zeros).<\/td>\n<td>02110<\/td>\n<td>Import as text, not number.<\/td>\n<\/tr>\n<tr>\n<td>country<\/td>\n<td>No<\/td>\n<td>Country name or ISO code; be consistent.<\/td>\n<td>US<\/td>\n<td>Optional unless you recruit internationally.<\/td>\n<\/tr>\n<tr>\n<td>phone_main<\/td>\n<td>No<\/td>\n<td>Primary office line. Store as E.164 if possible (+1XXXXXXXXXX). If not, digits only.<\/td>\n<td>+13125551212<\/td>\n<td>Map to \u201cPhone\u201d or \u201cWork Phone.\u201d Avoid mixing extensions into the number field.<\/td>\n<\/tr>\n<tr>\n<td>phone_mobile<\/td>\n<td>No<\/td>\n<td>Mobile number (E.164 preferred). Keep separate from office line.<\/td>\n<td>+13125559876<\/td>\n<td>Map to \u201cMobile Phone\u201d if available; otherwise custom field. Heartbeat.ai can use ranked mobile numbers by answer probability.<\/td>\n<\/tr>\n<tr>\n<td>email_work<\/td>\n<td>No<\/td>\n<td>Work email. Lowercase. One email per field.<\/td>\n<td>pshah@northside.org<\/td>\n<td>Map to primary email if you prioritize work outreach.<\/td>\n<\/tr>\n<tr>\n<td>email_personal<\/td>\n<td>No<\/td>\n<td>Personal email (only if you have a legitimate recruiting purpose and honor opt-outs). Lowercase.<\/td>\n<td>priya.shah@gmail.com<\/td>\n<td>Consider mapping to secondary email\/custom field; apply suppression rules.<\/td>\n<\/tr>\n<tr>\n<td>preferred_contact_channel<\/td>\n<td>No<\/td>\n<td>One of: phone,email,unknown<\/td>\n<td>phone<\/td>\n<td>Map to a tag or custom field; helps routing and cadence selection.<\/td>\n<\/tr>\n<tr>\n<td>do_not_contact<\/td>\n<td>No<\/td>\n<td>Boolean: TRUE or FALSE (uppercase). Default FALSE.<\/td>\n<td>FALSE<\/td>\n<td>Map to your ATS DNC\/opt-out field if available. Never overwrite TRUE with FALSE.<\/td>\n<\/tr>\n<tr>\n<td>source_system<\/td>\n<td>No<\/td>\n<td>Where the row came from (system name).<\/td>\n<td>Heartbeat.ai<\/td>\n<td>Map to \u201cSource\u201d or custom field for auditability.<\/td>\n<\/tr>\n<tr>\n<td>source_detail<\/td>\n<td>No<\/td>\n<td>Free text: list name, campaign, or query used. If it includes commas, ensure proper CSV quoting.<\/td>\n<td>IM Midwest outreach list<\/td>\n<td>Store for traceability when complaints or bounces happen.<\/td>\n<\/tr>\n<tr>\n<td>refresh_date<\/td>\n<td><strong>Yes<\/strong><\/td>\n<td><strong>Recency definition:<\/strong> the date you last verified\/updated the contact row. Use ISO format YYYY-MM-DD.<\/td>\n<td>2026-01-05<\/td>\n<td>Map to \u201cLast Updated\u201d custom field. Use it to suppress stale contacts.<\/td>\n<\/tr>\n<tr>\n<td>notes<\/td>\n<td>No<\/td>\n<td>Short notes. If notes include commas, ensure your CSV exporter properly quotes the field.<\/td>\n<td>Prefers calls 12-2pm local<\/td>\n<td>Map to notes\/comments field.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"Step_3_Set_your_dedupe_policy_before_you_import\"><\/span>Step 3) Set your dedupe policy before you import<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Import failures come from inconsistent fields and missing unique keys. For physicians, <strong>NPI is the best primary key<\/strong>. Emails and phones are volatile: people change employers, domains change, and numbers get reassigned. Your dedupe policy should reflect that reality.<\/p>\n<ul>\n<li><strong>Primary dedupe key:<\/strong> NPI<\/li>\n<li><strong>Secondary match signals (for review, not auto-merge):<\/strong> last_name + first_name + state, or email_work<\/li>\n<li><strong>Never auto-merge solely on phone or email<\/strong> (they can be shared, forwarded, or recycled)<\/li>\n<\/ul>\n<p>For a deeper walkthrough, link this into your SOP: <a href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/how-to-dedupe-a-provider-list-npi\/\">how to dedupe a provider list by NPI<\/a>.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Step_4_Map_fields_into_Bullhorn_Apploi_pilot_first\"><\/span>Step 4) Map fields into Bullhorn \/ Apploi (pilot first)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Two rules keep your ATS usable:<\/p>\n<ul>\n<li><strong>Don\u2019t overload one field<\/strong> (for example, multiple emails in one email field). Keep one value per field.<\/li>\n<li><strong>Keep structured data structured<\/strong> (dates as YYYY-MM-DD, booleans as TRUE\/FALSE, state as 2-letter code).<\/li>\n<\/ul>\n<p>Do a 10-row pilot import, verify how Bullhorn\/Apploi stored each field, then import the full file.<\/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>CSV column<\/th>\n<th>Bullhorn target<\/th>\n<th>Apploi target<\/th>\n<th>Field type<\/th>\n<th>Common failure mode<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>NPI<\/td>\n<td>Custom text field (e.g., NPI__c)<\/td>\n<td>Custom field (text)<\/td>\n<td>Text<\/td>\n<td>Imported as number and loses leading zeros (treat as text)<\/td>\n<\/tr>\n<tr>\n<td>refresh_date<\/td>\n<td>Custom date field<\/td>\n<td>Custom field (date)<\/td>\n<td>Date<\/td>\n<td>Rejected due to non-ISO formats (use YYYY-MM-DD)<\/td>\n<\/tr>\n<tr>\n<td>do_not_contact<\/td>\n<td>DNC\/opt-out field (or custom boolean)<\/td>\n<td>Opt-out field (or custom boolean)<\/td>\n<td>Boolean<\/td>\n<td>TRUE\/FALSE mismatch (don\u2019t use Yes\/No)<\/td>\n<\/tr>\n<tr>\n<td>phone_main<\/td>\n<td>Phone (work)<\/td>\n<td>Phone<\/td>\n<td>Text<\/td>\n<td>Extensions included in number field (put ext in notes)<\/td>\n<\/tr>\n<tr>\n<td>phone_mobile<\/td>\n<td>Mobile phone (or custom)<\/td>\n<td>Mobile phone (or custom)<\/td>\n<td>Text<\/td>\n<td>Mobile overwritten by office line due to single phone mapping<\/td>\n<\/tr>\n<tr>\n<td>email_work<\/td>\n<td>Email<\/td>\n<td>Email<\/td>\n<td>Text<\/td>\n<td>Multiple emails in one cell causing parse issues<\/td>\n<\/tr>\n<tr>\n<td>source_system<\/td>\n<td>Source\/custom<\/td>\n<td>Source\/custom<\/td>\n<td>Text<\/td>\n<td>Missing provenance makes complaints hard to investigate<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>If you\u2019re using Heartbeat.ai workflows, you can also start from your existing file and upload it for enrichment: <a href=\"https:\/\/heartbeat.ai\/upload-file\">upload your file<\/a>.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Step_5_Run_a_pre-import_validation_pass\"><\/span>Step 5) Run a pre-import validation pass<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ol>\n<li><strong>Check NPI format:<\/strong> 10 digits, no blanks for rows you intend to dedupe reliably.<\/li>\n<li><strong>Normalize emails:<\/strong> lowercase; remove spaces; one email per field.<\/li>\n<li><strong>Normalize phones:<\/strong> pick E.164 (+1\u2026) or digits-only and stick to it.<\/li>\n<li><strong>Validate refresh_date:<\/strong> ISO YYYY-MM-DD only.<\/li>\n<li><strong>Confirm do_not_contact:<\/strong> TRUE\/FALSE only; never overwrite TRUE with FALSE on re-import.<\/li>\n<\/ol>\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 as a go\/no-go gate before you import. Score each item 0 (missing), 1 (partial), 2 (clean). If you\u2019re under 12\/16, fix the file first.<\/p>\n<ul>\n<li><strong>(2) NPI present and 10-digit<\/strong> for the rows you plan to keep long-term.<\/li>\n<li><strong>(2) Dedupe rule written<\/strong>: \u201cNPI = unique; never auto-merge on phone\/email.\u201d<\/li>\n<li><strong>(2) refresh_date populated<\/strong> for every row (YYYY-MM-DD).<\/li>\n<li><strong>(2) Phone split<\/strong>: office vs mobile in separate columns.<\/li>\n<li><strong>(2) Email split<\/strong>: work vs personal in separate columns.<\/li>\n<li><strong>(2) do_not_contact respected<\/strong>: TRUE never overwritten by FALSE on re-import.<\/li>\n<li><strong>(2) Source traceability<\/strong>: source_system + source_detail filled in.<\/li>\n<li><strong>(2) ATS field mapping tested<\/strong> with a 10-row pilot import and rollback plan.<\/li>\n<\/ul>\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_emailphone_as_the_unique_key\"><\/span>Pitfall 1: Treating email\/phone as the unique key<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Emails and phones change. If you dedupe on them, you\u2019ll either merge the wrong people or create duplicates when a physician changes systems. Use <strong>NPI<\/strong> as the stable identity key and treat contact points as attributes that can rotate.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Pitfall_2_No_refresh_date_you_cant_tell_whats_stale\"><\/span>Pitfall 2: No refresh_date (you can\u2019t tell what\u2019s stale)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>If you don\u2019t store <strong>recency<\/strong>, you can\u2019t suppress old contacts, and your team will waste cycles on dead emails and wrong numbers. Add refresh_date to every row and keep it updated when you re-verify.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Pitfall_3_Multi-value_fields_that_break_parsing\"><\/span>Pitfall 3: Multi-value fields that break parsing<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Comma-separated specialties, multiple emails in one cell, or \u201c(312) 555-1212 ext 9\u201d inside a phone field will cause import errors or make your ATS search unreliable. Keep one value per field and store extensions\/notes separately.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Pitfall_4_Importing_the_full_file_without_a_pilot\"><\/span>Pitfall 4: Importing the full file without a pilot<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>The fastest way to create a cleanup project is to import the full file before you confirm mapping. Do a 10-row pilot, verify how your ATS stored each field, then import the full file.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Pitfall_5_Overwriting_opt-outs_on_re-import\"><\/span>Pitfall 5: Overwriting opt-outs on re-import<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>If your ATS has a do-not-contact flag, treat it as write-protected. Your import process should never flip TRUE back to FALSE because a source file didn\u2019t carry the opt-out forward.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Import_error_decoder_symptom_%E2%86%92_cause_%E2%86%92_fix\"><\/span>Import error decoder (symptom \u2192 cause \u2192 fix)<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>Symptom<\/th>\n<th>Likely cause<\/th>\n<th>Fix<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>refresh_date rejected<\/td>\n<td>Date not in YYYY-MM-DD<\/td>\n<td>Convert to ISO format; ensure the column is mapped as a date field<\/td>\n<\/tr>\n<tr>\n<td>ZIP\/postal_code loses leading zeros<\/td>\n<td>Spreadsheet saved it as a number<\/td>\n<td>Set the column to text before saving; keep postal_code as text in the ATS<\/td>\n<\/tr>\n<tr>\n<td>Duplicates created on re-import<\/td>\n<td>No match key (or ATS match not configured)<\/td>\n<td>Match\/update on NPI; quarantine rows missing NPI for review<\/td>\n<\/tr>\n<tr>\n<td>Phone fields look scrambled<\/td>\n<td>Extensions or multiple numbers in one cell<\/td>\n<td>Keep one number per field; put extensions in notes<\/td>\n<\/tr>\n<tr>\n<td>Emails bounce immediately<\/td>\n<td>Stale contacts or typos\/spaces<\/td>\n<td>Lowercase + trim; use refresh_date to suppress older rows until re-verified<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\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=\"CSV_TEMPLATE_worksheet_import-ready_row_validator\"><\/span>CSV_TEMPLATE worksheet: import-ready row validator<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>This is the fastest way to keep your ATS clean while still moving quickly. Create a second tab in your spreadsheet called <strong>QUARANTINE<\/strong> and apply these rules before every import:<\/p>\n<ul>\n<li><strong>Rule A (identity):<\/strong> If NPI is blank or not exactly 10 digits, move the row to QUARANTINE (do not import into the main ATS table).<\/li>\n<li><strong>Rule B (freshness):<\/strong> If refresh_date is blank or not YYYY-MM-DD, move to QUARANTINE.<\/li>\n<li><strong>Rule C (opt-out safety):<\/strong> If do_not_contact is TRUE, keep the row but ensure your import cannot overwrite TRUE with FALSE.<\/li>\n<li><strong>Rule D (contact hygiene):<\/strong> If email_work or email_personal contains spaces or multiple emails, split into separate fields or move to QUARANTINE.<\/li>\n<li><strong>Rule E (phone hygiene):<\/strong> If phone fields contain \u201cext\u201d, \u201cx\u201d, or multiple numbers, move to QUARANTINE and store the extension in notes.<\/li>\n<\/ul>\n<p><strong>Dedupe decision tree:<\/strong><\/p>\n<ul>\n<li>If NPI matches an existing record \u2192 update contact attributes (phones\/emails), update refresh_date, preserve do_not_contact if TRUE.<\/li>\n<li>If NPI does not match \u2192 create a new record.<\/li>\n<li>If NPI missing \u2192 do not auto-merge; quarantine for review.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"If_your_ATS_cant_update_records_by_NPI\"><\/span>If your ATS can\u2019t update records by NPI<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Some ATS setups can import but can\u2019t reliably update existing records based on a custom key. In that case, use a staging workflow:<\/p>\n<ol>\n<li>Import the CSV into a staging list\/table (or a temporary project) instead of your main database.<\/li>\n<li>Match staging rows to existing records using NPI.<\/li>\n<li>Apply updates (phones\/emails\/refresh_date\/source fields) to the matched records.<\/li>\n<li>Create new records only for NPIs that don\u2019t exist yet.<\/li>\n<\/ol>\n<h3><span class=\"ez-toc-section\" id=\"Track_the_right_metrics_and_define_them_consistently\"><\/span>Track the right metrics (and define them consistently)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Measure this by\u2026 running a weekly scorecard on a fixed cohort (for example, the last imported batch) and comparing outcomes by refresh_date band and channel.<\/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<p><strong>Measurement instructions:<\/strong><\/p>\n<ol>\n<li>Tag every imported record with source_system, source_detail, and refresh_date.<\/li>\n<li>Run outreach in a consistent cadence for 7\u201314 days (same number of touches per record).<\/li>\n<li>Export outcomes (delivered, bounced, replies; dials, connected, human answers) and compute the rates above using the stated denominators.<\/li>\n<li>Compare performance for records refreshed recently vs. older refresh_date values to decide when to re-verify or suppress.<\/li>\n<\/ol>\n<h3><span class=\"ez-toc-section\" id=\"Suppression_SOP_so_you_dont_re-contact_opt-outs\"><\/span>Suppression SOP (so you don\u2019t re-contact opt-outs)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Keep opt-outs in two places: your ATS record (do_not_contact = TRUE) and a suppression list used by your outreach tools. On every re-import, treat TRUE as write-protected and never overwrite it with FALSE.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Use_NPI_to_keep_your_ATS_clean_across_re-imports\"><\/span>Use NPI to keep your ATS clean across re-imports<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>If you\u2019re building lists repeatedly, don\u2019t rely on ATS \u201cduplicate detection\u201d defaults. Make NPI the anchor, then update contact attributes (phones\/emails) as they change. If you need the upstream list-building workflow, use: <a href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/how-to-build-a-physician-call-list\/\">how to build a physician call list<\/a>.<\/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 templates assume you have NPI, specialty, and a recent refresh_date. Keep them short and operational.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Template_1_Phone_opener_office_line\"><\/span>Template 1: Phone opener (office line)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li><strong>You:<\/strong> \u201cHi, this is [Name]. I\u2019m trying to reach Dr. [Last Name] about a physician opportunity. What\u2019s the best way to get a message through\u2014direct line, email, or a good time window?\u201d<\/li>\n<li><strong>If asked details:<\/strong> \u201cIt\u2019s a [specialty] role with [high-level location\/setting]. I can send a 3-line summary\u2014what email should I use?\u201d<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Template_2_Email_work_email\"><\/span>Template 2: Email (work email)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li><strong>Subject:<\/strong> Dr. [Last Name] \u2014 quick question<\/li>\n<li><strong>Body:<\/strong> \u201cDr. [Last Name], I recruit physicians for [organization\/type]. Are you open to a brief call about a [specialty] role in [location]? If not you, who\u2019s best to contact? \u2014 [Name], [Phone]\u201d<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Template_3_Follow-up_after_no_response\"><\/span>Template 3: Follow-up (after no response)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li><strong>Body:<\/strong> \u201cCircling back, Dr. [Last Name]. If timing\u2019s bad, I can send details and close the loop. Preferred channel: phone or email?\u201d<\/li>\n<\/ul>\n<p><strong>Ops note:<\/strong> tie each outreach attempt back to refresh_date so you can see whether stale records are dragging down deliverability and connect rates.<\/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 physician contact data for legitimate recruiting outreach with a clear business purpose. Respect opt-outs immediately, keep suppression lists, and follow applicable privacy and communications laws in the jurisdictions you operate in. If you\u2019re unsure about a specific rule (texting, calling hours, email compliance), get counsel\u2014this article is operational guidance, not 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>We treat provider identity and contact hygiene as an operations problem: stable keys, clean fields, and logged recency. For how we evaluate data quality and sourcing practices, see our methodology: <a href=\"http:\/\/heartbeat.ai\/resources\/trust-methodology\/\">trust methodology<\/a>.<\/p>\n<p><strong>External reference:<\/strong> NPI is defined and maintained via the NPPES system: <a href=\"https:\/\/nppes.cms.hhs.gov\/\">https:\/\/nppes.cms.hhs.gov\/<\/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=\"Whats_the_minimum_set_of_columns_I_need_for_a_clean_import\"><\/span>What\u2019s the minimum set of columns I need for a clean import?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>At minimum: NPI, first_name, last_name, and refresh_date. Then add at least one contact channel (phone_main or email_work) plus source_system for traceability.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Why_is_NPI_the_best_dedupe_key_for_physicians\"><\/span>Why is NPI the best dedupe key for physicians?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>NPI is designed as a unique provider identifier. Phones and emails are attributes that change; NPI is the stable identity anchor for dedupe and record updates.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"How_should_I_format_phone_numbers_in_the_CSV\"><\/span>How should I format phone numbers in the CSV?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Pick one standard and enforce it. E.164 (+1XXXXXXXXXX) is the cleanest for systems that support it. Otherwise use digits-only consistently and keep extensions out of the number field.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"What_should_I_do_when_two_rows_share_the_same_NPI_but_different_phonesemails\"><\/span>What should I do when two rows share the same NPI but different phones\/emails?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Keep one provider record (by NPI) and treat phones\/emails as updatable attributes. Preserve the most recent refresh_date and store older contact points in notes or secondary fields if your ATS supports it.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"How_do_I_avoid_breaking_my_ATS_with_duplicates_on_re-import\"><\/span>How do I avoid breaking my ATS with duplicates on re-import?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Write the rule: NPI is unique. Import updates should match on NPI and update fields without creating a new record. Pilot with 10 rows, confirm behavior, then run the full import.<\/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>If your goal is enrichment after upload, use the primary workflow: <a href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/upload-a-physician-list-for-enrichment\/\">upload a physician list for enrichment<\/a>.<\/li>\n<li>If you already have a file, run the CSV_TEMPLATE validator above and then <a href=\"https:\/\/heartbeat.ai\/upload-file\">upload your CSV for enrichment<\/a>.<\/li>\n<li>If you want to test the workflow end-to-end, <a href=\"https:\/\/heartbeat.ai\/signup\">start free search &amp; preview data<\/a> and export using the header above.<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"About_the_Author\"><\/span><b>About the Author<\/b><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><a href=\"http:\/\/heartbeat.ai\/resources\/author\/ben-argeband\"><span style=\"font-weight: 400;\">Ben Argeband<\/span><\/a><span style=\"font-weight: 400;\"> is the Founder and CEO of Swordfish.ai and Heartbeat.ai. With deep expertise in data and SaaS, he has built two successful platforms trusted by over 50,000 sales and recruitment professionals. Ben&#8217;s mission is to help teams find direct contact information for hard-to-reach professionals and decision-makers, providing the shortest route to their next win. Connect with Ben on <\/span><a href=\"https:\/\/www.linkedin.com\/in\/ben-m-argeband-2427a8a3\/\"><span style=\"font-weight: 400;\">LinkedIn<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><script type=\"application\/ld+json\">{\"@context\":\"https:\/\/schema.org\",\"@type\":\"Article\",\"articleSection\":\"Resources\",\"author\":{\"@type\":\"Person\",\"jobTitle\":\"Founder & CEO of Heartbeat.ai\",\"name\":\"Ben Argeband\"},\"dateModified\":\"2026-01-05\",\"datePublished\":\"2026-01-05\",\"headline\":\"CSV import template for physician contacts (ATS-ready header + NPI dedupe rules)\",\"keywords\":[\"CSV import template for physician contacts\",\"CSV\",\"NPI\",\"dedupe\",\"ATS\",\"Bullhorn\",\"Apploi\",\"recency\"],\"mainEntityOfPage\":{\"@id\":\"https:\/\/heartbeat.ai\/resources\/integrations-automation\/csv-import-template-physician-contacts\/\",\"@type\":\"WebPage\"},\"publisher\":{\"@type\":\"Organization\",\"name\":\"Heartbeat.ai\"}}<\/script><br \/>\n<script type=\"application\/ld+json\">{\"@context\":\"https:\/\/schema.org\",\"@type\":\"FAQPage\",\"mainEntity\":[{\"@type\":\"Question\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"At minimum: NPI, first_name, last_name, and refresh_date. Then add at least one contact channel (phone_main or email_work) plus source_system for traceability.\"},\"name\":\"What\u2019s the minimum set of columns I need for a clean import?\"},{\"@type\":\"Question\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"NPI is designed as a unique provider identifier. Phones and emails are attributes that change; NPI is the stable identity anchor for dedupe and record updates.\"},\"name\":\"Why is NPI the best dedupe key for physicians?\"},{\"@type\":\"Question\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Pick one standard and enforce it. E.164 (+1XXXXXXXXXX) is the cleanest for systems that support it. Otherwise use digits-only consistently and keep extensions out of the number field.\"},\"name\":\"How should I format phone numbers in the CSV?\"},{\"@type\":\"Question\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Keep one provider record (by NPI) and treat phones\/emails as updatable attributes. Preserve the most recent refresh_date and store older contact points in notes or secondary fields if your ATS supports it.\"},\"name\":\"What should I do when two rows share the same NPI but different phones\/emails?\"},{\"@type\":\"Question\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Write the rule: NPI is unique. Import updates should match on NPI and update fields without creating a new record. Pilot with 10 rows, confirm behavior, then run the full import.\"},\"name\":\"How do I avoid breaking my ATS with duplicates on re-import?\"}]}<\/script><\/p>","protected":false},"excerpt":{"rendered":"<p>ATS-ready CSV header + field definitions for importing physician contacts cleanly. Includes a synthetic example row, NPI-first dedupe, refresh_date recency tracking, Bullhorn\/Apploi mapping, and an import error decoder.<\/p>","protected":false},"author":5,"featured_media":54314,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_yoast_wpseo_focuskw":"CSV import template for physician contacts","_yoast_wpseo_title":"CSV import template for physician contacts (ATS-ready + NPI dedupe)","_yoast_wpseo_metadesc":"Copy\/paste CSV header, a synthetic example row, and field definitions to import physician contacts cleanly. NPI-first dedupe, refresh_date recency tracking, ATS mapping, and import error fixes.","_custom_permalink":"integrations-automation\/csv-import-template-physician-contacts","footnotes":""},"categories":[1],"tags":[],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\r\n<title>CSV import template for physician contacts (ATS-ready + NPI dedupe)<\/title>\r\n<meta name=\"description\" content=\"Copy\/paste CSV header, a synthetic example row, and field definitions to import physician contacts cleanly. NPI-first dedupe, refresh_date recency tracking, ATS mapping, and import error fixes.\" \/>\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\/integrations-automation\/csv-import-template-physician-contacts\/\" \/>\r\n<meta property=\"og:locale\" content=\"en_US\" \/>\r\n<meta property=\"og:type\" content=\"article\" \/>\r\n<meta property=\"og:title\" content=\"CSV import template for physician contacts (ATS-ready + NPI dedupe)\" \/>\r\n<meta property=\"og:description\" content=\"Copy\/paste CSV header, a synthetic example row, and field definitions to import physician contacts cleanly. NPI-first dedupe, refresh_date recency tracking, ATS mapping, and import error fixes.\" \/>\r\n<meta property=\"og:url\" content=\"http:\/\/heartbeat.ai\/resources\/integrations-automation\/csv-import-template-physician-contacts\/\" \/>\r\n<meta property=\"og:site_name\" content=\"Heartbeat.ai\" \/>\r\n<meta property=\"article:published_time\" content=\"2026-02-01T18:59:00+00:00\" \/>\r\n<meta property=\"article:modified_time\" content=\"2026-02-27T19:34:40+00:00\" \/>\r\n<meta property=\"og:image\" content=\"https:\/\/hc.heartbeat.ai\/wp-content\/uploads\/2026\/02\/csv-import-template-physician-contacts-d2f48942.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=\"15 minutes\" \/>\r\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"http:\/\/heartbeat.ai\/resources\/integrations-automation\/csv-import-template-physician-contacts\/#article\",\"isPartOf\":{\"@id\":\"http:\/\/heartbeat.ai\/resources\/integrations-automation\/csv-import-template-physician-contacts\/\"},\"author\":{\"name\":\"Ben Argeband\",\"@id\":\"http:\/\/heartbeat.ai\/resources\/#\/schema\/person\/7b323ddce9b211907423482e2f9db173\"},\"headline\":\"CSV import template for physician contacts (ATS-ready header + NPI dedupe rules)\",\"datePublished\":\"2026-02-01T18:59:00+00:00\",\"dateModified\":\"2026-02-27T19:34:40+00:00\",\"mainEntityOfPage\":{\"@id\":\"http:\/\/heartbeat.ai\/resources\/integrations-automation\/csv-import-template-physician-contacts\/\"},\"wordCount\":2960,\"commentCount\":0,\"publisher\":{\"@id\":\"http:\/\/heartbeat.ai\/resources\/#organization\"},\"image\":{\"@id\":\"http:\/\/heartbeat.ai\/resources\/integrations-automation\/csv-import-template-physician-contacts\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/hc.heartbeat.ai\/wp-content\/uploads\/2026\/02\/csv-import-template-physician-contacts-d2f48942.png\",\"articleSection\":[\"News\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"http:\/\/heartbeat.ai\/resources\/integrations-automation\/csv-import-template-physician-contacts\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"http:\/\/heartbeat.ai\/resources\/integrations-automation\/csv-import-template-physician-contacts\/\",\"url\":\"http:\/\/heartbeat.ai\/resources\/integrations-automation\/csv-import-template-physician-contacts\/\",\"name\":\"CSV import template for physician contacts (ATS-ready + NPI dedupe)\",\"isPartOf\":{\"@id\":\"http:\/\/heartbeat.ai\/resources\/#website\"},\"primaryImageOfPage\":{\"@id\":\"http:\/\/heartbeat.ai\/resources\/integrations-automation\/csv-import-template-physician-contacts\/#primaryimage\"},\"image\":{\"@id\":\"http:\/\/heartbeat.ai\/resources\/integrations-automation\/csv-import-template-physician-contacts\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/hc.heartbeat.ai\/wp-content\/uploads\/2026\/02\/csv-import-template-physician-contacts-d2f48942.png\",\"datePublished\":\"2026-02-01T18:59:00+00:00\",\"dateModified\":\"2026-02-27T19:34:40+00:00\",\"description\":\"Copy\/paste CSV header, a synthetic example row, and field definitions to import physician contacts cleanly. NPI-first dedupe, refresh_date recency tracking, ATS mapping, and import error fixes.\",\"breadcrumb\":{\"@id\":\"http:\/\/heartbeat.ai\/resources\/integrations-automation\/csv-import-template-physician-contacts\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\/\/heartbeat.ai\/resources\/integrations-automation\/csv-import-template-physician-contacts\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"http:\/\/heartbeat.ai\/resources\/integrations-automation\/csv-import-template-physician-contacts\/#primaryimage\",\"url\":\"https:\/\/hc.heartbeat.ai\/wp-content\/uploads\/2026\/02\/csv-import-template-physician-contacts-d2f48942.png\",\"contentUrl\":\"https:\/\/hc.heartbeat.ai\/wp-content\/uploads\/2026\/02\/csv-import-template-physician-contacts-d2f48942.png\",\"width\":1024,\"height\":1024},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\/\/heartbeat.ai\/resources\/integrations-automation\/csv-import-template-physician-contacts\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/heartbeat.ai\/healthcare\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"CSV import template for physician contacts (ATS-ready header + NPI dedupe rules)\"}]},{\"@type\":\"WebSite\",\"@id\":\"http:\/\/heartbeat.ai\/resources\/#website\",\"url\":\"http:\/\/heartbeat.ai\/resources\/\",\"name\":\"Heartbeat.ai\",\"description\":\"\",\"publisher\":{\"@id\":\"http:\/\/heartbeat.ai\/resources\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"http:\/\/heartbeat.ai\/resources\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"http:\/\/heartbeat.ai\/resources\/#organization\",\"name\":\"Heartbeat.ai\",\"url\":\"http:\/\/heartbeat.ai\/resources\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"http:\/\/heartbeat.ai\/resources\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/hc.heartbeat.ai\/wp-content\/uploads\/2021\/04\/Heartbeat.ai-logo.png\",\"contentUrl\":\"https:\/\/hc.heartbeat.ai\/wp-content\/uploads\/2021\/04\/Heartbeat.ai-logo.png\",\"width\":704,\"height\":126,\"caption\":\"Heartbeat.ai\"},\"image\":{\"@id\":\"http:\/\/heartbeat.ai\/resources\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"http:\/\/heartbeat.ai\/resources\/#\/schema\/person\/7b323ddce9b211907423482e2f9db173\",\"name\":\"Ben Argeband\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"http:\/\/heartbeat.ai\/resources\/#\/schema\/person\/image\/\",\"url\":\"http:\/\/0.gravatar.com\/avatar\/6356f96884d5a313d758128b3d9aaef7?s=96&d=mm&r=g\",\"contentUrl\":\"http:\/\/0.gravatar.com\/avatar\/6356f96884d5a313d758128b3d9aaef7?s=96&d=mm&r=g\",\"caption\":\"Ben Argeband\"},\"url\":\"http:\/\/heartbeat.ai\/resources\/author\/ben-argeband\/\"}]}<\/script>\r\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"CSV import template for physician contacts (ATS-ready + NPI dedupe)","description":"Copy\/paste CSV header, a synthetic example row, and field definitions to import physician contacts cleanly. NPI-first dedupe, refresh_date recency tracking, ATS mapping, and import error fixes.","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\/integrations-automation\/csv-import-template-physician-contacts\/","og_locale":"en_US","og_type":"article","og_title":"CSV import template for physician contacts (ATS-ready + NPI dedupe)","og_description":"Copy\/paste CSV header, a synthetic example row, and field definitions to import physician contacts cleanly. NPI-first dedupe, refresh_date recency tracking, ATS mapping, and import error fixes.","og_url":"http:\/\/heartbeat.ai\/resources\/integrations-automation\/csv-import-template-physician-contacts\/","og_site_name":"Heartbeat.ai","article_published_time":"2026-02-01T18:59:00+00:00","article_modified_time":"2026-02-27T19:34:40+00:00","og_image":[{"width":1024,"height":1024,"url":"https:\/\/hc.heartbeat.ai\/wp-content\/uploads\/2026\/02\/csv-import-template-physician-contacts-d2f48942.png","type":"image\/png"}],"author":"Ben Argeband","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Ben Argeband","Est. reading time":"15 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"http:\/\/heartbeat.ai\/resources\/integrations-automation\/csv-import-template-physician-contacts\/#article","isPartOf":{"@id":"http:\/\/heartbeat.ai\/resources\/integrations-automation\/csv-import-template-physician-contacts\/"},"author":{"name":"Ben Argeband","@id":"http:\/\/heartbeat.ai\/resources\/#\/schema\/person\/7b323ddce9b211907423482e2f9db173"},"headline":"CSV import template for physician contacts (ATS-ready header + NPI dedupe rules)","datePublished":"2026-02-01T18:59:00+00:00","dateModified":"2026-02-27T19:34:40+00:00","mainEntityOfPage":{"@id":"http:\/\/heartbeat.ai\/resources\/integrations-automation\/csv-import-template-physician-contacts\/"},"wordCount":2960,"commentCount":0,"publisher":{"@id":"http:\/\/heartbeat.ai\/resources\/#organization"},"image":{"@id":"http:\/\/heartbeat.ai\/resources\/integrations-automation\/csv-import-template-physician-contacts\/#primaryimage"},"thumbnailUrl":"https:\/\/hc.heartbeat.ai\/wp-content\/uploads\/2026\/02\/csv-import-template-physician-contacts-d2f48942.png","articleSection":["News"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["http:\/\/heartbeat.ai\/resources\/integrations-automation\/csv-import-template-physician-contacts\/#respond"]}]},{"@type":"WebPage","@id":"http:\/\/heartbeat.ai\/resources\/integrations-automation\/csv-import-template-physician-contacts\/","url":"http:\/\/heartbeat.ai\/resources\/integrations-automation\/csv-import-template-physician-contacts\/","name":"CSV import template for physician contacts (ATS-ready + NPI dedupe)","isPartOf":{"@id":"http:\/\/heartbeat.ai\/resources\/#website"},"primaryImageOfPage":{"@id":"http:\/\/heartbeat.ai\/resources\/integrations-automation\/csv-import-template-physician-contacts\/#primaryimage"},"image":{"@id":"http:\/\/heartbeat.ai\/resources\/integrations-automation\/csv-import-template-physician-contacts\/#primaryimage"},"thumbnailUrl":"https:\/\/hc.heartbeat.ai\/wp-content\/uploads\/2026\/02\/csv-import-template-physician-contacts-d2f48942.png","datePublished":"2026-02-01T18:59:00+00:00","dateModified":"2026-02-27T19:34:40+00:00","description":"Copy\/paste CSV header, a synthetic example row, and field definitions to import physician contacts cleanly. NPI-first dedupe, refresh_date recency tracking, ATS mapping, and import error fixes.","breadcrumb":{"@id":"http:\/\/heartbeat.ai\/resources\/integrations-automation\/csv-import-template-physician-contacts\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["http:\/\/heartbeat.ai\/resources\/integrations-automation\/csv-import-template-physician-contacts\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"http:\/\/heartbeat.ai\/resources\/integrations-automation\/csv-import-template-physician-contacts\/#primaryimage","url":"https:\/\/hc.heartbeat.ai\/wp-content\/uploads\/2026\/02\/csv-import-template-physician-contacts-d2f48942.png","contentUrl":"https:\/\/hc.heartbeat.ai\/wp-content\/uploads\/2026\/02\/csv-import-template-physician-contacts-d2f48942.png","width":1024,"height":1024},{"@type":"BreadcrumbList","@id":"http:\/\/heartbeat.ai\/resources\/integrations-automation\/csv-import-template-physician-contacts\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/heartbeat.ai\/healthcare\/"},{"@type":"ListItem","position":2,"name":"CSV import template for physician contacts (ATS-ready header + NPI dedupe rules)"}]},{"@type":"WebSite","@id":"http:\/\/heartbeat.ai\/resources\/#website","url":"http:\/\/heartbeat.ai\/resources\/","name":"Heartbeat.ai","description":"","publisher":{"@id":"http:\/\/heartbeat.ai\/resources\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"http:\/\/heartbeat.ai\/resources\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"http:\/\/heartbeat.ai\/resources\/#organization","name":"Heartbeat.ai","url":"http:\/\/heartbeat.ai\/resources\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"http:\/\/heartbeat.ai\/resources\/#\/schema\/logo\/image\/","url":"https:\/\/hc.heartbeat.ai\/wp-content\/uploads\/2021\/04\/Heartbeat.ai-logo.png","contentUrl":"https:\/\/hc.heartbeat.ai\/wp-content\/uploads\/2021\/04\/Heartbeat.ai-logo.png","width":704,"height":126,"caption":"Heartbeat.ai"},"image":{"@id":"http:\/\/heartbeat.ai\/resources\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"http:\/\/heartbeat.ai\/resources\/#\/schema\/person\/7b323ddce9b211907423482e2f9db173","name":"Ben Argeband","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"http:\/\/heartbeat.ai\/resources\/#\/schema\/person\/image\/","url":"http:\/\/0.gravatar.com\/avatar\/6356f96884d5a313d758128b3d9aaef7?s=96&d=mm&r=g","contentUrl":"http:\/\/0.gravatar.com\/avatar\/6356f96884d5a313d758128b3d9aaef7?s=96&d=mm&r=g","caption":"Ben Argeband"},"url":"http:\/\/heartbeat.ai\/resources\/author\/ben-argeband\/"}]}},"_links":{"self":[{"href":"http:\/\/heartbeat.ai\/resources\/wp-json\/wp\/v2\/posts\/54315"}],"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=54315"}],"version-history":[{"count":1,"href":"http:\/\/heartbeat.ai\/resources\/wp-json\/wp\/v2\/posts\/54315\/revisions"}],"predecessor-version":[{"id":54516,"href":"http:\/\/heartbeat.ai\/resources\/wp-json\/wp\/v2\/posts\/54315\/revisions\/54516"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/heartbeat.ai\/resources\/wp-json\/wp\/v2\/media\/54314"}],"wp:attachment":[{"href":"http:\/\/heartbeat.ai\/resources\/wp-json\/wp\/v2\/media?parent=54315"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/heartbeat.ai\/resources\/wp-json\/wp\/v2\/categories?post=54315"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/heartbeat.ai\/resources\/wp-json\/wp\/v2\/tags?post=54315"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}