{"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-08-31T08:47:18","modified_gmt":"2026-08-31T13:47:18","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 class=\"article-last-updated\"><strong>Last updated:<\/strong> August 31, 2026<\/p>\n<p><img decoding=\"async\" loading=\"false\" class=\"aligncenter\" src=\"http:\/\/hc.heartbeat.ai\/wp-content\/webp-express\/webp-images\/uploads\/2026\/02\/csv-import-template-physician-contacts-d2f48942.png.webp\" alt=\"54314\" \/><\/p>\n<p><strong>Ben Argeband, Founder &amp; CEO of Heartbeat.ai<\/strong> \u2014 a copy\/paste-ready template, no fluff.<\/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\/integrations-automation\/csv-import-template-physician-contacts\/#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\" >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\/#Why_most_import_failures_arent_really_CSV_problems\" >Why most import failures aren&#8217;t really CSV problems<\/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\" >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\" >Step 1) Start with the exact header row<\/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\" >Step 2) Use the field definitions, don&#8217;t 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\/#Field_reference_table\" >Field reference 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\" >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\" >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\" >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\/#Gono-go_checklist_before_you_import\" >Go\/no-go checklist before you import<\/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\" >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_email_or_phone_as_the_unique_key\" >Pitfall 1: Treating email or 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_so_you_cant_tell_whats_stale\" >Pitfall 2: No refresh_date, so you can&#8217;t tell what&#8217;s 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\" >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\" >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\" >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\" >Import error decoder<\/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\/#Building_a_quarantine_tab_into_your_workflow\" >Building a quarantine tab into your workflow<\/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\/#If_your_ATS_cant_update_records_by_NPI\" >If your ATS can&#8217;t 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-21\" href=\"http:\/\/heartbeat.ai\/resources\/integrations-automation\/csv-import-template-physician-contacts\/#Tracking_outreach_performance_after_import\" >Tracking outreach performance after import<\/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\/#Suppression_SOP\" >Suppression SOP<\/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\/#Use_NPI_to_keep_the_ATS_clean_across_repeated_imports\" >Use NPI to keep the ATS clean across repeated imports<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-24\" href=\"http:\/\/heartbeat.ai\/resources\/integrations-automation\/csv-import-template-physician-contacts\/#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-25\" href=\"http:\/\/heartbeat.ai\/resources\/integrations-automation\/csv-import-template-physician-contacts\/#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-26\" href=\"http:\/\/heartbeat.ai\/resources\/integrations-automation\/csv-import-template-physician-contacts\/#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-27\" href=\"http:\/\/heartbeat.ai\/resources\/integrations-automation\/csv-import-template-physician-contacts\/#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-28\" href=\"http:\/\/heartbeat.ai\/resources\/integrations-automation\/csv-import-template-physician-contacts\/#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-29\" href=\"http:\/\/heartbeat.ai\/resources\/integrations-automation\/csv-import-template-physician-contacts\/#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-30\" href=\"http:\/\/heartbeat.ai\/resources\/integrations-automation\/csv-import-template-physician-contacts\/#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-31\" href=\"http:\/\/heartbeat.ai\/resources\/integrations-automation\/csv-import-template-physician-contacts\/#Whats_the_minimum_set_of_columns_I_need_for_a_clean_import\" >What&#8217;s 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-32\" href=\"http:\/\/heartbeat.ai\/resources\/integrations-automation\/csv-import-template-physician-contacts\/#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-33\" href=\"http:\/\/heartbeat.ai\/resources\/integrations-automation\/csv-import-template-physician-contacts\/#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-34\" 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\" >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-35\" href=\"http:\/\/heartbeat.ai\/resources\/integrations-automation\/csv-import-template-physician-contacts\/#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-36\" href=\"http:\/\/heartbeat.ai\/resources\/integrations-automation\/csv-import-template-physician-contacts\/#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-37\" href=\"http:\/\/heartbeat.ai\/resources\/integrations-automation\/csv-import-template-physician-contacts\/#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 or boolean fields, and clear provenance for every row. The template below is built around <strong>CSV<\/strong> hygiene, <strong>NPI<\/strong>-first identity, and recency tracking, because outreach performance quietly decays when a list goes stale.<\/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 and emails, an explicit source and refresh date, and strict dedupe keys so your ATS import stays clean and searchable.<\/dd>\n<dt>Best for<\/dt>\n<dd>Recruiters and ops teams importing physician contact data into an ATS without creating duplicates or 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. 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=\"Why_most_import_failures_arent_really_CSV_problems\"><\/span>Why most import failures aren&#8217;t really CSV problems<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Most import failures trace back to one of three root causes: no stable unique key, inconsistent field formats, or no way to tell what&#8217;s current. Fix those in order and the rest of the import mostly takes care of itself.<\/p>\n<ul>\n<li><strong>Unique key:<\/strong> pick one field that represents the provider across systems. For physicians, that&#8217;s the <strong>NPI<\/strong>.<\/li>\n<li><strong>Clean fields:<\/strong> normalize names, phones, emails, and addresses so your ATS doesn&#8217;t 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: a few minutes of upfront structure versus a duplicate-riddled ATS you can&#8217;t unwind later. The upfront cost is smaller.<\/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\"><\/span>Step 1) Start with the exact header row<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 the <strong>NPI<\/strong> and <strong>postal_code<\/strong> columns to <strong>text<\/strong> before you save or export, or leading zeros will silently disappear.<\/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&#8217;t improvise formats<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Imports break when the same type of data shows up in multiple formats across dates, phones, and booleans. Enforce the definitions below before you import, not after.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Field_reference_table\"><\/span>Field reference 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> a unique 10-digit identifier for covered health care providers in the U.S., assigned via NPPES. Store as 10 digits, no dashes.<\/td>\n<td>1234567890<\/td>\n<td>Map to a custom field if your ATS doesn&#8217;t 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 &#8220;Suffix&#8221; or &#8220;Credential&#8221; 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 &#8220;Company&#8221; or &#8220;Employer&#8221; 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 &#8220;Phone&#8221; or &#8220;Work Phone.&#8221; 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 &#8220;Mobile Phone&#8221; if available; otherwise custom field.<\/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 with a legitimate recruiting purpose and honoring 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 &#8220;Source&#8221; 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 &#8220;Last Updated&#8221; 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>For physicians, the <strong>NPI is the strongest primary key available<\/strong>. CMS describes it as a unique, 10-digit, intelligence-free identifier that stays the same even if a provider changes name, address, or employer. Emails and phones don&#8217;t behave the same way \u2014 people switch employers, domains lapse, numbers get reassigned \u2014 so your dedupe policy should treat contact points as volatile and NPI as the anchor.<\/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> \u2014 both 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&#8217;t overload one field<\/strong> \u2014 for example, multiple emails in one email field. Keep one value per field.<\/li>\n<li><strong>Keep structured data structured<\/strong> \u2014 dates as YYYY-MM-DD, booleans as TRUE\/FALSE, state as a 2-letter code.<\/li>\n<\/ul>\n<p>Run a 10-row pilot import first, verify how Bullhorn or Apploi actually stored each field, then import the full file. Skipping this step is how small format mismatches turn into a full cleanup project.<\/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&#8217;t 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&#8217;re 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 any row 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 across the file.<\/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=\"Gono-go_checklist_before_you_import\"><\/span>Go\/no-go checklist before you import<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Score each item 0 (missing), 1 (partial), or 2 (clean). If you&#8217;re under 12 of 16, fix the file first \u2014 don&#8217;t import and clean up afterward.<\/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> &#8220;NPI = unique; never auto-merge on phone\/email.&#8221;<\/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 and source_detail filled in.<\/li>\n<li><strong>(2) ATS field mapping tested<\/strong> with a 10-row pilot import and a 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_email_or_phone_as_the_unique_key\"><\/span>Pitfall 1: Treating email or phone as the unique key<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Emails and phones change. Dedupe on them and you&#8217;ll either merge the wrong people or create duplicates when a physician changes systems. Use NPI as the stable identity key and treat contact points as attributes that rotate.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Pitfall_2_No_refresh_date_so_you_cant_tell_whats_stale\"><\/span>Pitfall 2: No refresh_date, so you can&#8217;t tell what&#8217;s stale<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Without a recency field, you can&#8217;t suppress old contacts, and your team burns cycles on dead emails and wrong numbers. Add refresh_date to every row and update it whenever 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 &#8220;(312) 555-1212 ext 9&#8221; jammed into a phone field will cause import errors or make ATS search unreliable. One value per field; extensions and notes go elsewhere.<\/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 skipping the pilot. Run 10 rows, verify how your ATS actually stored each field, then run the rest.<\/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 just because a source file didn&#8217;t carry the opt-out forward.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Import_error_decoder\"><\/span>Import error decoder<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=\"Building_a_quarantine_tab_into_your_workflow\"><\/span>Building a quarantine tab into your workflow<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Add a second tab to your spreadsheet called QUARANTINE 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 rather than importing it 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 confirm your import can&#8217;t 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 &#8220;ext,&#8221; &#8220;x,&#8221; 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>NPI matches an existing record \u2192 update contact attributes (phones\/emails), update refresh_date, preserve do_not_contact if TRUE.<\/li>\n<li>NPI doesn&#8217;t match any existing record \u2192 create a new record.<\/li>\n<li>NPI missing \u2192 don&#8217;t auto-merge; quarantine for manual 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&#8217;t update records by NPI<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Some ATS setups can import new rows but can&#8217;t reliably update existing records against a custom key. In that case, use a staging workflow instead:<\/p>\n<ol>\n<li>Import the CSV into a staging list or 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&#8217;t already exist.<\/li>\n<\/ol>\n<h3><span class=\"ez-toc-section\" id=\"Tracking_outreach_performance_after_import\"><\/span>Tracking outreach performance after import<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Run a weekly scorecard on a fixed cohort \u2014 for example, the last imported batch \u2014 and compare outcomes by refresh_date band and channel. Definitions worth locking down before you compare numbers:<\/p>\n<ul>\n<li><strong>Deliverability rate<\/strong> = delivered emails \/ sent emails.<\/li>\n<li><strong>Bounce rate<\/strong> = bounced emails \/ sent emails.<\/li>\n<li><strong>Connect rate<\/strong> = connected calls \/ total dials.<\/li>\n<li><strong>Answer rate<\/strong> = human answers \/ connected calls.<\/li>\n<li><strong>Reply rate<\/strong> = replies \/ delivered emails.<\/li>\n<\/ul>\n<p><strong>How to measure it:<\/strong><\/p>\n<ol>\n<li>Tag every imported record with source_system, source_detail, and refresh_date.<\/li>\n<li>Run outreach on a consistent cadence for 7\u201314 days, same number of touches per record.<\/li>\n<li>Export outcomes and compute the rates above using the stated denominators.<\/li>\n<li>Compare records with a recent refresh_date against older ones to decide when to re-verify or suppress.<\/li>\n<\/ol>\n<h3><span class=\"ez-toc-section\" id=\"Suppression_SOP\"><\/span>Suppression SOP<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_the_ATS_clean_across_repeated_imports\"><\/span>Use NPI to keep the ATS clean across repeated imports<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>If you&#8217;re rebuilding lists on a recurring basis, don&#8217;t rely on default ATS duplicate detection. Make NPI the anchor, then update contact attributes as they change. For the upstream list-building workflow, see: <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 assume you have NPI, specialty, and a recent refresh_date on the record. 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> &#8220;Hi, this is [Name]. I&#8217;m trying to reach Dr. [Last Name] about a physician opportunity. What&#8217;s the best way to get a message through \u2014 direct line, email, or a good time window?&#8221;<\/li>\n<li><strong>If asked details:<\/strong> &#8220;It&#8217;s a [specialty] role with [high-level location\/setting]. I can send a 3-line summary \u2014 what email should I use?&#8221;<\/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> &#8220;Dr. [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&#8217;s best to contact? \u2014 [Name], [Phone]&#8221;<\/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> &#8220;Circling back, Dr. [Last Name]. If timing&#8217;s bad, I can send details and close the loop. Preferred channel: phone or email?&#8221;<\/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 where you operate. If you&#8217;re unsure about a specific rule around texting, calling hours, or email compliance, get counsel \u2014 this 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&#8217;s 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 a unique, government-issued provider identifier that stays fixed even if a provider changes name, address, or employer. 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 QUARANTINE validation rules above, 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><br \/>\n<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><\/p>\n<p><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 and field definitions for importing physician contacts: NPI dedupe, refresh_date tracking, Bullhorn\/Apploi mapping, 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,"_custom_permalink":"integrations-automation\/csv-import-template-physician-contacts","footnotes":""},"categories":[1],"tags":[],"class_list":["post-54315","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>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-08-31T13:47:18+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=\"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\\\/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-08-31T13:47:18+00:00\",\"mainEntityOfPage\":{\"@id\":\"http:\\\/\\\/heartbeat.ai\\\/resources\\\/integrations-automation\\\/csv-import-template-physician-contacts\\\/\"},\"wordCount\":2942,\"commentCount\":0,\"publisher\":{\"@id\":\"http:\\\/\\\/heartbeat.ai\\\/resources\\\/#organization\"},\"image\":{\"@id\":\"http:\\\/\\\/heartbeat.ai\\\/resources\\\/integrations-automation\\\/csv-import-template-physician-contacts\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/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\":\"http:\\\/\\\/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-08-31T13:47:18+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\":\"http:\\\/\\\/hc.heartbeat.ai\\\/wp-content\\\/uploads\\\/2026\\\/02\\\/csv-import-template-physician-contacts-d2f48942.png\",\"contentUrl\":\"http:\\\/\\\/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\":\"http:\\\/\\\/heartbeat.ai\\\/resources\\\/\"},{\"@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\":{\"@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":"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-08-31T13:47:18+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":"14 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-08-31T13:47:18+00:00","mainEntityOfPage":{"@id":"http:\/\/heartbeat.ai\/resources\/integrations-automation\/csv-import-template-physician-contacts\/"},"wordCount":2942,"commentCount":0,"publisher":{"@id":"http:\/\/heartbeat.ai\/resources\/#organization"},"image":{"@id":"http:\/\/heartbeat.ai\/resources\/integrations-automation\/csv-import-template-physician-contacts\/#primaryimage"},"thumbnailUrl":"http:\/\/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":"http:\/\/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-08-31T13:47:18+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":"http:\/\/hc.heartbeat.ai\/wp-content\/uploads\/2026\/02\/csv-import-template-physician-contacts-d2f48942.png","contentUrl":"http:\/\/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":"http:\/\/heartbeat.ai\/resources\/"},{"@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":{"@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\/54315","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=54315"}],"version-history":[{"count":2,"href":"http:\/\/heartbeat.ai\/resources\/wp-json\/wp\/v2\/posts\/54315\/revisions"}],"predecessor-version":[{"id":66214,"href":"http:\/\/heartbeat.ai\/resources\/wp-json\/wp\/v2\/posts\/54315\/revisions\/66214"}],"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}]}}