{"id":54183,"date":"2026-02-01T12:33:20","date_gmt":"2026-02-01T18:33:20","guid":{"rendered":"https:\/\/heartbeat.ai\/healthcare\/ats-field-schema-for-outreach-metrics\/"},"modified":"2026-10-19T13:54:00","modified_gmt":"2026-10-19T18:54:00","slug":"ats-field-schema-for-outreach-metrics","status":"publish","type":"post","link":"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/","title":{"rendered":"ATS fields for outreach metrics (copy\/paste schema + field map)"},"content":{"rendered":"<section class=\"aeo-key-takeaways\">\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_89 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\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#Key_takeaways\" >Key takeaways<\/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\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#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-3\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#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-4\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#Framework_separate_contact_truth_from_touch_outcomes\" >Framework: separate contact truth from touch outcomes<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#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-6\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#Step_1_Lock_metric_definitions_with_denominators\" >Step 1: Lock metric definitions with denominators<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#Step_2_Implement_the_minimum_viable_fields_first\" >Step 2: Implement the minimum viable fields first<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#Step_3_Separate_contact_truth_from_touch_truth\" >Step 3: Separate contact truth from touch truth<\/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\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#Step_4_Create_a_channel-agnostic_Outreach_Touch_record\" >Step 4: Create a channel-agnostic Outreach Touch record<\/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\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#Step_5_Add_deliverability_protection_fields\" >Step 5: Add deliverability protection fields<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#Step_6_Standardize_outcomes_so_%E2%80%9Cno_answer%E2%80%9D_means_the_same_thing_everywhere\" >Step 6: Standardize outcomes so &#8220;no answer&#8221; means the same thing everywhere<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#Step_7_Assign_field_ownership_so_logging_actually_happens\" >Step 7: Assign field ownership so logging actually happens<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#Step_8_Choose_join_keys_so_your_dashboard_reconciles\" >Step 8: Choose join keys so your dashboard reconciles<\/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\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#Step_9_Build_a_copypaste_schema\" >Step 9: Build a copy\/paste schema<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#Diagnostic_table\" >Diagnostic table<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#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-17\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#Internal_ops_templates\" >Internal ops templates<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-18\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#Template_1_Ops_ticket_to_implement_the_field_map\" >Template 1: Ops ticket to implement the field map<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-19\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#Template_2_Recruiter_SOP_snippet\" >Template 2: Recruiter SOP snippet<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-20\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#Template_3_Deliverability_incident_note\" >Template 3: Deliverability incident note<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-21\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#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-22\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#1_Counting_%E2%80%9Csent%E2%80%9D_as_%E2%80%9Cdelivered%E2%80%9D\" >1. Counting &#8220;sent&#8221; as &#8220;delivered&#8221;<\/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\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#2_Opt-outs_stored_as_notes_instead_of_suppression_fields\" >2. Opt-outs stored as notes instead of suppression fields<\/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\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#3_Bounce_type_without_bounce_reason\" >3. Bounce type without bounce reason<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-25\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#4_Wrong-person_contacts_not_treated_as_a_data_quality_event\" >4. Wrong-person contacts not treated as a data quality event<\/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\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#5_Overbuilding_fields_nobody_uses\" >5. Overbuilding fields nobody uses<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-27\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#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-28\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#1_Build_a_weekly_outreach_health_report\" >1. Build a weekly outreach health report<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-29\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#2_Use_the_bounce_triage_ladder_to_protect_sending_domains\" >2. Use the bounce triage ladder to protect sending domains<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-30\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#3_Tighten_verification_and_refresh_cadence\" >3. Tighten verification and refresh cadence<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-31\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#Implementation_notes\" >Implementation notes<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-32\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#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-33\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#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-34\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#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-35\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#What_are_the_minimum_viable_fields_I_need_to_report_outreach_metrics_in_an_ATS\" >What are the minimum viable fields I need to report outreach metrics in an ATS?<\/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\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#Where_should_bounce_data_live_ATS_or_email_tool\" >Where should bounce data live: ATS or email tool?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-37\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#How_do_I_keep_call_metrics_consistent_between_a_dialer_and_the_ATS\" >How do I keep call metrics consistent between a dialer and the ATS?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-38\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#What_fields_prevent_repeated_outreach_to_the_wrong_person\" >What fields prevent repeated outreach to the wrong person?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-39\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#How_do_I_protect_deliverability_when_bounces_spike\" >How do I protect deliverability when bounces spike?<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-40\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#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-41\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#About_the_Author\" >About the Author<\/a><\/li><\/ul><\/nav><\/div>\r\n<h2><span class=\"ez-toc-section\" id=\"Key_takeaways\"><\/span>Key takeaways<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ul>\n<li>Keep contact-level truth\u2014such as consent, suppression, verification, and wrong-person status\u2014separate from events on individual outreach touches.<\/li>\n<li>Use consistent metric definitions and show the denominator for every reported rate.<\/li>\n<li>Use the email tool as the source for delivery and bounce events, the dialer for call events, and the ATS\/CRM for contact-level suppression, consent, and verification fields.<\/li>\n<li>Standardize channel outcomes with picklists and connect system records using a stable contact ID and outreach touch ID when available.<\/li>\n<li>Treat the schema as vendor-agnostic guidance and assign ownership for automated and manually captured fields.<\/li>\n<\/ul>\n<\/section>\n<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\/ats-field-schema-for-outreach-metrics-ca6dd388.png.webp\" alt=\"54182\" \/><\/p>\n<p><strong>Ben Argeband, Founder &amp; CEO of Heartbeat.ai<\/strong> \u2014 Keep it plug-and-play; avoid vendor specifics.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Who_this_is_for\"><\/span>Who this is for<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>This is for recruiting ops leaders who need consistent outreach reporting across an <strong>ATS<\/strong>, <strong>CRM<\/strong>, <strong>dialer<\/strong>, and <strong>email tool<\/strong> when recruiting healthcare providers, without turning recruiters into data-entry clerks.<\/p>\n<ul>\n<li>Recruiting ops building consistent reporting and definitions for physician and clinician outreach<\/li>\n<li>TA leaders who need channel outcomes that tie back to pipeline stages<\/li>\n<li>Teams cleaning up suppression, opt-outs, and deliverability before it becomes a brand or compliance issue<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"Quick_Answer\"><\/span>Quick Answer<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<dl>\n<dt>Core Answer<\/dt>\n<dd>Implement a minimum viable ATS field schema that separates contact truth from touch outcomes, so outreach metrics reconcile across email and calling tools when reaching healthcare providers.<\/dd>\n<dt>Key Insight<\/dt>\n<dd>Reporting breaks when &#8220;sent&#8221; is treated as &#8220;delivered&#8221; and opt-outs live in notes instead of contact-level suppression fields.<\/dd>\n<dt>Best For<\/dt>\n<dd>Recruiting ops building consistent reporting<\/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_separate_contact_truth_from_touch_outcomes\"><\/span>Framework: separate contact truth from touch outcomes<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Store delivery, bounce, and reply events in the <strong>email tool<\/strong>. Store call events in the <strong>dialer<\/strong>. Store suppression, consent, and verification as contact truth in the <strong>ATS\/CRM<\/strong>. Then roll up rates using consistent denominators.<\/p>\n<p>Outreach reporting on physician and provider lists fails in predictable ways: tools disagree, recruiters log outcomes differently, and leadership stops trusting the funnel. Standardizing a small set of fields protects deliverability and compliance, makes outcomes comparable across channels, and stays simple enough that recruiters will actually use it.<\/p>\n<p>You&#8217;ll lose some nuance that used to live in free-text notes, but you gain metrics that hold up across systems.<\/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_Lock_metric_definitions_with_denominators\"><\/span>Step 1: Lock metric definitions with denominators<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Define each metric and its denominator before building fields so reports stay consistent across teams and tools. Always show the denominator alongside the rate:<\/p>\n<ul>\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>Deliverability Rate<\/strong> = delivered emails \/ sent emails<\/li>\n<li><strong>Bounce Rate<\/strong> = bounced emails \/ sent emails<\/li>\n<li><strong>Reply Rate<\/strong> = replies \/ delivered emails<\/li>\n<\/ul>\n<p>Delivery and bounce events should come from the <strong>email tool<\/strong>. The <strong>ATS<\/strong> stores the resulting contact truth (suppression, opt-out, verification dates) so recruiters can&#8217;t accidentally re-contact a suppressed provider record.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Step_2_Implement_the_minimum_viable_fields_first\"><\/span>Step 2: Implement the minimum viable fields first<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>These are the smallest set of fields that make outreach metrics trustworthy and keep provider outreach out of deliverability trouble:<\/p>\n<ul>\n<li><strong>Consent<\/strong>: status + source + timestamp<\/li>\n<li><strong>Opt-out \/ suppression<\/strong>: status + source + date + scope<\/li>\n<li><strong>Last verified date<\/strong>: email (and phone if available)<\/li>\n<li><strong>Last touched date<\/strong>: by channel<\/li>\n<li><strong>Outcomes by channel<\/strong>: standardized picklists<\/li>\n<li><strong>Bounce type + bounce reason<\/strong>: hard\/soft plus reason taxonomy<\/li>\n<li><strong>Wrong-person flag<\/strong>: plus corrected-contact workflow<\/li>\n<li><strong>Suppression source\/date<\/strong>: always auditable<\/li>\n<\/ul>\n<p>For the operational side of this, see <a href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/suppression-lists-opt-out-management\/\">suppression lists and opt-out management workflows<\/a>.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Step_3_Separate_contact_truth_from_touch_truth\"><\/span>Step 3: Separate contact truth from touch truth<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Keep contact-level facts separate from events on individual outreach attempts. Mixing them can overwrite contact details or lead to incorrect suppression decisions:<\/p>\n<ul>\n<li><strong>Contact truth<\/strong> (persists): consent, opt-out\/suppression, verification dates, wrong-person flag, preferred channel.<\/li>\n<li><strong>Touch truth<\/strong> (per activity): channel, timestamp, sender identity, template\/sequence ID, outcome, bounce taxonomy (email), call disposition (dialer).<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Step_4_Create_a_channel-agnostic_Outreach_Touch_record\"><\/span>Step 4: Create a channel-agnostic Outreach Touch record<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>If your ATS supports custom objects, build an &#8220;Outreach Touch&#8221; object. If it doesn&#8217;t, simulate one with a structured activity record using required picklists. Either way, keep the fields consistent across the <strong>CRM<\/strong>, <strong>dialer<\/strong>, and <strong>email tool<\/strong> so metrics roll up correctly.<\/p>\n<p>Minimum fields for each touch:<\/p>\n<ul>\n<li>outreach_touch_id (unique)<\/li>\n<li>contact_id (ATS contact\/candidate ID)<\/li>\n<li>job_id (if applicable)<\/li>\n<li>channel (call\/email\/SMS\/other)<\/li>\n<li>touch_at (timestamp)<\/li>\n<li>sender_user_id (recruiter)<\/li>\n<li>sender_mailbox_id or sending_domain (for email)<\/li>\n<li>outcome (standardized picklist)<\/li>\n<li>outcome_at (timestamp)<\/li>\n<li>template_id \/ sequence_id (if used)<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Step_5_Add_deliverability_protection_fields\"><\/span>Step 5: Add deliverability protection fields<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>When bounces spike, use a defined bounce taxonomy and log the follow-up action. This gives ops a consistent basis for deciding whether to suppress, verify, refresh, or check authentication.<\/p>\n<ol>\n<li><strong>Classify<\/strong>: bounce_category (hard\/soft) + bounce_reason (invalid mailbox, domain not found, blocked\/policy, mailbox full, rate limited, other).<\/li>\n<li><strong>Decide the action<\/strong> and log it: suppression_action_taken = suppress \/ verify \/ refresh \/ auth_check \/ none.<\/li>\n<li><strong>Apply suppression<\/strong> as contact truth: opt_out_status + suppression_source + suppression_date + suppression_scope.<\/li>\n<\/ol>\n<p>Keep a one-page internal &#8220;bounce triage decision tree&#8221; that starts with bounce_reason and ends with the exact field updates to make in the ATS.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Step_6_Standardize_outcomes_so_%E2%80%9Cno_answer%E2%80%9D_means_the_same_thing_everywhere\"><\/span>Step 6: Standardize outcomes so &#8220;no answer&#8221; means the same thing everywhere<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Picklists beat free text. Keep the list short enough that recruiters don&#8217;t have to guess which option applies.<\/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>Channel<\/th>\n<th>Outcome picklist (copy\/paste)<\/th>\n<th>Notes<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Call<\/td>\n<td>no answer; left voicemail; gatekeeper; wrong number; connected (voicemail\/IVR); human answered; scheduled follow-up; do-not-call request<\/td>\n<td>When &#8220;do-not-call request&#8221; occurs, set suppression_scope=phone_only and suppression_source=candidate_request.<\/td>\n<\/tr>\n<tr>\n<td>Email<\/td>\n<td>sent; delivered; bounced-soft; bounced-hard; replied-positive; replied-neutral; replied-negative; auto-reply; unsubscribed\/opt-out<\/td>\n<td>Delivery\/bounce should be sourced from the email tool event stream.<\/td>\n<\/tr>\n<tr>\n<td>SMS (if used)<\/td>\n<td>sent; delivered; failed; replied; opt-out<\/td>\n<td>Keep opt-out as contact truth in the ATS.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"Step_7_Assign_field_ownership_so_logging_actually_happens\"><\/span>Step 7: Assign field ownership so logging actually happens<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Recruiters won&#8217;t maintain a complex schema by hand. Decide what&#8217;s auto-captured versus manually set, and assign an owner to each field group.<\/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>Field group<\/th>\n<th>Where it should be captured<\/th>\n<th>Capture mode<\/th>\n<th>Owner<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Delivery events (delivered\/bounced + reason)<\/td>\n<td>Email tool<\/td>\n<td>Auto<\/td>\n<td>Ops \/ systems<\/td>\n<\/tr>\n<tr>\n<td>Suppression status + source\/date\/scope<\/td>\n<td>ATS contact record<\/td>\n<td>Auto when possible; manual allowed<\/td>\n<td>Ops policy; recruiters execute<\/td>\n<\/tr>\n<tr>\n<td>Call dispositions<\/td>\n<td>Dialer + ATS touch record<\/td>\n<td>Auto from dialer; manual fallback<\/td>\n<td>Recruiters<\/td>\n<\/tr>\n<tr>\n<td>Consent status\/source<\/td>\n<td>ATS\/CRM contact record<\/td>\n<td>Manual (structured picklist)<\/td>\n<td>Recruiters; audited by ops<\/td>\n<\/tr>\n<tr>\n<td>Verification dates<\/td>\n<td>ATS contact record<\/td>\n<td>Auto from verification workflow<\/td>\n<td>Ops \/ systems<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"Step_8_Choose_join_keys_so_your_dashboard_reconciles\"><\/span>Step 8: Choose join keys so your dashboard reconciles<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li><strong>Primary join<\/strong>: contact_id + outreach_touch_id, when available.<\/li>\n<li><strong>Fallback join<\/strong>: contact_id + channel + touch_at within a tight time window, treated as a temporary bridge until you add a stable touch ID.<\/li>\n<li><strong>System-of-record rule<\/strong>: use the email tool for delivered\/bounced\/replied events, the dialer for dials\/connects\/answers, and the ATS for suppression\/consent\/verification and for tying touches to pipeline stages.<\/li>\n<\/ul>\n<p>This is how you avoid the argument where the ATS says &#8220;sent 500&#8221; and the email tool says &#8220;delivered 430&#8221; and nobody trusts either number.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Step_9_Build_a_copypaste_schema\"><\/span>Step 9: Build a copy\/paste schema<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>The appendix below is a vendor-agnostic field map you can hand to ops or your ATS admin. It&#8217;s designed to map cleanly across an <strong>ATS<\/strong>, <strong>CRM<\/strong>, <strong>dialer<\/strong>, and <strong>email tool<\/strong>.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Diagnostic_table\"><\/span>Diagnostic table<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Use this to figure out why outreach metrics don&#8217;t reconcile across systems.<\/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>Symptom<\/th>\n<th>Likely root cause<\/th>\n<th>Field(s) missing or inconsistent<\/th>\n<th>Fix (ops action)<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Reply Rate looks &#8220;too low&#8221; in ATS vs email tool<\/td>\n<td>Replies counted against sent instead of delivered<\/td>\n<td>delivered outcome + delivered timestamp; reply outcome + reply timestamp<\/td>\n<td>Store delivered\/replied as touch outcomes; report Reply Rate = replies \/ delivered emails<\/td>\n<\/tr>\n<tr>\n<td>Recruiters keep emailing people who opted out<\/td>\n<td>Opt-out stored in one tool only; no contact-level suppression truth<\/td>\n<td>opt_out_status; suppression_source\/date; suppression_scope<\/td>\n<td>Make suppression a required contact field in ATS; block sequences when suppressed<\/td>\n<\/tr>\n<tr>\n<td>Bounce Rate spikes and nobody knows what to do<\/td>\n<td>No bounce taxonomy; no logged action; no owner<\/td>\n<td>bounce_category; bounce_reason; suppression_action_taken<\/td>\n<td>Use the bounce triage ladder; route auth_check to whoever owns sending domains<\/td>\n<\/tr>\n<tr>\n<td>Call metrics don&#8217;t predict pipeline movement<\/td>\n<td>Dialer dispositions don&#8217;t map to human answers<\/td>\n<td>total_dials; connected_calls; human_answers; call_outcome<\/td>\n<td>Enforce definitions: Connect Rate = connected calls \/ total dials; Answer Rate = human answers \/ connected calls<\/td>\n<\/tr>\n<tr>\n<td>Wrong-person contacts keep recycling into campaigns<\/td>\n<td>No wrong-person flag; no corrected-contact workflow<\/td>\n<td>wrong_person_flag; suppression_scope; refresh_task<\/td>\n<td>Set wrong_person_flag=true; suppress that email\/phone; create a refresh task<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>Keep a short &#8220;postmaster checks&#8221; checklist for whoever owns sending domains: authentication alignment, reputation signals, and sudden list-quality changes.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Weighted_checklist\"><\/span>Weighted checklist<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Score your current schema against this 100-point checklist before rebuilding it. Treat the score as an internal prioritization aid; the checklist does not establish a validated threshold for metric quality or deliverability risk.<\/p>\n<ul>\n<li><strong>(20)<\/strong> Contact-level suppression is explicit (status + source + date + scope)<\/li>\n<li><strong>(15)<\/strong> Consent\/permission is captured (status + source + timestamp)<\/li>\n<li><strong>(15)<\/strong> Verification is captured (last verified date for email; for phone if available)<\/li>\n<li><strong>(10)<\/strong> Wrong-person handling exists (flag + suppression + refresh task)<\/li>\n<li><strong>(10)<\/strong> Touch outcomes are standardized across channels (picklists, not free text)<\/li>\n<li><strong>(10)<\/strong> Bounce taxonomy exists (hard\/soft + reason)<\/li>\n<li><strong>(10)<\/strong> &#8220;Last touched date&#8221; is tracked by channel (prevents over-contacting)<\/li>\n<li><strong>(10)<\/strong> Reporting uses correct denominators (sent vs delivered; dials vs connected)<\/li>\n<\/ul>\n<p><strong>Nice-to-have:<\/strong> template_id\/sequence_id on touches, so you can isolate which messaging correlates with bounces, opt-outs, or replies without reading notes.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Internal_ops_templates\"><\/span>Internal ops templates<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>These are internal templates, not candidate-facing messaging. They reduce back-and-forth and keep logging consistent across the ATS\/CRM\/dialer\/email tool stack.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Template_1_Ops_ticket_to_implement_the_field_map\"><\/span>Template 1: Ops ticket to implement the field map<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><strong>Subject:<\/strong> Implement ATS outreach metrics field schema (contact + touch)<\/p>\n<p><strong>Body:<\/strong> Add the fields in the attached schema to our ATS and make them available for reporting exports. We need contact-level truth fields (consent, suppression\/opt-out, verification dates, wrong-person flag) and touch-level outcome fields (channel outcomes, bounce taxonomy, template\/sequence IDs). Deliverables: fields created, picklists configured, required fields enforced on Outreach Touch records, an export\/report view, and documentation for auto-captured vs manual fields.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Template_2_Recruiter_SOP_snippet\"><\/span>Template 2: Recruiter SOP snippet<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><strong>When you email:<\/strong> confirm the touch has channel=email and an outcome. Delivery\/bounce should be auto-captured from the email tool. On a reply, set outcome=replied-[positive\/neutral\/negative]. On an opt-out, set opt_out_status=true immediately.<\/p>\n<p><strong>When you call:<\/strong> log the call outcome. If a human answers, mark outcome=human answered, since that drives Answer Rate. If it&#8217;s the wrong person, set wrong_person_flag=true and suppress that phone\/email.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Template_3_Deliverability_incident_note\"><\/span>Template 3: Deliverability incident note<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><strong>Subject:<\/strong> Bounce spike triage (time window + sending domain\/mailbox)<\/p>\n<p><strong>Body:<\/strong> We observed increased bounces. Review the bounce_reason distribution (hard vs soft; invalid mailbox vs blocked\/policy). Suppress hard bounces, verify or refresh questionable contacts, and run authentication checks against Postmaster signals. Log suppression_action_taken on the touch and suppression_source\/date\/scope on the contact.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Common_pitfalls\"><\/span>Common pitfalls<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"1_Counting_%E2%80%9Csent%E2%80%9D_as_%E2%80%9Cdelivered%E2%80%9D\"><\/span>1. Counting &#8220;sent&#8221; as &#8220;delivered&#8221;<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>If you count sent emails instead of delivered emails, the denominator may be larger and the Reply Rate may look lower. Store sent and delivered separately, and report Reply Rate as replies divided by delivered emails.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"2_Opt-outs_stored_as_notes_instead_of_suppression_fields\"><\/span>2. Opt-outs stored as notes instead of suppression fields<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Opt-outs living in notes won&#8217;t block future outreach. Make suppression a contact-level truth field with source, date, and scope so it&#8217;s auditable and enforceable.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"3_Bounce_type_without_bounce_reason\"><\/span>3. Bounce type without bounce reason<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Hard vs soft isn&#8217;t enough to act on. You need a reason taxonomy to decide whether to suppress, verify, refresh, or run authentication checks.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"4_Wrong-person_contacts_not_treated_as_a_data_quality_event\"><\/span>4. Wrong-person contacts not treated as a data quality event<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>A wrong-person result should trigger suppression of that specific email or phone number plus a refresh task. Otherwise it keeps recycling back into sequences.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"5_Overbuilding_fields_nobody_uses\"><\/span>5. Overbuilding fields nobody uses<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Start with the minimum viable fields. Add nice-to-have fields only once you see consistent logging behavior.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"How_to_improve_results\"><\/span>How to improve results<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"1_Build_a_weekly_outreach_health_report\"><\/span>1. Build a weekly outreach health report<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Show rates with denominators, broken out by recruiter and by sending domain or mailbox, not just raw counts.<\/p>\n<p><strong>Email columns:<\/strong><\/p>\n<ul>\n<li>sent_emails<\/li>\n<li>delivered_emails<\/li>\n<li>bounced_emails<\/li>\n<li>replies<\/li>\n<li>Deliverability Rate = delivered_emails \/ sent_emails<\/li>\n<li>Bounce Rate = bounced_emails \/ sent_emails<\/li>\n<li>Reply Rate = replies \/ delivered_emails<\/li>\n<\/ul>\n<p><strong>Call columns:<\/strong><\/p>\n<ul>\n<li>total_dials<\/li>\n<li>connected_calls<\/li>\n<li>human_answers<\/li>\n<li>Connect Rate = connected_calls \/ total_dials<\/li>\n<li>Answer Rate = human_answers \/ connected_calls<\/li>\n<\/ul>\n<p>Pull delivery\/bounce\/reply events from the email tool, dials\/connects\/answers from the dialer, and suppression\/consent\/verification from the ATS contact record. Join on contact_id and outreach_touch_id.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"2_Use_the_bounce_triage_ladder_to_protect_sending_domains\"><\/span>2. Use the bounce triage ladder to protect sending domains<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>When bounces rise, don&#8217;t guess. Classify by bounce_reason, take the logged action, and update contact-level suppression truth so the same bad address doesn&#8217;t get hit twice.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"3_Tighten_verification_and_refresh_cadence\"><\/span>3. Tighten verification and refresh cadence<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Verification dates help teams decide when to verify or refresh contact details. If last_verified_email_at is stale, consider verifying or refreshing before sending. If verification isn&#8217;t available, prioritize recently verified contacts and review repeated bounces before sending again.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Implementation_notes\"><\/span>Implementation notes<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Keep a one-page field map with: field name, object (contact\/touch), type, allowed values, whether it&#8217;s required, source system, and reporting use.<\/p>\n<p>For deliverability monitoring during incidents, review reputation and error signals in <a href=\"https:\/\/postmaster.google.com\/\">Google Postmaster Tools<\/a> and align authentication settings as needed.<\/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>Outreach data on healthcare providers includes personal contact information and communication preferences. Treat suppression and opt-outs as first-class fields, not optional notes. Honor opt-out requests quickly, avoid contacting suppressed records, and document consent where applicable. If you operate across regions, align your process with local data laws and your organization&#8217;s policies.<\/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 publish how we define and audit outreach metrics so ops teams can compare results across tools. Start here: <a href=\"http:\/\/heartbeat.ai\/resources\/trust-methodology\/\">Heartbeat trust methodology<\/a> and the deeper definitions page <a href=\"http:\/\/heartbeat.ai\/resources\/trust-methodology\/accuracy-and-metrics-definitions\/\">accuracy and metrics definitions<\/a>.<\/p>\n<p>Deliverability references used in this playbook:<\/p>\n<ul>\n<li><a href=\"https:\/\/support.google.com\/a\/answer\/81126?hl=en\">Google Workspace Admin Help: Set up SPF, DKIM, and DMARC<\/a><\/li>\n<li><a href=\"https:\/\/postmaster.google.com\/\">Google Postmaster Tools<\/a><\/li>\n<\/ul>\n<p>Related internal playbooks:<\/p>\n<ul>\n<li><a href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/reply-rate-tracking-for-physician-outreach\/\">Reply rate tracking for physician outreach<\/a><\/li>\n<li><a href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/suppression-lists-opt-out-management\/\">Suppression lists and opt-out management<\/a><\/li>\n<li><a href=\"http:\/\/heartbeat.ai\/resources\/provider-contact-data\/how-to-build-a-physician-call-list\/\">How to build a physician call list<\/a><\/li>\n<\/ul>\n<section class=\"aeo-faq\">\n<h2><span class=\"ez-toc-section\" id=\"FAQs\"><\/span>FAQs<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"What_are_the_minimum_viable_fields_I_need_to_report_outreach_metrics_in_an_ATS\"><\/span>What are the minimum viable fields I need to report outreach metrics in an ATS?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>At minimum: consent status\/source\/timestamp, opt-out\/suppression (status + source + date + scope), last verified date, last touched date by channel, standardized channel outcomes, bounce category + reason, wrong-person flag, and suppression source\/date.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Where_should_bounce_data_live_ATS_or_email_tool\"><\/span>Where should bounce data live: ATS or email tool?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>The email tool should be the system of record for delivery events (delivered\/bounced and bounce reason). The ATS should store the resulting contact truth: suppression status, suppression source\/date, suppression scope, and last verified date.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"How_do_I_keep_call_metrics_consistent_between_a_dialer_and_the_ATS\"><\/span>How do I keep call metrics consistent between a dialer and the ATS?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Standardize dispositions and report using fixed definitions: Connect Rate = connected calls \/ total dials; Answer Rate = human answers \/ connected calls. Store the call outcome on the touch record and roll up weekly.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"What_fields_prevent_repeated_outreach_to_the_wrong_person\"><\/span>What fields prevent repeated outreach to the wrong person?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Add a wrong-person flag at the contact level, suppress the specific email\/phone that was wrong, and create a refresh task to find the correct contact. Don&#8217;t leave it as a note.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"How_do_I_protect_deliverability_when_bounces_spike\"><\/span>How do I protect deliverability when bounces spike?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Use a bounce taxonomy (hard\/soft + reason) and a logged action field (suppress\/verify\/refresh\/auth_check). Review authentication and reputation signals using Postmaster, and stop sending to known-bad addresses.<\/p>\n<\/section>\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>Implement the <strong>minimum viable fields<\/strong> first, then enforce required picklists on Outreach Touch records.<\/li>\n<li>Standardize reporting using the definitions in <a href=\"http:\/\/heartbeat.ai\/resources\/trust-methodology\/accuracy-and-metrics-definitions\/\">accuracy and metrics definitions<\/a>.<\/li>\n<li>If you want a workflow that includes <strong>ranked mobile numbers by answer probability<\/strong>, start here: <a href=\"https:\/\/heartbeat.ai\/signup\">create a Heartbeat account<\/a>.<\/li>\n<\/ul>\n<p><strong>Appendix: CSV-ready field map (copy\/paste)<\/strong><\/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>Field Name<\/th>\n<th>Object<\/th>\n<th>Type<\/th>\n<th>Allowed Values \/ Notes<\/th>\n<th>Required?<\/th>\n<th>Primary Source<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>consent_status<\/td>\n<td>Contact<\/td>\n<td>Picklist<\/td>\n<td>unknown, implied, explicit, do_not_contact<\/td>\n<td>Yes<\/td>\n<td>ATS\/CRM<\/td>\n<\/tr>\n<tr>\n<td>consent_source<\/td>\n<td>Contact<\/td>\n<td>Picklist<\/td>\n<td>candidate_provided, referral, public_profile, prior_relationship, other<\/td>\n<td>Yes<\/td>\n<td>ATS\/CRM<\/td>\n<\/tr>\n<tr>\n<td>consent_at<\/td>\n<td>Contact<\/td>\n<td>DateTime<\/td>\n<td>ISO timestamp<\/td>\n<td>No<\/td>\n<td>ATS\/CRM<\/td>\n<\/tr>\n<tr>\n<td>opt_out_status<\/td>\n<td>Contact<\/td>\n<td>Boolean<\/td>\n<td>true\/false<\/td>\n<td>Yes<\/td>\n<td>ATS (system of record)<\/td>\n<\/tr>\n<tr>\n<td>suppression_source<\/td>\n<td>Contact<\/td>\n<td>Picklist<\/td>\n<td>candidate_request, bounce, internal_compliance, other<\/td>\n<td>Yes<\/td>\n<td>ATS<\/td>\n<\/tr>\n<tr>\n<td>suppression_date<\/td>\n<td>Contact<\/td>\n<td>DateTime<\/td>\n<td>ISO timestamp<\/td>\n<td>Yes<\/td>\n<td>ATS<\/td>\n<\/tr>\n<tr>\n<td>suppression_scope<\/td>\n<td>Contact<\/td>\n<td>Picklist<\/td>\n<td>email_only, phone_only, all_channels, domain_level<\/td>\n<td>Yes<\/td>\n<td>ATS<\/td>\n<\/tr>\n<tr>\n<td>last_verified_email_at<\/td>\n<td>Contact<\/td>\n<td>DateTime<\/td>\n<td>Last time email was verified<\/td>\n<td>Yes<\/td>\n<td>Verification workflow<\/td>\n<\/tr>\n<tr>\n<td>last_verified_phone_at<\/td>\n<td>Contact<\/td>\n<td>DateTime<\/td>\n<td>Last time phone was verified<\/td>\n<td>No<\/td>\n<td>Verification workflow<\/td>\n<\/tr>\n<tr>\n<td>last_touched_email_at<\/td>\n<td>Contact<\/td>\n<td>DateTime<\/td>\n<td>Last email touch timestamp<\/td>\n<td>Yes<\/td>\n<td>Email tool<\/td>\n<\/tr>\n<tr>\n<td>last_touched_call_at<\/td>\n<td>Contact<\/td>\n<td>DateTime<\/td>\n<td>Last call touch timestamp<\/td>\n<td>Yes<\/td>\n<td>Dialer<\/td>\n<\/tr>\n<tr>\n<td>wrong_person_flag<\/td>\n<td>Contact<\/td>\n<td>Boolean<\/td>\n<td>true\/false<\/td>\n<td>Yes<\/td>\n<td>ATS\/CRM<\/td>\n<\/tr>\n<tr>\n<td>outreach_touch_id<\/td>\n<td>Touch<\/td>\n<td>Text<\/td>\n<td>Unique ID<\/td>\n<td>Yes<\/td>\n<td>ATS\/CRM<\/td>\n<\/tr>\n<tr>\n<td>contact_id<\/td>\n<td>Touch<\/td>\n<td>Text<\/td>\n<td>ATS contact\/candidate ID<\/td>\n<td>Yes<\/td>\n<td>ATS<\/td>\n<\/tr>\n<tr>\n<td>job_id<\/td>\n<td>Touch<\/td>\n<td>Text<\/td>\n<td>Requisition\/job ID (if applicable)<\/td>\n<td>No<\/td>\n<td>ATS<\/td>\n<\/tr>\n<tr>\n<td>channel<\/td>\n<td>Touch<\/td>\n<td>Picklist<\/td>\n<td>call, email, sms, other<\/td>\n<td>Yes<\/td>\n<td>ATS\/CRM<\/td>\n<\/tr>\n<tr>\n<td>touch_at<\/td>\n<td>Touch<\/td>\n<td>DateTime<\/td>\n<td>ISO timestamp<\/td>\n<td>Yes<\/td>\n<td>ATS\/CRM<\/td>\n<\/tr>\n<tr>\n<td>sender_user_id<\/td>\n<td>Touch<\/td>\n<td>Text<\/td>\n<td>Recruiter user ID<\/td>\n<td>Yes<\/td>\n<td>ATS\/CRM<\/td>\n<\/tr>\n<tr>\n<td>sending_domain<\/td>\n<td>Touch<\/td>\n<td>Text<\/td>\n<td>Domain used to send the email (if applicable)<\/td>\n<td>No<\/td>\n<td>Email tool<\/td>\n<\/tr>\n<tr>\n<td>outcome<\/td>\n<td>Touch<\/td>\n<td>Picklist<\/td>\n<td>Use the standardized outcomes table in Step 6<\/td>\n<td>Yes<\/td>\n<td>ATS\/CRM<\/td>\n<\/tr>\n<tr>\n<td>outcome_at<\/td>\n<td>Touch<\/td>\n<td>DateTime<\/td>\n<td>ISO timestamp<\/td>\n<td>No<\/td>\n<td>ATS\/CRM<\/td>\n<\/tr>\n<tr>\n<td>bounce_category<\/td>\n<td>Touch<\/td>\n<td>Picklist<\/td>\n<td>hard, soft, none<\/td>\n<td>No<\/td>\n<td>Email tool<\/td>\n<\/tr>\n<tr>\n<td>bounce_reason<\/td>\n<td>Touch<\/td>\n<td>Picklist<\/td>\n<td>invalid_mailbox, domain_not_found, blocked_policy, mailbox_full, rate_limited, other<\/td>\n<td>No<\/td>\n<td>Email tool<\/td>\n<\/tr>\n<tr>\n<td>suppression_action_taken<\/td>\n<td>Touch<\/td>\n<td>Picklist<\/td>\n<td>suppress, verify, refresh, auth_check, none<\/td>\n<td>No<\/td>\n<td>ATS\/CRM<\/td>\n<\/tr>\n<tr>\n<td>template_id<\/td>\n<td>Touch<\/td>\n<td>Text<\/td>\n<td>Email template identifier<\/td>\n<td>No<\/td>\n<td>Email tool<\/td>\n<\/tr>\n<tr>\n<td>sequence_id<\/td>\n<td>Touch<\/td>\n<td>Text<\/td>\n<td>Sequence\/cadence identifier<\/td>\n<td>No<\/td>\n<td>Email tool<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p><em>Note:<\/em> This page is vendor-agnostic by design and does not assume or claim any native integration between systems.<\/p>\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\":\"Recruiting Ops\",\"author\":{\"@type\":\"Person\",\"jobTitle\":\"Founder & CEO of Heartbeat.ai\",\"name\":\"Ben Argeband\"},\"dateModified\":\"2026-01-05\",\"datePublished\":\"2026-01-05\",\"headline\":\"ATS fields for outreach metrics (copy\/paste schema + field map)\",\"isAccessibleForFree\":true,\"keywords\":[\"ATS fields for outreach metrics\",\"ATS field mapping outreach\",\"recruiting metrics fields\",\"contact data fields ATS\"],\"mainEntityOfPage\":{\"@id\":\"https:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/\",\"@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: consent status\/source\/timestamp, opt-out\/suppression (status + source + date + scope), last verified date, last touched date by channel, standardized channel outcomes, bounce category + reason, wrong-person flag, and suppression source\/date.\"},\"name\":\"What are the minimum viable fields I need to report outreach metrics in an ATS?\"},{\"@type\":\"Question\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"The email tool should be the system of record for delivery events (delivered\/bounced and bounce reason). The ATS should store the resulting contact truth: suppression status, suppression source\/date, suppression scope, and last verified date.\"},\"name\":\"Where should bounce data live: ATS or email tool?\"},{\"@type\":\"Question\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Standardize dispositions and report using fixed definitions: Connect Rate = connected calls \/ total dials; Answer Rate = human answers \/ connected calls. Store the call outcome on the touch record and roll up weekly.\"},\"name\":\"How do I keep call metrics consistent between a dialer and the ATS?\"},{\"@type\":\"Question\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Add a wrong-person flag at the contact level, suppress the specific email\/phone that was wrong, and create a refresh task to find the correct contact. Don't leave it as a note.\"},\"name\":\"What fields prevent repeated outreach to the wrong person?\"},{\"@type\":\"Question\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Use a bounce taxonomy (hard\/soft + reason) and a logged action field (suppress\/verify\/refresh\/auth_check). Review authentication and reputation signals using Postmaster, and stop sending to known-bad addresses.\"},\"name\":\"How do I protect deliverability when bounces spike?\"}]}<\/script><\/p>","protected":false},"excerpt":{"rendered":"<p>A vendor-agnostic ATS field schema for outreach metrics: consent, suppression, verification, channel outcomes, and bounce taxonomy that reconciles across tools.<\/p>","protected":false},"author":5,"featured_media":54182,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_custom_permalink":"recruiting-ops\/ats-field-schema-for-outreach-metrics","footnotes":""},"categories":[1],"tags":[],"class_list":["post-54183","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.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\r\n<title>ATS fields for outreach metrics: minimum viable schema + field map<\/title>\r\n<meta name=\"description\" content=\"Copy\/paste ATS field schema to track outreach metrics across ATS\/CRM\/dialer\/email tools: consent, opt-out suppression, verification dates, bounce taxonomy, and standardized outcomes with definitions.\" \/>\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=\"https:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/\" \/>\r\n<meta property=\"og:locale\" content=\"en_US\" \/>\r\n<meta property=\"og:type\" content=\"article\" \/>\r\n<meta property=\"og:title\" content=\"ATS fields for outreach metrics: minimum viable schema + field map\" \/>\r\n<meta property=\"og:description\" content=\"Copy\/paste ATS field schema to track outreach metrics across ATS\/CRM\/dialer\/email tools: consent, opt-out suppression, verification dates, bounce taxonomy, and standardized outcomes with definitions.\" \/>\r\n<meta property=\"og:url\" content=\"https:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/\" \/>\r\n<meta property=\"og:site_name\" content=\"Heartbeat.ai\" \/>\r\n<meta property=\"article:published_time\" content=\"2026-02-01T18:33:20+00:00\" \/>\r\n<meta property=\"article:modified_time\" content=\"2026-10-19T18:54:00+00:00\" \/>\r\n<meta property=\"og:image\" content=\"https:\/\/hc.heartbeat.ai\/wp-content\/uploads\/2026\/02\/ats-field-schema-for-outreach-metrics-ca6dd388.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\":\"https:\\\/\\\/heartbeat.ai\\\/resources\\\/recruiting-ops\\\/ats-field-schema-for-outreach-metrics\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/heartbeat.ai\\\/resources\\\/recruiting-ops\\\/ats-field-schema-for-outreach-metrics\\\/\"},\"author\":{\"name\":\"Ben Argeband\",\"@id\":\"https:\\\/\\\/heartbeat.ai\\\/resources\\\/#\\\/schema\\\/person\\\/e9bcffa7dc47cac9f2379e4449e98207\"},\"headline\":\"ATS fields for outreach metrics (copy\\\/paste schema + field map)\",\"datePublished\":\"2026-02-01T18:33:20+00:00\",\"dateModified\":\"2026-10-19T18:54:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/heartbeat.ai\\\/resources\\\/recruiting-ops\\\/ats-field-schema-for-outreach-metrics\\\/\"},\"wordCount\":2973,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/heartbeat.ai\\\/resources\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/heartbeat.ai\\\/resources\\\/recruiting-ops\\\/ats-field-schema-for-outreach-metrics\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/hc.heartbeat.ai\\\/wp-content\\\/uploads\\\/2026\\\/02\\\/ats-field-schema-for-outreach-metrics-ca6dd388.png\",\"articleSection\":[\"News\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/heartbeat.ai\\\/resources\\\/recruiting-ops\\\/ats-field-schema-for-outreach-metrics\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/heartbeat.ai\\\/resources\\\/recruiting-ops\\\/ats-field-schema-for-outreach-metrics\\\/\",\"url\":\"https:\\\/\\\/heartbeat.ai\\\/resources\\\/recruiting-ops\\\/ats-field-schema-for-outreach-metrics\\\/\",\"name\":\"ATS fields for outreach metrics: minimum viable schema + field map\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/heartbeat.ai\\\/resources\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/heartbeat.ai\\\/resources\\\/recruiting-ops\\\/ats-field-schema-for-outreach-metrics\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/heartbeat.ai\\\/resources\\\/recruiting-ops\\\/ats-field-schema-for-outreach-metrics\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/hc.heartbeat.ai\\\/wp-content\\\/uploads\\\/2026\\\/02\\\/ats-field-schema-for-outreach-metrics-ca6dd388.png\",\"datePublished\":\"2026-02-01T18:33:20+00:00\",\"dateModified\":\"2026-10-19T18:54:00+00:00\",\"description\":\"Copy\\\/paste ATS field schema to track outreach metrics across ATS\\\/CRM\\\/dialer\\\/email tools: consent, opt-out suppression, verification dates, bounce taxonomy, and standardized outcomes with definitions.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/heartbeat.ai\\\/resources\\\/recruiting-ops\\\/ats-field-schema-for-outreach-metrics\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/heartbeat.ai\\\/resources\\\/recruiting-ops\\\/ats-field-schema-for-outreach-metrics\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/heartbeat.ai\\\/resources\\\/recruiting-ops\\\/ats-field-schema-for-outreach-metrics\\\/#primaryimage\",\"url\":\"http:\\\/\\\/hc.heartbeat.ai\\\/wp-content\\\/uploads\\\/2026\\\/02\\\/ats-field-schema-for-outreach-metrics-ca6dd388.png\",\"contentUrl\":\"http:\\\/\\\/hc.heartbeat.ai\\\/wp-content\\\/uploads\\\/2026\\\/02\\\/ats-field-schema-for-outreach-metrics-ca6dd388.png\",\"width\":1024,\"height\":1024},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/heartbeat.ai\\\/resources\\\/recruiting-ops\\\/ats-field-schema-for-outreach-metrics\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/heartbeat.ai\\\/resources\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"ATS fields for outreach metrics (copy\\\/paste schema + field map)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/heartbeat.ai\\\/resources\\\/#website\",\"url\":\"https:\\\/\\\/heartbeat.ai\\\/resources\\\/\",\"name\":\"Heartbeat.ai\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/heartbeat.ai\\\/resources\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/heartbeat.ai\\\/resources\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/heartbeat.ai\\\/resources\\\/#organization\",\"name\":\"Heartbeat.ai\",\"url\":\"https:\\\/\\\/heartbeat.ai\\\/resources\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/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\":\"https:\\\/\\\/heartbeat.ai\\\/resources\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/heartbeat.ai\\\/resources\\\/#\\\/schema\\\/person\\\/e9bcffa7dc47cac9f2379e4449e98207\",\"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\":\"https:\\\/\\\/heartbeat.ai\\\/resources\\\/author\\\/ben-argeband\\\/\"}]}<\/script>\r\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"ATS fields for outreach metrics: minimum viable schema + field map","description":"Copy\/paste ATS field schema to track outreach metrics across ATS\/CRM\/dialer\/email tools: consent, opt-out suppression, verification dates, bounce taxonomy, and standardized outcomes with definitions.","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":"https:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/","og_locale":"en_US","og_type":"article","og_title":"ATS fields for outreach metrics: minimum viable schema + field map","og_description":"Copy\/paste ATS field schema to track outreach metrics across ATS\/CRM\/dialer\/email tools: consent, opt-out suppression, verification dates, bounce taxonomy, and standardized outcomes with definitions.","og_url":"https:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/","og_site_name":"Heartbeat.ai","article_published_time":"2026-02-01T18:33:20+00:00","article_modified_time":"2026-10-19T18:54:00+00:00","og_image":[{"width":1024,"height":1024,"url":"https:\/\/hc.heartbeat.ai\/wp-content\/uploads\/2026\/02\/ats-field-schema-for-outreach-metrics-ca6dd388.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":"https:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#article","isPartOf":{"@id":"https:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/"},"author":{"name":"Ben Argeband","@id":"https:\/\/heartbeat.ai\/resources\/#\/schema\/person\/e9bcffa7dc47cac9f2379e4449e98207"},"headline":"ATS fields for outreach metrics (copy\/paste schema + field map)","datePublished":"2026-02-01T18:33:20+00:00","dateModified":"2026-10-19T18:54:00+00:00","mainEntityOfPage":{"@id":"https:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/"},"wordCount":2973,"commentCount":0,"publisher":{"@id":"https:\/\/heartbeat.ai\/resources\/#organization"},"image":{"@id":"https:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#primaryimage"},"thumbnailUrl":"http:\/\/hc.heartbeat.ai\/wp-content\/uploads\/2026\/02\/ats-field-schema-for-outreach-metrics-ca6dd388.png","articleSection":["News"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/","url":"https:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/","name":"ATS fields for outreach metrics: minimum viable schema + field map","isPartOf":{"@id":"https:\/\/heartbeat.ai\/resources\/#website"},"primaryImageOfPage":{"@id":"https:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#primaryimage"},"image":{"@id":"https:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#primaryimage"},"thumbnailUrl":"http:\/\/hc.heartbeat.ai\/wp-content\/uploads\/2026\/02\/ats-field-schema-for-outreach-metrics-ca6dd388.png","datePublished":"2026-02-01T18:33:20+00:00","dateModified":"2026-10-19T18:54:00+00:00","description":"Copy\/paste ATS field schema to track outreach metrics across ATS\/CRM\/dialer\/email tools: consent, opt-out suppression, verification dates, bounce taxonomy, and standardized outcomes with definitions.","breadcrumb":{"@id":"https:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#primaryimage","url":"http:\/\/hc.heartbeat.ai\/wp-content\/uploads\/2026\/02\/ats-field-schema-for-outreach-metrics-ca6dd388.png","contentUrl":"http:\/\/hc.heartbeat.ai\/wp-content\/uploads\/2026\/02\/ats-field-schema-for-outreach-metrics-ca6dd388.png","width":1024,"height":1024},{"@type":"BreadcrumbList","@id":"https:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/heartbeat.ai\/resources\/"},{"@type":"ListItem","position":2,"name":"ATS fields for outreach metrics (copy\/paste schema + field map)"}]},{"@type":"WebSite","@id":"https:\/\/heartbeat.ai\/resources\/#website","url":"https:\/\/heartbeat.ai\/resources\/","name":"Heartbeat.ai","description":"","publisher":{"@id":"https:\/\/heartbeat.ai\/resources\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/heartbeat.ai\/resources\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/heartbeat.ai\/resources\/#organization","name":"Heartbeat.ai","url":"https:\/\/heartbeat.ai\/resources\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/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":"https:\/\/heartbeat.ai\/resources\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/heartbeat.ai\/resources\/#\/schema\/person\/e9bcffa7dc47cac9f2379e4449e98207","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":"https:\/\/heartbeat.ai\/resources\/author\/ben-argeband\/"}]}},"permalink_manager":null,"_links":{"self":[{"href":"http:\/\/heartbeat.ai\/resources\/wp-json\/wp\/v2\/posts\/54183","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=54183"}],"version-history":[{"count":5,"href":"http:\/\/heartbeat.ai\/resources\/wp-json\/wp\/v2\/posts\/54183\/revisions"}],"predecessor-version":[{"id":66909,"href":"http:\/\/heartbeat.ai\/resources\/wp-json\/wp\/v2\/posts\/54183\/revisions\/66909"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/heartbeat.ai\/resources\/wp-json\/wp\/v2\/media\/54182"}],"wp:attachment":[{"href":"http:\/\/heartbeat.ai\/resources\/wp-json\/wp\/v2\/media?parent=54183"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/heartbeat.ai\/resources\/wp-json\/wp\/v2\/categories?post=54183"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/heartbeat.ai\/resources\/wp-json\/wp\/v2\/tags?post=54183"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}