{"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-02-27T13:31:58","modified_gmt":"2026-02-27T19:31:58","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":"<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<h1>ATS fields for outreach metrics<\/h1>\n<p><strong>Ben Argeband, Founder &amp; CEO of Heartbeat.ai<\/strong> \u2014 Keep it plug-and-play; avoid vendor specifics.<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_65 counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\r\n<div class=\"ez-toc-title-container\">\r\n<p class=\"ez-toc-title\" >What&rsquo;s on this page:<\/p>\r\n<span class=\"ez-toc-title-toggle\"><\/span><\/div>\r\n<nav><ul class='ez-toc-list ez-toc-list-level-1' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#Who_this_is_for\" title=\"Who this is for\">Who this is for<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#Quick_Answer\" title=\"Quick Answer\">Quick Answer<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#Framework_%E2%80%9CClean_data_calm_recruiting%E2%80%9D_ops_reality\" title=\"Framework: \u201cClean data, calm recruiting\u201d ops reality\">Framework: \u201cClean data, calm recruiting\u201d ops reality<\/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\/#Step-by-step_method\" title=\"Step-by-step method\">Step-by-step method<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#Step_1_Lock_metric_definitions_with_denominators\" title=\"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-6\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#Step_2_Implement_the_minimum_viable_fields_MVF_first\" title=\"Step 2: Implement the minimum viable fields (MVF) first\">Step 2: Implement the minimum viable fields (MVF) first<\/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_3_Separate_contact_truth_from_touch_truth\" title=\"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-8\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#Step_4_Create_a_channel-agnostic_Outreach_Touch_record\" title=\"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-9\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#Step_5_Add_deliverability_protection_fields_bounce_triage_ladder_worksheet\" title=\"Step 5: Add deliverability protection fields (bounce triage ladder worksheet)\">Step 5: Add deliverability protection fields (bounce triage ladder worksheet)<\/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_6_Standardize_outcomes_so_%E2%80%9Cno_answer%E2%80%9D_means_the_same_thing_everywhere\" title=\"Step 6: Standardize outcomes so \u201cno answer\u201d means the same thing everywhere\">Step 6: Standardize outcomes so \u201cno answer\u201d 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-11\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#Step_7_Assign_field_ownership_auto_vs_manual_so_logging_actually_happens\" title=\"Step 7: Assign field ownership (auto vs manual) so logging actually happens\">Step 7: Assign field ownership (auto vs manual) 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-12\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#Step_8_Joining_data_for_reporting_so_your_dashboard_reconciles\" title=\"Step 8: Joining data for reporting (so your dashboard reconciles)\">Step 8: Joining data for reporting (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-13\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#Step_9_Build_your_copypaste_schema_field_map_CSV-ready\" title=\"Step 9: Build your copy\/paste schema (field map + CSV-ready)\">Step 9: Build your copy\/paste schema (field map + CSV-ready)<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#Diagnostic_Table\" title=\"Diagnostic Table:\">Diagnostic Table:<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#Weighted_Checklist\" title=\"Weighted Checklist:\">Weighted Checklist:<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#Outreach_Templates\" title=\"Outreach Templates:\">Outreach Templates:<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#Template_1_Ops_ticket_to_implement_the_field_map\" title=\"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-18\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#Template_2_Recruiter_SOP_snippet_what_to_log_when\" title=\"Template 2: Recruiter SOP snippet (what to log, when)\">Template 2: Recruiter SOP snippet (what to log, when)<\/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_3_Deliverability_incident_note_bounce_spike\" title=\"Template 3: Deliverability incident note (bounce spike)\">Template 3: Deliverability incident note (bounce spike)<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-20\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#Common_pitfalls\" title=\"Common pitfalls\">Common pitfalls<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-21\" 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\" title=\"1) Counting \u201csent\u201d as \u201cdelivered\u201d\">1) Counting \u201csent\u201d as \u201cdelivered\u201d<\/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\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#2_Opt-outs_stored_as_notes_instead_of_suppression_fields\" title=\"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-23\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#3_Bounce_type_without_bounce_reason\" title=\"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-24\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#4_Wrong-person_isnt_treated_as_a_data_quality_event\" title=\"4) Wrong-person isn\u2019t treated as a data quality event\">4) Wrong-person isn\u2019t 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-25\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#5_Overbuilding_fields_nobody_uses\" title=\"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-26\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#How_to_improve_results\" title=\"How to improve results\">How to improve results<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-27\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#1_Build_a_weekly_outreach_health_report_examples\" title=\"1) Build a weekly outreach health report (examples)\">1) Build a weekly outreach health report (examples)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-28\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#2_Use_the_bounce_triage_ladder_to_protect_domains\" title=\"2) Use the bounce triage ladder to protect domains\">2) Use the bounce triage ladder to protect domains<\/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\/#3_Tighten_verification_and_refresh_cadence_without_overpromising\" title=\"3) Tighten verification and refresh cadence (without overpromising)\">3) Tighten verification and refresh cadence (without overpromising)<\/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\/#Implementation_Notes\" title=\"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-31\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#Legal_and_ethical_use\" title=\"Legal and ethical use\">Legal and ethical use<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-32\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#Evidence_and_trust_notes\" title=\"Evidence and trust notes\">Evidence and trust notes<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-33\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#FAQs\" title=\"FAQs\">FAQs<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-34\" 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\" title=\"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-35\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#Where_should_bounce_data_live_ATS_or_email_tool\" title=\"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-36\" 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\" title=\"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-37\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#What_fields_prevent_repeated_outreach_to_the_wrong_person\" title=\"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-38\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#How_do_I_protect_deliverability_when_bounces_spike\" title=\"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-39\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#Next_steps\" title=\"Next steps\">Next steps<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-40\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#About_the_Author\" title=\"About the Author\">About the Author<\/a><\/li><\/ul><\/nav><\/div>\r\n<h2><span class=\"ez-toc-section\" id=\"Who_this_is_for\"><\/span>Who this is for<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>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>\u2014without turning recruiters into data-entry clerks.<\/p>\n<ul>\n<li>Recruiting ops building consistent reporting and definitions<\/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 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.<\/dd>\n<dt>Key Insight<\/dt>\n<dd>Reporting breaks when \u201csent\u201d is treated as \u201cdelivered\u201d 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_%E2%80%9CClean_data_calm_recruiting%E2%80%9D_ops_reality\"><\/span>Framework: \u201cClean data, calm recruiting\u201d ops reality<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><strong>TL;DR lookup:<\/strong> Store delivery\/bounce\/reply events in the <strong>email tool<\/strong>, call events in the <strong>dialer<\/strong>, and store suppression\/consent\/verification as contact truth in the <strong>ATS\/CRM<\/strong>. Then roll up rates using consistent denominators.<\/p>\n<p>Outreach reporting fails in predictable ways: different tools disagree, recruiters log outcomes differently, and leaders lose confidence in the funnel. \u201cClean data, calm recruiting\u201d means you standardize a small set of fields that (1) protect deliverability and compliance, (2) make outcomes comparable across channels, and (3) are easy enough that reps will actually use them.<\/p>\n<p>The trade-off is\u2026 you\u2019ll capture less nuance in free-text notes, but you\u2019ll gain metrics you can act on and defend 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>Before you build fields, lock definitions so your reports don\u2019t drift by team or tool. Use these canonical definitions and always show the denominator:<\/p>\n<ul>\n<li><strong>Connect Rate<\/strong> = connected calls \/ total dials (e.g., per 100 dials).<\/li>\n<li><strong>Answer Rate<\/strong> = human answers \/ connected calls (e.g., per 100 connected calls).<\/li>\n<li><strong>Deliverability Rate<\/strong> = delivered emails \/ sent emails (e.g., per 100 sent emails).<\/li>\n<li><strong>Bounce Rate<\/strong> = bounced emails \/ sent emails (e.g., per 100 sent emails).<\/li>\n<li><strong>Reply Rate<\/strong> = replies \/ delivered emails (e.g., per 100 delivered emails).<\/li>\n<\/ul>\n<p>Operational rule: delivery and bounce events come from the <strong>email tool<\/strong>. The <strong>ATS<\/strong> stores the resulting contact truth (suppression, opt-out, verification dates) so recruiters can\u2019t accidentally re-contact suppressed records.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Step_2_Implement_the_minimum_viable_fields_MVF_first\"><\/span>Step 2: Implement the minimum viable fields (MVF) first<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>These <strong>minimum viable fields<\/strong> are the smallest set that makes outreach metrics trustworthy and keeps you 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 you can)<\/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 suppression, 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>Most teams mix \u201cwhat\u2019s true about the contact\u201d with \u201cwhat happened on one touch.\u201d That creates overwrites and bad suppression decisions. Keep it clean:<\/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, create an \u201cOutreach Touch\u201d object. If it doesn\u2019t, simulate it with a structured activity record using required picklists. Either way, you need consistent fields across the <strong>CRM<\/strong>, <strong>dialer<\/strong>, and <strong>email tool<\/strong> so you can roll up metrics.<\/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_bounce_triage_ladder_worksheet\"><\/span>Step 5: Add deliverability protection fields (bounce triage ladder worksheet)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>When bounces spike, you need to act fast without guessing. Implement a bounce taxonomy and a logged action so ops can suppress, verify, refresh, or run authentication checks.<\/p>\n<p><strong>Uniqueness hook (worksheet):<\/strong> Triage ladder that prevents domain damage: bounce type \u2192 suppress\/verify\/refresh\/auth check, plus copy\/paste logging fields.<\/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 action<\/strong> (log it): suppression_action_taken = suppress \/ verify \/ refresh \/ auth_check \/ none.<\/li>\n<li><strong>Apply suppression<\/strong> (contact truth): opt_out_status + suppression_source + suppression_date + suppression_scope.<\/li>\n<\/ol>\n<p><em>Visual note for your internal SOP:<\/em> create a one-page \u201cBounce triage decision tree\u201d 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 \u201cno answer\u201d 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\u2019t guess.<\/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 \u201cdo-not-call request\u201d 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_auto_vs_manual_so_logging_actually_happens\"><\/span>Step 7: Assign field ownership (auto vs manual) so logging actually happens<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Recruiters will not maintain a complex schema manually. Decide what is auto-captured vs manually set, and who owns each field.<\/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_Joining_data_for_reporting_so_your_dashboard_reconciles\"><\/span>Step 8: Joining data for reporting (so your dashboard reconciles)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>To make metrics reconcile, decide your join keys up front:<\/p>\n<ul>\n<li><strong>Primary join<\/strong>: contact_id + outreach_touch_id (best case).<\/li>\n<li><strong>If you don\u2019t have a stable outreach_touch_id<\/strong>: join on contact_id + channel + touch_at (timestamp) within a tight time window, and treat it as a temporary bridge until you add a touch ID.<\/li>\n<li><strong>System-of-record rule<\/strong>: use the email tool for delivered\/bounced\/replied events; use the dialer for dials\/connects\/answers; use the ATS for suppression\/consent\/verification and for tying touches to pipeline stages.<\/li>\n<\/ul>\n<p>This is how you avoid the classic argument where the ATS says \u201csent 500\u201d and the email tool says \u201cdelivered 430\u201d and nobody trusts either number.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Step_9_Build_your_copypaste_schema_field_map_CSV-ready\"><\/span>Step 9: Build your copy\/paste schema (field map + CSV-ready)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Below is a <strong>copy\/paste schema<\/strong> you can hand to ops or your ATS admin. It\u2019s vendor-agnostic and 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><strong>Use this to diagnose why outreach metrics don\u2019t reconcile across systems.<\/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>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 \u201ctoo low\u201d 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\u2019t predict pipeline movement<\/td>\n<td>Dialer dispositions don\u2019t 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><em>Visual note for your internal SOP:<\/em> keep a short \u201cPostmaster checks\u201d checklist for the person who 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><strong>Score your current schema before you rebuild it.<\/strong> Total 100 points. If you\u2019re under 70, your metrics will be noisy and your deliverability risk is higher than you think.<\/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; last verified date 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> \u201cLast touched date\u201d 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=\"Outreach_Templates\"><\/span>Outreach Templates:<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><strong>These are internal ops templates<\/strong> (not candidate messaging). They reduce back-and-forth and make 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> Please 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: (1) fields created, (2) picklists configured, (3) required fields enforced on Outreach Touch records, (4) export\/report view created, (5) documentation for auto-captured vs manual fields.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Template_2_Recruiter_SOP_snippet_what_to_log_when\"><\/span>Template 2: Recruiter SOP snippet (what to log, when)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><strong>When you email:<\/strong> ensure the touch has channel=email and an outcome. Delivery\/bounce should be auto-captured from the email tool. If you receive a reply, set outcome=replied-[positive\/neutral\/negative]. If the candidate opts 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 (this drives Answer Rate). If it\u2019s 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_bounce_spike\"><\/span>Template 3: Deliverability incident note (bounce spike)<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. Please review bounce_reason distribution (hard vs soft; invalid mailbox vs blocked\/policy). Actions: suppress hard bounces; verify\/refresh questionable contacts; run authentication checks and review 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 \u201csent\u201d as \u201cdelivered\u201d<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>This inflates denominators and makes Reply Rate look worse than it is. Store \u201csent\u201d and \u201cdelivered\u201d separately, and report Reply Rate as replies \/ 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>If opt-outs live in notes, they won\u2019t block future outreach. Make suppression a contact-level truth field with source\/date\/scope so it\u2019s 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 is not enough to act. 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_isnt_treated_as_a_data_quality_event\"><\/span>4) Wrong-person isn\u2019t treated as a data quality event<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Wrong-person should trigger suppression of that specific email\/phone and a refresh task. Otherwise it keeps recycling 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 <strong>nice-to-have<\/strong> fields only after 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_examples\"><\/span>1) Build a weekly outreach health report (examples)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Don\u2019t just show counts. Show rates with denominators, by recruiter and by sending domain\/mailbox.<\/p>\n<p><strong>Example report columns (email):<\/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>Example report columns (calls):<\/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>Measure this by\u2026 pulling delivery\/bounce\/reply events from the email tool, pulling dials\/connects\/answers from the dialer, and pulling suppression\/consent\/verification from the ATS contact record, then joining on contact_id and outreach_touch_id.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"2_Use_the_bounce_triage_ladder_to_protect_domains\"><\/span>2) Use the bounce triage ladder to protect domains<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>When bounces rise, don\u2019t guess. Classify by bounce_reason, take the logged action, and update contact-level suppression truth so the same bad address doesn\u2019t get hit again.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"3_Tighten_verification_and_refresh_cadence_without_overpromising\"><\/span>3) Tighten verification and refresh cadence (without overpromising)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Verification fields let you stop arguing about \u201cis this email good?\u201d and start operating: if last_verified_email_at is stale, verify or refresh before you send. If you can\u2019t verify, reduce risk by prioritizing contacts with recent verification and by suppressing repeated bounces.<\/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, required?, source system (ATS\/CRM\/dialer\/email tool), 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 includes personal contact information and 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\/permission where applicable. If you operate across regions, align your process with local data laws and your organization\u2019s 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 apples-to-apples 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>Official 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<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\u2019t 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<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><\/p>\n<p><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><br \/>\n<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\u2019t 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, minimum viable ATS field schema for outreach metrics\u2014consent, suppression, verification dates, channel outcomes, bounce taxonomy, and standardized definitions that reconcile across ATS\/CRM\/dialer\/email tools.<\/p>","protected":false},"author":5,"featured_media":54182,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_yoast_wpseo_focuskw":"ATS fields for outreach metrics","_yoast_wpseo_title":"ATS fields for outreach metrics: minimum viable schema + field map","_yoast_wpseo_metadesc":"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.","_custom_permalink":"recruiting-ops\/ats-field-schema-for-outreach-metrics","footnotes":""},"categories":[1],"tags":[],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\r\n<title>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=\"http:\/\/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=\"http:\/\/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-02-27T19:31:58+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\":\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#article\",\"isPartOf\":{\"@id\":\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/\"},\"author\":{\"name\":\"Ben Argeband\",\"@id\":\"http:\/\/heartbeat.ai\/resources\/#\/schema\/person\/7b323ddce9b211907423482e2f9db173\"},\"headline\":\"ATS fields for outreach metrics (copy\/paste schema + field map)\",\"datePublished\":\"2026-02-01T18:33:20+00:00\",\"dateModified\":\"2026-02-27T19:31:58+00:00\",\"mainEntityOfPage\":{\"@id\":\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/\"},\"wordCount\":2962,\"commentCount\":0,\"publisher\":{\"@id\":\"http:\/\/heartbeat.ai\/resources\/#organization\"},\"image\":{\"@id\":\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/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\":[\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/\",\"url\":\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/\",\"name\":\"ATS fields for outreach metrics: minimum viable schema + field map\",\"isPartOf\":{\"@id\":\"http:\/\/heartbeat.ai\/resources\/#website\"},\"primaryImageOfPage\":{\"@id\":\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#primaryimage\"},\"image\":{\"@id\":\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/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-02-27T19:31:58+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\":\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#primaryimage\",\"url\":\"https:\/\/hc.heartbeat.ai\/wp-content\/uploads\/2026\/02\/ats-field-schema-for-outreach-metrics-ca6dd388.png\",\"contentUrl\":\"https:\/\/hc.heartbeat.ai\/wp-content\/uploads\/2026\/02\/ats-field-schema-for-outreach-metrics-ca6dd388.png\",\"width\":1024,\"height\":1024},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/heartbeat.ai\/healthcare\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"ATS fields for outreach metrics (copy\/paste schema + field map)\"}]},{\"@type\":\"WebSite\",\"@id\":\"http:\/\/heartbeat.ai\/resources\/#website\",\"url\":\"http:\/\/heartbeat.ai\/resources\/\",\"name\":\"Heartbeat.ai\",\"description\":\"\",\"publisher\":{\"@id\":\"http:\/\/heartbeat.ai\/resources\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"http:\/\/heartbeat.ai\/resources\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"http:\/\/heartbeat.ai\/resources\/#organization\",\"name\":\"Heartbeat.ai\",\"url\":\"http:\/\/heartbeat.ai\/resources\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"http:\/\/heartbeat.ai\/resources\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/hc.heartbeat.ai\/wp-content\/uploads\/2021\/04\/Heartbeat.ai-logo.png\",\"contentUrl\":\"https:\/\/hc.heartbeat.ai\/wp-content\/uploads\/2021\/04\/Heartbeat.ai-logo.png\",\"width\":704,\"height\":126,\"caption\":\"Heartbeat.ai\"},\"image\":{\"@id\":\"http:\/\/heartbeat.ai\/resources\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"http:\/\/heartbeat.ai\/resources\/#\/schema\/person\/7b323ddce9b211907423482e2f9db173\",\"name\":\"Ben Argeband\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"http:\/\/heartbeat.ai\/resources\/#\/schema\/person\/image\/\",\"url\":\"http:\/\/0.gravatar.com\/avatar\/6356f96884d5a313d758128b3d9aaef7?s=96&d=mm&r=g\",\"contentUrl\":\"http:\/\/0.gravatar.com\/avatar\/6356f96884d5a313d758128b3d9aaef7?s=96&d=mm&r=g\",\"caption\":\"Ben Argeband\"},\"url\":\"http:\/\/heartbeat.ai\/resources\/author\/ben-argeband\/\"}]}<\/script>\r\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"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":"http:\/\/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":"http:\/\/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-02-27T19:31:58+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":"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#article","isPartOf":{"@id":"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/"},"author":{"name":"Ben Argeband","@id":"http:\/\/heartbeat.ai\/resources\/#\/schema\/person\/7b323ddce9b211907423482e2f9db173"},"headline":"ATS fields for outreach metrics (copy\/paste schema + field map)","datePublished":"2026-02-01T18:33:20+00:00","dateModified":"2026-02-27T19:31:58+00:00","mainEntityOfPage":{"@id":"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/"},"wordCount":2962,"commentCount":0,"publisher":{"@id":"http:\/\/heartbeat.ai\/resources\/#organization"},"image":{"@id":"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#primaryimage"},"thumbnailUrl":"https:\/\/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":["http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#respond"]}]},{"@type":"WebPage","@id":"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/","url":"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/","name":"ATS fields for outreach metrics: minimum viable schema + field map","isPartOf":{"@id":"http:\/\/heartbeat.ai\/resources\/#website"},"primaryImageOfPage":{"@id":"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#primaryimage"},"image":{"@id":"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#primaryimage"},"thumbnailUrl":"https:\/\/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-02-27T19:31:58+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":"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#primaryimage","url":"https:\/\/hc.heartbeat.ai\/wp-content\/uploads\/2026\/02\/ats-field-schema-for-outreach-metrics-ca6dd388.png","contentUrl":"https:\/\/hc.heartbeat.ai\/wp-content\/uploads\/2026\/02\/ats-field-schema-for-outreach-metrics-ca6dd388.png","width":1024,"height":1024},{"@type":"BreadcrumbList","@id":"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/ats-field-schema-for-outreach-metrics\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/heartbeat.ai\/healthcare\/"},{"@type":"ListItem","position":2,"name":"ATS fields for outreach metrics (copy\/paste schema + field map)"}]},{"@type":"WebSite","@id":"http:\/\/heartbeat.ai\/resources\/#website","url":"http:\/\/heartbeat.ai\/resources\/","name":"Heartbeat.ai","description":"","publisher":{"@id":"http:\/\/heartbeat.ai\/resources\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"http:\/\/heartbeat.ai\/resources\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"http:\/\/heartbeat.ai\/resources\/#organization","name":"Heartbeat.ai","url":"http:\/\/heartbeat.ai\/resources\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"http:\/\/heartbeat.ai\/resources\/#\/schema\/logo\/image\/","url":"https:\/\/hc.heartbeat.ai\/wp-content\/uploads\/2021\/04\/Heartbeat.ai-logo.png","contentUrl":"https:\/\/hc.heartbeat.ai\/wp-content\/uploads\/2021\/04\/Heartbeat.ai-logo.png","width":704,"height":126,"caption":"Heartbeat.ai"},"image":{"@id":"http:\/\/heartbeat.ai\/resources\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"http:\/\/heartbeat.ai\/resources\/#\/schema\/person\/7b323ddce9b211907423482e2f9db173","name":"Ben Argeband","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"http:\/\/heartbeat.ai\/resources\/#\/schema\/person\/image\/","url":"http:\/\/0.gravatar.com\/avatar\/6356f96884d5a313d758128b3d9aaef7?s=96&d=mm&r=g","contentUrl":"http:\/\/0.gravatar.com\/avatar\/6356f96884d5a313d758128b3d9aaef7?s=96&d=mm&r=g","caption":"Ben Argeband"},"url":"http:\/\/heartbeat.ai\/resources\/author\/ben-argeband\/"}]}},"_links":{"self":[{"href":"http:\/\/heartbeat.ai\/resources\/wp-json\/wp\/v2\/posts\/54183"}],"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":3,"href":"http:\/\/heartbeat.ai\/resources\/wp-json\/wp\/v2\/posts\/54183\/revisions"}],"predecessor-version":[{"id":54467,"href":"http:\/\/heartbeat.ai\/resources\/wp-json\/wp\/v2\/posts\/54183\/revisions\/54467"}],"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}]}}