{"id":54236,"date":"2026-02-01T12:46:07","date_gmt":"2026-02-01T18:46:07","guid":{"rendered":"https:\/\/heartbeat.ai\/healthcare\/suppression-lists-opt-out-management\/"},"modified":"2026-02-27T13:35:56","modified_gmt":"2026-02-27T19:35:56","slug":"suppression-lists-opt-out-management","status":"publish","type":"post","link":"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/suppression-lists-opt-out-management\/","title":{"rendered":"Suppression Lists Opt Out Management (Recruiting Ops Playbook)"},"content":{"rendered":"<p><img decoding=\"async\" loading=\"false\" class=\"aligncenter\" src=\"http:\/\/hc.heartbeat.ai\/wp-content\/webp-express\/webp-images\/uploads\/2026\/02\/suppression-lists-opt-out-management-8330dcf6.png.webp\" alt=\"54235\" \/><\/p>\n<h1>Suppression lists opt out management<\/h1>\n<p><strong>Ben Argeband, Founder &amp; CEO of Heartbeat.ai<\/strong> \u2014 Operationally precise; reduces risk and wasted time.<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\r\n<div class=\"ez-toc-title-container\">\r\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">What\u2019s on this page:<\/p>\r\n<span class=\"ez-toc-title-toggle\"><\/span><\/div>\r\n<nav><ul class='ez-toc-list ez-toc-list-level-1' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/suppression-lists-opt-out-management\/#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\/suppression-lists-opt-out-management\/#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\/suppression-lists-opt-out-management\/#Framework_The_%E2%80%9CNever_Again%E2%80%9D_System_Capture_%E2%86%92_Sync_%E2%86%92_Enforce\" >Framework: The \u201cNever Again\u201d System: Capture \u2192 Sync \u2192 Enforce<\/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\/suppression-lists-opt-out-management\/#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\/suppression-lists-opt-out-management\/#Step_1_Define_what_youre_suppressing_so_everyone_logs_the_same_thing\" >Step 1: Define what you\u2019re suppressing (so everyone logs the same thing)<\/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\/suppression-lists-opt-out-management\/#Step_2_Choose_your_system_of_record_ATS_or_CRM_and_make_it_unambiguous\" >Step 2: Choose your system of record (ATS or CRM) and make it unambiguous<\/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\/suppression-lists-opt-out-management\/#Step_3_Implement_a_suppression_fields_schema_store_what_youll_need_later\" >Step 3: Implement a suppression fields schema (store what you\u2019ll need later)<\/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\/suppression-lists-opt-out-management\/#Step_4_Normalize_identities_so_suppression_matches_on_import\" >Step 4: Normalize identities (so suppression matches on import)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/suppression-lists-opt-out-management\/#Step_5_Capture_stop_requests_from_every_channel_not_just_email\" >Step 5: Capture stop requests from every channel (not just email)<\/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\/suppression-lists-opt-out-management\/#Step_6_Add_a_simple_RACI_so_suppression_doesnt_fall_between_roles\" >Step 6: Add a simple RACI (so suppression doesn\u2019t fall between roles)<\/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\/suppression-lists-opt-out-management\/#Step_7_Sync_suppression_across_tools_propagation_map\" >Step 7: Sync suppression across tools (propagation map)<\/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\/suppression-lists-opt-out-management\/#Step_8_Enforce_suppression_at_three_choke_points\" >Step 8: Enforce suppression at three choke points<\/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\/suppression-lists-opt-out-management\/#Step_9_Escalation_path_for_complaints_operational_not_optional\" >Step 9: Escalation path for complaints (operational, not optional)<\/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\/suppression-lists-opt-out-management\/#Step_10_Add_import_guardrails_prevent_re-importing_suppressed_contacts\" >Step 10: Add import guardrails (prevent re-importing suppressed contacts)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/suppression-lists-opt-out-management\/#Step_11_Train_recruiters_on_the_one-sentence_logging_standard\" >Step 11: Train recruiters on the one-sentence logging standard<\/a><\/li><\/ul><\/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\/suppression-lists-opt-out-management\/#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-17\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/suppression-lists-opt-out-management\/#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-18\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/suppression-lists-opt-out-management\/#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-19\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/suppression-lists-opt-out-management\/#Template_1_Recruiter_note_call_stop_request\" >Template 1: Recruiter note (call stop request)<\/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\/suppression-lists-opt-out-management\/#Template_2_Candidate_confirmation_email\" >Template 2: Candidate confirmation (email)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-21\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/suppression-lists-opt-out-management\/#Template_3_Internal_ops_message_propagation_failure\" >Template 3: Internal ops message (propagation failure)<\/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\/suppression-lists-opt-out-management\/#Template_4_Vendortool_import_instruction_to_prevent_re-import\" >Template 4: Vendor\/tool import instruction (to prevent re-import)<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-23\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/suppression-lists-opt-out-management\/#Common_pitfalls\" >Common pitfalls<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-24\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/suppression-lists-opt-out-management\/#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-25\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/suppression-lists-opt-out-management\/#Measurement_instructions\" >Measurement instructions<\/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\/suppression-lists-opt-out-management\/#OPS_TEMPLATE_worksheet_suppression_schema_propagation_checklist_import_guardrails\" >OPS_TEMPLATE worksheet: suppression schema + propagation checklist + import guardrails<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-27\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/suppression-lists-opt-out-management\/#Weekly_audit_loop_short_scheduled\" >Weekly audit loop (short, scheduled)<\/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\/suppression-lists-opt-out-management\/#Workflow_fit_tips_reduce_recruiter_time_waste\" >Workflow fit tips (reduce recruiter time waste)<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-29\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/suppression-lists-opt-out-management\/#Legal_and_ethical_use\" >Legal and ethical use<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-30\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/suppression-lists-opt-out-management\/#Evidence_and_trust_notes\" >Evidence and trust notes<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-31\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/suppression-lists-opt-out-management\/#FAQs\" >FAQs<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-32\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/suppression-lists-opt-out-management\/#What_fields_should_we_store_for_suppression\" >What fields should we store for suppression?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-33\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/suppression-lists-opt-out-management\/#Should_suppression_live_in_the_ATS_or_the_CRM\" >Should suppression live in the ATS or the CRM?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-34\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/suppression-lists-opt-out-management\/#How_do_we_stop_suppressed_contacts_from_getting_re-imported\" >How do we stop suppressed contacts from getting re-imported?<\/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\/suppression-lists-opt-out-management\/#Whats_the_difference_between_opt-out_and_suppression\" >What\u2019s the difference between opt-out and suppression?<\/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\/suppression-lists-opt-out-management\/#How_does_this_affect_deliverability_and_recruiter_throughput\" >How does this affect deliverability and recruiter throughput?<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-37\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/suppression-lists-opt-out-management\/#Next_steps\" >Next steps<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-38\" href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/suppression-lists-opt-out-management\/#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>If you run recruiting ops and you\u2019re responsible for keeping email\/SMS\/call outreach clean across an <strong>ATS<\/strong>, <strong>CRM<\/strong>, sourcing tools, and spreadsheets, this is for you. Specifically: teams who need a repeatable way to capture an <strong>opt-out<\/strong>, sync it everywhere, and stop it from getting re-imported next week.<\/p>\n<p>Suppression prevents repeat harm to candidates and prevents wasted recruiter cycles chasing people who already said \u201cstop.\u201d Treat it as an ops system, not a one-off cleanup.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Quick_Answer\"><\/span>Quick Answer<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<dl>\n<dt>Core Answer<\/dt>\n<dd>Build a single suppression system that captures channel-specific opt-outs with source\/date, syncs to ATS\/CRM and outreach tools, and blocks re-imports before outreach happens.<\/dd>\n<dt>Key Insight<\/dt>\n<dd>Suppression only works when it\u2019s enforced at import, enrollment, and send\/dial\u2014not just stored in one tool.<\/dd>\n<dt>Best For<\/dt>\n<dd>Recruiting ops teams managing opt-outs across email\/SMS\/call.<\/dd>\n<\/dl>\n<blockquote>\n<p><strong>Compliance &amp; Safety<\/strong><\/p>\n<p>This method is for legitimate recruiting outreach only. Always respect candidate privacy, opt-out requests, and local data laws. Heartbeat does not provide medical advice or legal counsel.<\/p>\n<\/blockquote>\n<h2><span class=\"ez-toc-section\" id=\"Framework_The_%E2%80%9CNever_Again%E2%80%9D_System_Capture_%E2%86%92_Sync_%E2%86%92_Enforce\"><\/span>Framework: The \u201cNever Again\u201d System: Capture \u2192 Sync \u2192 Enforce<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Every suppression program that holds up under real recruiting volume does three things:<\/p>\n<ul>\n<li><strong>Capture<\/strong>: record the stop request once, with enough detail to act on it (channel, scope, timestamp, source).<\/li>\n<li><strong>Sync<\/strong>: propagate that record to every system that can send a message or trigger a task (ATS, CRM, email sequencer, dialer, enrichment).<\/li>\n<li><strong>Enforce<\/strong>: prevent outreach and prevent re-entry (import guardrails, enrollment blocks, and audit logs).<\/li>\n<\/ul>\n<p>The trade-off is\u2026 you\u2019ll spend more time on data hygiene up front, but you\u2019ll stop paying the hidden tax of repeat harm, escalations, and recruiter time wasted on contacts you should never touch again.<\/p>\n<p><strong>Channel-specific vs global suppression (examples):<\/strong><\/p>\n<ul>\n<li>Candidate replies \u201cSTOP\u201d to a text: suppress <strong>SMS<\/strong>, but email\/call may remain allowed unless they request otherwise.<\/li>\n<li>Candidate unsubscribes from email: suppress <strong>email<\/strong>, but calls may remain allowed if your policy permits and the candidate didn\u2019t opt out of calls.<\/li>\n<li>Candidate says \u201cdon\u2019t contact me again\u201d: treat as <strong>global<\/strong> suppression across email\/SMS\/call unless your internal policy requires clarification.<\/li>\n<\/ul>\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_Define_what_youre_suppressing_so_everyone_logs_the_same_thing\"><\/span>Step 1: Define what you\u2019re suppressing (so everyone logs the same thing)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Before you touch tools, align on three definitions and write them into your SOP. Use these exact operational meanings so your team doesn\u2019t mix categories.<\/p>\n<ul>\n<li><strong>Opt-out (definition)<\/strong>: a candidate\u2019s request to stop receiving messages on a specific channel (email, SMS, call) or in a defined scope (for example, \u201cno texts\u201d).<\/li>\n<li><strong>Suppression (definition)<\/strong>: the operational state where your systems block outreach to that person for the suppressed channel\/scope, including future imports and sequences.<\/li>\n<li><strong>Stop request (definition)<\/strong>: the event that triggers suppression (reply \u201cstop,\u201d email unsubscribe, verbal request on a call, recruiter note, complaint). It must be logged with source and timestamp.<\/li>\n<\/ul>\n<p>In practice: you\u2019re not just storing a \u201cdo not contact\u201d flag. You\u2019re storing a decision (what to block) plus evidence (why\/when it was requested) plus routing (where it must be enforced).<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Step_2_Choose_your_system_of_record_ATS_or_CRM_and_make_it_unambiguous\"><\/span>Step 2: Choose your system of record (ATS or CRM) and make it unambiguous<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Pick one place that is authoritative for suppression. For most recruiting orgs, that\u2019s the <strong>ATS<\/strong> or <strong>CRM<\/strong> because it\u2019s where identities converge and where recruiters work.<\/p>\n<ul>\n<li>If your ATS is the source of truth: suppression fields live on the candidate record, and every other tool reads from it.<\/li>\n<li>If your CRM is the source of truth: same concept, but ensure the ATS is updated before any outreach tasks are created.<\/li>\n<\/ul>\n<p><strong>Decision tree (use this to avoid split-brain):<\/strong><\/p>\n<ul>\n<li>If <strong>outreach tasks<\/strong> are created in the ATS, make the ATS authoritative for suppression and push suppression outward.<\/li>\n<li>If <strong>outreach tasks<\/strong> are created in the CRM, make the CRM authoritative and sync suppression into the ATS before tasks are generated.<\/li>\n<li>If your <strong>email\/SMS\/dialer<\/strong> can enroll candidates without touching ATS\/CRM, you still need ATS\/CRM as the system of record and enforce suppression at enrollment in the sending tools.<\/li>\n<li>If you can\u2019t pick one owner, you don\u2019t have a system yet; you have multiple partial lists.<\/li>\n<\/ul>\n<p>Do not let your system of record be a spreadsheet unless you have no alternative. Spreadsheets don\u2019t enforce anything; they only document.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Step_3_Implement_a_suppression_fields_schema_store_what_youll_need_later\"><\/span>Step 3: Implement a suppression fields schema (store what you\u2019ll need later)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>You need enough structure to (a) block the right channel, (b) prove what happened, and (c) avoid re-importing suppressed contacts. At minimum, store channel-specific suppression plus source\/date.<\/p>\n<p><strong>Recommended fields (candidate-level):<\/strong><\/p>\n<ul>\n<li><strong>suppression_status<\/strong> (enum): none, partial, full<\/li>\n<li><strong>suppressed_channels<\/strong> (multi-select): email, sms, call, other<\/li>\n<li><strong>suppression_scope<\/strong> (text\/enum): \u201call outreach,\u201d \u201cno SMS,\u201d \u201cno calls,\u201d \u201cno marketing,\u201d etc.<\/li>\n<li><strong>suppression_reason<\/strong> (enum): stop request, unsubscribe, complaint, internal policy, unknown<\/li>\n<li><strong>stop_request_source<\/strong> (text): email reply, SMS keyword, phone call, recruiter note, web form<\/li>\n<li><strong>stop_request_timestamp<\/strong> (datetime)<\/li>\n<li><strong>stop_request_actor<\/strong> (text): candidate, recruiter, system<\/li>\n<li><strong>stop_request_evidence<\/strong> (text\/url): message ID, call note link, ticket ID (store pointers, not sensitive content)<\/li>\n<li><strong>suppression_last_synced_at<\/strong> (datetime)<\/li>\n<li><strong>suppression_notes<\/strong> (text): short, factual<\/li>\n<\/ul>\n<p><strong>Recommended fields (identity-level, if your stack supports it):<\/strong><\/p>\n<ul>\n<li><strong>suppressed_emails<\/strong> (array): normalized emails (lowercase, trimmed)<\/li>\n<li><strong>suppressed_phones<\/strong> (array): normalized E.164 numbers<\/li>\n<\/ul>\n<p>Why identity-level matters: candidates change jobs, emails, and sometimes phone numbers. You want suppression to follow the person, not just one record.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Step_4_Normalize_identities_so_suppression_matches_on_import\"><\/span>Step 4: Normalize identities (so suppression matches on import)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Suppression fails when the same person shows up with a slightly different email\/phone format. Normalize before you compare:<\/p>\n<ul>\n<li><strong>Email<\/strong>: lowercase, trim spaces, store raw + normalized.<\/li>\n<li><strong>Phone<\/strong>: store in E.164; strip punctuation; keep country code.<\/li>\n<li><strong>Name<\/strong>: don\u2019t use name as a suppression key (too many collisions).<\/li>\n<\/ul>\n<p>Set your matching priority for suppression checks: phone match OR email match should be enough to block the relevant channel.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Step_5_Capture_stop_requests_from_every_channel_not_just_email\"><\/span>Step 5: Capture stop requests from every channel (not just email)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Build capture paths for the three places stop requests happen most:<\/p>\n<ul>\n<li><strong>Email<\/strong>: unsubscribe links, \u201cremove me,\u201d \u201cstop emailing,\u201d auto-unsubscribe events from your email tool.<\/li>\n<li><strong>SMS<\/strong>: STOP keywords, \u201cdon\u2019t text,\u201d \u201cremove,\u201d carrier filtering events.<\/li>\n<li><strong>Call<\/strong>: verbal \u201cdon\u2019t call me,\u201d gatekeeper requests, voicemail requests.<\/li>\n<\/ul>\n<p>Operational rule: the first person who sees the stop request logs it immediately in the system of record, then triggers sync. Don\u2019t wait for ops to \u201cclean it up later.\u201d<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Step_6_Add_a_simple_RACI_so_suppression_doesnt_fall_between_roles\"><\/span>Step 6: Add a simple RACI (so suppression doesn\u2019t fall between roles)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li><strong>Recruiter (Responsible)<\/strong>: logs the stop request event immediately; selects channel + scope; adds a short note.<\/li>\n<li><strong>Recruiting Ops (Accountable)<\/strong>: owns the suppression schema, sync jobs, import guardrails, and weekly audit.<\/li>\n<li><strong>Systems Admin (Responsible)<\/strong>: implements field protections, workflow blocks, and integration monitoring.<\/li>\n<li><strong>Compliance\/Privacy Stakeholder (Consulted)<\/strong>: reviews policy language and escalation handling; not a day-to-day bottleneck.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Step_7_Sync_suppression_across_tools_propagation_map\"><\/span>Step 7: Sync suppression across tools (propagation map)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>List every system that can initiate outreach or create an outreach task. Then decide how suppression gets into each one.<\/p>\n<ul>\n<li><strong>ATS<\/strong> \u2194 <strong>CRM<\/strong>: bi-directional or one-way, but never ambiguous. One is authoritative.<\/li>\n<li>Email sequencer: suppression list upload\/API sync + automatic unsubscribe ingestion back to the system of record.<\/li>\n<li>Dialer: blocked numbers list + call task suppression rules.<\/li>\n<li>SMS platform: blocked numbers list + STOP ingestion back to the system of record.<\/li>\n<li>Enrichment\/workflow tools: suppression check before enrichment and before pushing back into ATS\/CRM.<\/li>\n<\/ul>\n<p><strong>Monitoring (so sync failures don\u2019t become repeat-contact incidents):<\/strong><\/p>\n<ul>\n<li>Alert on failed sync jobs (email\/SMS\/dialer) and route to ops with the affected identity keys.<\/li>\n<li>Run a daily reconciliation: sample recent stop requests and confirm they exist in each downstream tool.<\/li>\n<li>Define retry behavior: automatic retry first, then create a ticket with stop_request_timestamp + source.<\/li>\n<\/ul>\n<p>If you\u2019re running <a href=\"http:\/\/heartbeat.ai\/resources\/integrations-automation\/ats-enrichment-workflows\/\">ATS enrichment workflows<\/a>, the suppression check must happen <em>before<\/em> enrichment writes back into your ATS\/CRM. Otherwise you\u2019ll keep resurrecting suppressed contacts.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Step_8_Enforce_suppression_at_three_choke_points\"><\/span>Step 8: Enforce suppression at three choke points<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Most teams enforce in only one place (usually the email tool). You need all three:<\/p>\n<ol>\n<li><strong>Before import<\/strong>: block suppressed identities from being created or reactivated without review.<\/li>\n<li><strong>Before enrollment<\/strong>: prevent sequence enrollment and prevent call\/SMS task creation if the channel is suppressed.<\/li>\n<li><strong>Before send\/dial<\/strong>: last-mile suppression in the sending tool (email\/SMS\/dialer) as a safety net.<\/li>\n<\/ol>\n<p>When a record is blocked at import due to a partial match (for example, shared clinic phone), ops should review and either confirm suppression or correct the identity mapping.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Step_9_Escalation_path_for_complaints_operational_not_optional\"><\/span>Step 9: Escalation path for complaints (operational, not optional)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li><strong>Pause<\/strong> outreach to the identity keys involved (email\/phone) while you investigate.<\/li>\n<li><strong>Verify<\/strong> the stop request event in the system of record (source + timestamp + scope) and correct any missing fields.<\/li>\n<li><strong>Confirm propagation<\/strong> to downstream tools (email\/SMS\/dialer) and backfill suppression where sync failed.<\/li>\n<li><strong>Document resolution<\/strong> in the candidate record and in your ops log (what failed, what changed, and how you\u2019ll prevent recurrence).<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Step_10_Add_import_guardrails_prevent_re-importing_suppressed_contacts\"><\/span>Step 10: Add import guardrails (prevent re-importing suppressed contacts)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Re-import is where most \u201cwe already suppressed them\u201d failures happen. Put guardrails in writing and in tooling:<\/p>\n<ul>\n<li><strong>Import rule<\/strong>: any inbound list\/enrichment feed must be checked against suppression keys (normalized email\/phone) before creating\/updating records.<\/li>\n<li><strong>Quarantine queue<\/strong>: if a match is found, route to an ops review queue instead of importing directly.<\/li>\n<li><strong>Field protection<\/strong>: do not allow imports to overwrite suppression fields unless the import is from the system of record.<\/li>\n<li><strong>Reactivation policy<\/strong>: define who can remove suppression and what evidence is required (for example, explicit candidate consent captured with timestamp).<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Step_11_Train_recruiters_on_the_one-sentence_logging_standard\"><\/span>Step 11: Train recruiters on the one-sentence logging standard<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Recruiters won\u2019t log if it\u2019s complicated. Give them a one-sentence standard they can paste into notes:<\/p>\n<ul>\n<li>\u201cCandidate requested no [channel] outreach on [date\/time] via [source]. Updated suppression scope to [scope].\u201d<\/li>\n<\/ul>\n<p>Then ops can standardize fields later, but the event is captured immediately.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Diagnostic_Table\"><\/span>Diagnostic Table:<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<div class=\"table-scroll\" style=\"overflow:auto;-webkit-overflow-scrolling:touch;width:100%\">\n<table class=\"separated-content\">\n<thead>\n<tr>\n<th>Symptom<\/th>\n<th>Likely root cause<\/th>\n<th>Fastest fix (ops)<\/th>\n<th>Where to enforce<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Suppressed candidate gets emailed again<\/td>\n<td>Suppression stored in ATS\/CRM but not synced to email tool (or overwritten on import)<\/td>\n<td>Make ATS\/CRM the system of record; lock suppression fields from imports; sync to email suppression list<\/td>\n<td>Before enrollment + before send<\/td>\n<\/tr>\n<tr>\n<td>Suppressed number still gets dialed<\/td>\n<td>Dialer blocklist not updated; call tasks created without suppression check<\/td>\n<td>Push blocked numbers to dialer; add ATS\/CRM rule: no call tasks when call channel suppressed<\/td>\n<td>Before task creation + before dial<\/td>\n<\/tr>\n<tr>\n<td>Same person reappears after enrichment<\/td>\n<td>Enrichment writes new email\/phone and creates a \u201cnew\u201d identity<\/td>\n<td>Normalize identities; suppression match on phone OR email; quarantine matches<\/td>\n<td>Before import + before enrichment writeback<\/td>\n<\/tr>\n<tr>\n<td>Ops can\u2019t prove when\/why suppression happened<\/td>\n<td>No logging fields for source\/date\/evidence<\/td>\n<td>Add stop_request_source + timestamp + evidence pointer; require on any suppression change<\/td>\n<td>System of record<\/td>\n<\/tr>\n<tr>\n<td>Recruiters avoid logging because it\u2019s slow<\/td>\n<td>Too many required fields; unclear definitions<\/td>\n<td>Use the one-sentence logging standard; ops backfills structured fields weekly<\/td>\n<td>ATS\/CRM<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p><strong>Entity check:<\/strong> This table assumes your <strong>ATS<\/strong>\/<strong>CRM<\/strong> is where <strong>logging<\/strong> happens and where the <strong>suppression list<\/strong> state is stored, then synced outward.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Weighted_Checklist\"><\/span>Weighted Checklist:<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Use this to score whether your suppression program will hold up under real recruiting volume. Score out of 100.<\/p>\n<ul>\n<li><strong>(20)<\/strong> System of record is defined (ATS or CRM) and documented; only one tool is authoritative.<\/li>\n<li><strong>(15)<\/strong> Channel-specific suppression exists (email\/SMS\/call), not a single generic flag.<\/li>\n<li><strong>(15)<\/strong> Stop request logging includes source + timestamp + actor; recruiters can log quickly (single action + short note).<\/li>\n<li><strong>(15)<\/strong> Import guardrails: suppression check runs before record creation\/update; suppression fields are protected from overwrite.<\/li>\n<li><strong>(10)<\/strong> Enrollment is blocked when the relevant channel is suppressed (sequence + call\/SMS tasks).<\/li>\n<li><strong>(10)<\/strong> Sync is automated to email\/SMS\/dialer suppression endpoints with a defined cadence and failure alerts.<\/li>\n<li><strong>(10)<\/strong> Audit trail exists: who changed suppression, when, and why (with evidence pointer).<\/li>\n<li><strong>(5)<\/strong> Reactivation policy exists and requires explicit candidate consent captured with timestamp.<\/li>\n<\/ul>\n<p><strong>Pass\/fail guidance:<\/strong> Under 70 points, you\u2019re relying on memory and good intentions. Over 85, you\u2019re running a real ops system.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Outreach_Templates\"><\/span>Outreach Templates:<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"Template_1_Recruiter_note_call_stop_request\"><\/span>Template 1: Recruiter note (call stop request)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><strong>Subject\/Note:<\/strong> Stop request logged<\/p>\n<p><strong>Body:<\/strong> Candidate requested no call outreach on [YYYY-MM-DD HH:MM TZ] via phone conversation. Updated suppression: channel=call, scope=[all outreach\/no calls]. Source logged. (ATS\/CRM record updated.)<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Template_2_Candidate_confirmation_email\"><\/span>Template 2: Candidate confirmation (email)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><strong>Subject:<\/strong> Confirming your outreach preference<\/p>\n<p><strong>Body:<\/strong> Thanks for letting me know. I\u2019ve updated your preferences and will stop contacting you via [email\/SMS\/calls] going forward. If you ever want to reconnect, reply here and I\u2019ll update it.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Template_3_Internal_ops_message_propagation_failure\"><\/span>Template 3: Internal ops message (propagation failure)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><strong>Subject:<\/strong> Suppression sync failure \u2014 action needed<\/p>\n<p><strong>Body:<\/strong> A stop request was logged in the system of record but did not propagate to [tool]. Please block [email\/phone] in [tool] and investigate the sync job. Include stop_request_timestamp and source in the ticket.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Template_4_Vendortool_import_instruction_to_prevent_re-import\"><\/span>Template 4: Vendor\/tool import instruction (to prevent re-import)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><strong>Message:<\/strong> Before importing any contacts into our ATS\/CRM, run a suppression match on normalized email and E.164 phone. If matched, quarantine and do not create\/update records unless ops approves.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Common_pitfalls\"><\/span>Common pitfalls<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ul>\n<li><strong>\u201cWe have a suppression list\u201d that lives only in the email tool.<\/strong> That doesn\u2019t stop call tasks, SMS, or re-imports. Enforce at import + enrollment + send\/dial.<\/li>\n<li><strong>One generic flag for everything.<\/strong> Candidates often mean \u201cdon\u2019t text me\u201d but are fine with email. Store channel-specific suppression so you don\u2019t burn good leads or violate preferences.<\/li>\n<li><strong>No source\/date.<\/strong> If you can\u2019t answer \u201cwhen did they ask?\u201d you can\u2019t troubleshoot disputes or train the team.<\/li>\n<li><strong>Imports overwrite suppression.<\/strong> Protect suppression fields from being overwritten by enrichment feeds or list uploads.<\/li>\n<li><strong>Shared clinic numbers and group emails.<\/strong> These create false matches. Quarantine and verify identity mapping before applying global suppression.<\/li>\n<li><strong>Identity mismatch.<\/strong> If you don\u2019t normalize phone\/email, you\u2019ll miss matches and re-contact people who already opted out.<\/li>\n<li><strong>Reactivation without evidence.<\/strong> If someone removes suppression because \u201ccandidate seems interested,\u201d you\u2019ll create repeat harm. Require explicit consent and log it.<\/li>\n<\/ul>\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<p>Improvement here means fewer accidental contacts, fewer escalations, and less recruiter time wasted. It also helps keep your outreach channels healthy.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Measurement_instructions\"><\/span>Measurement instructions<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Track suppression as an operational workflow with a few simple counters you can pull weekly from your ATS\/CRM and sending tools:<\/p>\n<ul>\n<li><strong>Repeat-contact incidents<\/strong>: count of messages\/calls sent to identities marked suppressed at the time of send (per week). Goal: trend to zero.<\/li>\n<li><strong>Suppression propagation lag<\/strong>: time from stop_request_timestamp to suppression present in each downstream tool (median + 95th percentile). Target: as fast as your tooling supports for automated channels; monitor lag and reduce it over time.<\/li>\n<li><strong>Import block rate<\/strong>: blocked\/quarantined records due to suppression match per 100 attempted imports. If this is zero, you\u2019re probably not checking correctly.<\/li>\n<li><strong>Enrollment block rate<\/strong>: blocked sequence\/dial enrollments due to suppression per 100 enrollment attempts. This should exist; it proves enforcement is working.<\/li>\n<\/ul>\n<p>If you also monitor outreach performance, keep metric definitions consistent:<\/p>\n<ul>\n<li><strong>Deliverability Rate<\/strong> = delivered emails \/ sent emails (per 100 sent emails).<\/li>\n<li><strong>Bounce Rate<\/strong> = bounced emails \/ sent emails (per 100 sent emails).<\/li>\n<li><strong>Reply Rate<\/strong> = replies \/ delivered emails (per 100 delivered emails).<\/li>\n<li><strong>Connect Rate<\/strong> = connected calls \/ total dials (per 100 dials).<\/li>\n<li><strong>Answer Rate<\/strong> = human answers \/ connected calls (per 100 connected calls).<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"OPS_TEMPLATE_worksheet_suppression_schema_propagation_checklist_import_guardrails\"><\/span>OPS_TEMPLATE worksheet: suppression schema + propagation checklist + import guardrails<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>This worksheet is designed to prevent the most common failure: suppressed contacts re-entering through enrichment or list imports.<\/p>\n<p><strong>A) Minimum viable suppression schema (copy\/paste)<\/strong><\/p>\n<ul>\n<li><strong>Candidate fields (ATS\/CRM)<\/strong>: suppressed_channels, suppression_scope, stop_request_source, stop_request_timestamp, stop_request_actor, stop_request_evidence, suppression_reason.<\/li>\n<li><strong>Identity fields<\/strong>: normalized_email, normalized_phone (E.164).<\/li>\n<li><strong>Logging rule<\/strong>: every suppression change requires source + timestamp (system-enforced if possible).<\/li>\n<\/ul>\n<p><strong>B) Propagation checklist (downstream enforcement)<\/strong><\/p>\n<ul>\n<li>Email tool: sync suppressed emails + ingest unsubscribes back to system of record.<\/li>\n<li>SMS tool: sync blocked numbers + ingest STOP events back to system of record.<\/li>\n<li>Dialer: sync blocked numbers + block call task creation when call channel suppressed.<\/li>\n<li>Workflow\/enrichment: suppression check before writeback; quarantine matches.<\/li>\n<\/ul>\n<p><strong>C) Import guardrails (the \u201cnever re-import\u201d layer)<\/strong><\/p>\n<ul>\n<li>Pre-import step: normalize incoming email\/phone; match against suppressed identities.<\/li>\n<li>If match: route to quarantine queue; do not create\/update candidate record automatically.<\/li>\n<li>Field protection: suppression fields are read-only for imports unless the import source is the system of record.<\/li>\n<li>Audit: log import job ID + counts (attempted, blocked, quarantined, approved).<\/li>\n<\/ul>\n<p><strong>D) Example suppression event record (what \u201cgood\u201d looks like)<\/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<\/th>\n<th>Example value<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>suppressed_channels<\/td>\n<td>sms<\/td>\n<\/tr>\n<tr>\n<td>suppression_scope<\/td>\n<td>no SMS<\/td>\n<\/tr>\n<tr>\n<td>stop_request_source<\/td>\n<td>SMS reply<\/td>\n<\/tr>\n<tr>\n<td>stop_request_timestamp<\/td>\n<td>[YYYY-MM-DD HH:MM TZ]<\/td>\n<\/tr>\n<tr>\n<td>stop_request_actor<\/td>\n<td>candidate<\/td>\n<\/tr>\n<tr>\n<td>stop_request_evidence<\/td>\n<td>message_id:[your-sms-platform-id]<\/td>\n<\/tr>\n<tr>\n<td>normalized_phone<\/td>\n<td>+1XXXXXXXXXX<\/td>\n<\/tr>\n<tr>\n<td>normalized_email<\/td>\n<td>candidate@example.com<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"Weekly_audit_loop_short_scheduled\"><\/span>Weekly audit loop (short, scheduled)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li>Review <strong>repeat-contact incidents<\/strong> and identify which choke point failed (import, enrollment, send\/dial).<\/li>\n<li>Check <strong>propagation lag<\/strong> for the last week\u2019s stop requests; fix any tool that\u2019s drifting.<\/li>\n<li>Work the <strong>quarantine queue<\/strong>: approve true matches, correct false matches, and update matching rules if needed.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Workflow_fit_tips_reduce_recruiter_time_waste\"><\/span>Workflow fit tips (reduce recruiter time waste)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li>Put a \u201cSuppression status\u201d badge on the candidate header in your ATS\/CRM so recruiters see it before they click call\/text\/email.<\/li>\n<li>Make suppression a required step in your disposition reasons (for example, \u201cNot interested \u2014 opted out of SMS\u201d).<\/li>\n<li>When sourcing in <strong>Heartbeat.ai<\/strong>, keep suppression synced so recruiters don\u2019t waste cycles; Heartbeat.ai can support workflows that prioritize connectability, including <strong>ranked mobile numbers by answer probability<\/strong> when you\u2019re dialing.<\/li>\n<\/ul>\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>This is operational guidance, not legal counsel. Your obligation is simple in practice: when someone asks you to stop, you stop\u2014on the channels and scope they requested\u2014and you make sure your systems don\u2019t \u201cforget.\u201d<\/p>\n<p>Data minimization matters operationally: store what you need to enforce suppression (channel, scope, timestamp, source, and an evidence pointer). Avoid storing message bodies or sensitive content unless your internal policy requires it.<\/p>\n<p>At minimum, align your process with the rules and guidance that apply to your outreach channels and geography. Start with these official resources:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.ftc.gov\/business-guidance\/resources\/can-spam-act-compliance-guide-business\">CAN-SPAM compliance guide (FTC)<\/a><\/li>\n<li><a href=\"https:\/\/www.fcc.gov\/general\/telephone-consumer-protection-act-1991-tcpa\">TCPA overview (FCC)<\/a><\/li>\n<\/ul>\n<p>Operationally: document consent where needed, honor opt-outs quickly, and keep suppression synchronized across every system that can contact a candidate.<\/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>Heartbeat content is written for recruiting operators who need workflows that hold up under volume. For how we evaluate data quality, identity resolution, and operational claims, see our <a href=\"http:\/\/heartbeat.ai\/resources\/resources\/trust-methodology\/\">trust methodology<\/a>.<\/p>\n<p>Primary references used for the compliance concepts in this playbook:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.ftc.gov\/business-guidance\/resources\/can-spam-act-compliance-guide-business\">FTC: CAN-SPAM Act Compliance Guide for Business<\/a><\/li>\n<li><a href=\"https:\/\/www.fcc.gov\/general\/telephone-consumer-protection-act-1991-tcpa\">FCC: Telephone Consumer Protection Act (TCPA) overview<\/a><\/li>\n<li>For broader recruiting compliance operations, see <a href=\"http:\/\/heartbeat.ai\/resources\/recruiting-compliance\/\">Recruiting compliance resources<\/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_fields_should_we_store_for_suppression\"><\/span>What fields should we store for suppression?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Store channel-specific suppression (email\/SMS\/call), scope, stop request source, timestamp, actor, and an evidence pointer. Also store normalized email and E.164 phone for matching on import.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Should_suppression_live_in_the_ATS_or_the_CRM\"><\/span>Should suppression live in the ATS or the CRM?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Pick one system of record. If recruiters create outreach tasks in the ATS, put suppression there and sync outward. If tasks originate in the CRM, make the CRM authoritative and sync into the ATS before tasks are generated.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"How_do_we_stop_suppressed_contacts_from_getting_re-imported\"><\/span>How do we stop suppressed contacts from getting re-imported?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Add pre-import suppression matching on normalized email\/phone, quarantine matches, and protect suppression fields from being overwritten by enrichment feeds or list uploads.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Whats_the_difference_between_opt-out_and_suppression\"><\/span>What\u2019s the difference between opt-out and suppression?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>An opt-out is the candidate\u2019s request (event) to stop contact on a channel\/scope. Suppression is the enforced system state that blocks outreach and prevents re-entry across tools.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"How_does_this_affect_deliverability_and_recruiter_throughput\"><\/span>How does this affect deliverability and recruiter throughput?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>When suppression is enforced, you reduce complaints and accidental contacts, which helps keep email deliverability healthier and prevents recruiters from burning time on people who already said \u201cstop.\u201d Track Deliverability Rate = delivered emails \/ sent emails (per 100 sent emails) and repeat-contact incidents weekly.<\/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 OPS_TEMPLATE worksheet: schema + propagation checklist + import guardrails.<\/li>\n<li>Audit your stack for enforcement at the three choke points: import, enrollment, send\/dial.<\/li>\n<li>If you\u2019re also managing candidate re-engagement, pair this with <a href=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/reactivating-physician-candidates\/\">reactivating physician candidates without burning trust<\/a>.<\/li>\n<li>When you\u2019re ready to operationalize sourcing + suppression together, <a href=\"https:\/\/heartbeat.ai\/signup\">start free search &amp; preview data<\/a>.<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"About_the_Author\"><\/span><b>About the Author<\/b><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><a href=\"http:\/\/heartbeat.ai\/resources\/author\/ben-argeband\"><span style=\"font-weight: 400;\">Ben Argeband<\/span><\/a><span style=\"font-weight: 400;\"> is the Founder and CEO of Swordfish.ai and Heartbeat.ai. With deep expertise in data and SaaS, he has built two successful platforms trusted by over 50,000 sales and recruitment professionals. Ben&#8217;s mission is to help teams find direct contact information for hard-to-reach professionals and decision-makers, providing the shortest route to their next win. Connect with Ben on <\/span><a href=\"https:\/\/www.linkedin.com\/in\/ben-m-argeband-2427a8a3\/\"><span style=\"font-weight: 400;\">LinkedIn<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/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\"},\"description\":\"A recruiting ops playbook for suppression lists opt out management: what fields to store, how to sync across ATS\/CRM and outreach tools, and how to prevent suppressed contacts from being re-imported.\",\"headline\":\"Suppression lists opt out management\",\"inLanguage\":\"en\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/heartbeat.ai\/resources\/recruiting-ops\/suppression-lists-opt-out-management\/\",\"@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\":\"Store channel-specific suppression (email\/SMS\/call), scope, stop request source, timestamp, actor, and an evidence pointer. Also store normalized email and E.164 phone for matching on import.\"},\"name\":\"What fields should we store for suppression?\"},{\"@type\":\"Question\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Pick one system of record. If recruiters create outreach tasks in the ATS, put suppression there and sync outward. If tasks originate in the CRM, make the CRM authoritative and sync into the ATS before tasks are generated.\"},\"name\":\"Should suppression live in the ATS or the CRM?\"},{\"@type\":\"Question\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Add pre-import suppression matching on normalized email\/phone, quarantine matches, and protect suppression fields from being overwritten by enrichment feeds or list uploads.\"},\"name\":\"How do we stop suppressed contacts from getting re-imported?\"},{\"@type\":\"Question\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"An opt-out is the candidate\u2019s request (event) to stop contact on a channel\/scope. Suppression is the enforced system state that blocks outreach and prevents re-entry across tools.\"},\"name\":\"What\u2019s the difference between opt-out and suppression?\"},{\"@type\":\"Question\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"When suppression is enforced, you reduce complaints and accidental contacts, which helps keep email deliverability healthier and prevents recruiters from burning time on people who already said \u201cstop.\u201d Track Deliverability Rate = delivered emails \/ sent emails (per 100 sent emails) and repeat-contact incidents weekly.\"},\"name\":\"How does this affect deliverability and recruiter throughput?\"}]}<\/script><\/p>","protected":false},"excerpt":{"rendered":"<p>A recruiting ops playbook for suppression lists opt out management: what fields to store, how to sync across ATS\/CRM and outreach tools, and how to prevent suppressed contacts from being re-imported.<\/p>","protected":false},"author":5,"featured_media":54235,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_yoast_wpseo_focuskw":"suppression lists opt out management","_yoast_wpseo_title":"Suppression Lists Opt Out Management (ATS\/CRM Ops Playbook)","_yoast_wpseo_metadesc":"Build a \"never again\" suppression system: capture channel-specific opt-outs with source\/date, sync across ATS\/CRM and tools, and block re-imports with guardrails.","_custom_permalink":"recruiting-ops\/suppression-lists-opt-out-management","footnotes":""},"categories":[1],"tags":[],"class_list":["post-54236","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 v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\r\n<title>Suppression Lists Opt Out Management (ATS\/CRM Ops Playbook)<\/title>\r\n<meta name=\"description\" content=\"Build a &quot;never again&quot; suppression system: capture channel-specific opt-outs with source\/date, sync across ATS\/CRM and tools, and block re-imports with guardrails.\" \/>\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\/suppression-lists-opt-out-management\/\" \/>\r\n<meta property=\"og:locale\" content=\"en_US\" \/>\r\n<meta property=\"og:type\" content=\"article\" \/>\r\n<meta property=\"og:title\" content=\"Suppression Lists Opt Out Management (ATS\/CRM Ops Playbook)\" \/>\r\n<meta property=\"og:description\" content=\"Build a &quot;never again&quot; suppression system: capture channel-specific opt-outs with source\/date, sync across ATS\/CRM and tools, and block re-imports with guardrails.\" \/>\r\n<meta property=\"og:url\" content=\"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/suppression-lists-opt-out-management\/\" \/>\r\n<meta property=\"og:site_name\" content=\"Heartbeat.ai\" \/>\r\n<meta property=\"article:published_time\" content=\"2026-02-01T18:46:07+00:00\" \/>\r\n<meta property=\"article:modified_time\" content=\"2026-02-27T19:35:56+00:00\" \/>\r\n<meta property=\"og:image\" content=\"https:\/\/hc.heartbeat.ai\/wp-content\/uploads\/2026\/02\/suppression-lists-opt-out-management-8330dcf6.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=\"17 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\\\/suppression-lists-opt-out-management\\\/#article\",\"isPartOf\":{\"@id\":\"http:\\\/\\\/heartbeat.ai\\\/resources\\\/recruiting-ops\\\/suppression-lists-opt-out-management\\\/\"},\"author\":{\"name\":\"Ben Argeband\",\"@id\":\"http:\\\/\\\/heartbeat.ai\\\/resources\\\/#\\\/schema\\\/person\\\/7b323ddce9b211907423482e2f9db173\"},\"headline\":\"Suppression Lists Opt Out Management (Recruiting Ops Playbook)\",\"datePublished\":\"2026-02-01T18:46:07+00:00\",\"dateModified\":\"2026-02-27T19:35:56+00:00\",\"mainEntityOfPage\":{\"@id\":\"http:\\\/\\\/heartbeat.ai\\\/resources\\\/recruiting-ops\\\/suppression-lists-opt-out-management\\\/\"},\"wordCount\":3380,\"commentCount\":0,\"publisher\":{\"@id\":\"http:\\\/\\\/heartbeat.ai\\\/resources\\\/#organization\"},\"image\":{\"@id\":\"http:\\\/\\\/heartbeat.ai\\\/resources\\\/recruiting-ops\\\/suppression-lists-opt-out-management\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/hc.heartbeat.ai\\\/wp-content\\\/uploads\\\/2026\\\/02\\\/suppression-lists-opt-out-management-8330dcf6.png\",\"articleSection\":[\"News\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"http:\\\/\\\/heartbeat.ai\\\/resources\\\/recruiting-ops\\\/suppression-lists-opt-out-management\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"http:\\\/\\\/heartbeat.ai\\\/resources\\\/recruiting-ops\\\/suppression-lists-opt-out-management\\\/\",\"url\":\"http:\\\/\\\/heartbeat.ai\\\/resources\\\/recruiting-ops\\\/suppression-lists-opt-out-management\\\/\",\"name\":\"Suppression Lists Opt Out Management (ATS\\\/CRM Ops Playbook)\",\"isPartOf\":{\"@id\":\"http:\\\/\\\/heartbeat.ai\\\/resources\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"http:\\\/\\\/heartbeat.ai\\\/resources\\\/recruiting-ops\\\/suppression-lists-opt-out-management\\\/#primaryimage\"},\"image\":{\"@id\":\"http:\\\/\\\/heartbeat.ai\\\/resources\\\/recruiting-ops\\\/suppression-lists-opt-out-management\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/hc.heartbeat.ai\\\/wp-content\\\/uploads\\\/2026\\\/02\\\/suppression-lists-opt-out-management-8330dcf6.png\",\"datePublished\":\"2026-02-01T18:46:07+00:00\",\"dateModified\":\"2026-02-27T19:35:56+00:00\",\"description\":\"Build a \\\"never again\\\" suppression system: capture channel-specific opt-outs with source\\\/date, sync across ATS\\\/CRM and tools, and block re-imports with guardrails.\",\"breadcrumb\":{\"@id\":\"http:\\\/\\\/heartbeat.ai\\\/resources\\\/recruiting-ops\\\/suppression-lists-opt-out-management\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\\\/\\\/heartbeat.ai\\\/resources\\\/recruiting-ops\\\/suppression-lists-opt-out-management\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"http:\\\/\\\/heartbeat.ai\\\/resources\\\/recruiting-ops\\\/suppression-lists-opt-out-management\\\/#primaryimage\",\"url\":\"https:\\\/\\\/hc.heartbeat.ai\\\/wp-content\\\/uploads\\\/2026\\\/02\\\/suppression-lists-opt-out-management-8330dcf6.png\",\"contentUrl\":\"https:\\\/\\\/hc.heartbeat.ai\\\/wp-content\\\/uploads\\\/2026\\\/02\\\/suppression-lists-opt-out-management-8330dcf6.png\",\"width\":1024,\"height\":1024},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\\\/\\\/heartbeat.ai\\\/resources\\\/recruiting-ops\\\/suppression-lists-opt-out-management\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/heartbeat.ai\\\/healthcare\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Suppression Lists Opt Out Management (Recruiting Ops Playbook)\"}]},{\"@type\":\"WebSite\",\"@id\":\"http:\\\/\\\/heartbeat.ai\\\/resources\\\/#website\",\"url\":\"http:\\\/\\\/heartbeat.ai\\\/resources\\\/\",\"name\":\"Heartbeat.ai\",\"description\":\"\",\"publisher\":{\"@id\":\"http:\\\/\\\/heartbeat.ai\\\/resources\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"http:\\\/\\\/heartbeat.ai\\\/resources\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"http:\\\/\\\/heartbeat.ai\\\/resources\\\/#organization\",\"name\":\"Heartbeat.ai\",\"url\":\"http:\\\/\\\/heartbeat.ai\\\/resources\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"http:\\\/\\\/heartbeat.ai\\\/resources\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/hc.heartbeat.ai\\\/wp-content\\\/uploads\\\/2021\\\/04\\\/Heartbeat.ai-logo.png\",\"contentUrl\":\"https:\\\/\\\/hc.heartbeat.ai\\\/wp-content\\\/uploads\\\/2021\\\/04\\\/Heartbeat.ai-logo.png\",\"width\":704,\"height\":126,\"caption\":\"Heartbeat.ai\"},\"image\":{\"@id\":\"http:\\\/\\\/heartbeat.ai\\\/resources\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"http:\\\/\\\/heartbeat.ai\\\/resources\\\/#\\\/schema\\\/person\\\/7b323ddce9b211907423482e2f9db173\",\"name\":\"Ben Argeband\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/9cdd6acf262740ced0b6a1c76378e93640df32a98d2f4d29507f31fbce6817e7?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/9cdd6acf262740ced0b6a1c76378e93640df32a98d2f4d29507f31fbce6817e7?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/9cdd6acf262740ced0b6a1c76378e93640df32a98d2f4d29507f31fbce6817e7?s=96&d=mm&r=g\",\"caption\":\"Ben Argeband\"},\"url\":\"http:\\\/\\\/heartbeat.ai\\\/resources\\\/author\\\/ben-argeband\\\/\"}]}<\/script>\r\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Suppression Lists Opt Out Management (ATS\/CRM Ops Playbook)","description":"Build a \"never again\" suppression system: capture channel-specific opt-outs with source\/date, sync across ATS\/CRM and tools, and block re-imports with guardrails.","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\/suppression-lists-opt-out-management\/","og_locale":"en_US","og_type":"article","og_title":"Suppression Lists Opt Out Management (ATS\/CRM Ops Playbook)","og_description":"Build a \"never again\" suppression system: capture channel-specific opt-outs with source\/date, sync across ATS\/CRM and tools, and block re-imports with guardrails.","og_url":"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/suppression-lists-opt-out-management\/","og_site_name":"Heartbeat.ai","article_published_time":"2026-02-01T18:46:07+00:00","article_modified_time":"2026-02-27T19:35:56+00:00","og_image":[{"width":1024,"height":1024,"url":"https:\/\/hc.heartbeat.ai\/wp-content\/uploads\/2026\/02\/suppression-lists-opt-out-management-8330dcf6.png","type":"image\/png"}],"author":"Ben Argeband","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Ben Argeband","Est. reading time":"17 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/suppression-lists-opt-out-management\/#article","isPartOf":{"@id":"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/suppression-lists-opt-out-management\/"},"author":{"name":"Ben Argeband","@id":"http:\/\/heartbeat.ai\/resources\/#\/schema\/person\/7b323ddce9b211907423482e2f9db173"},"headline":"Suppression Lists Opt Out Management (Recruiting Ops Playbook)","datePublished":"2026-02-01T18:46:07+00:00","dateModified":"2026-02-27T19:35:56+00:00","mainEntityOfPage":{"@id":"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/suppression-lists-opt-out-management\/"},"wordCount":3380,"commentCount":0,"publisher":{"@id":"http:\/\/heartbeat.ai\/resources\/#organization"},"image":{"@id":"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/suppression-lists-opt-out-management\/#primaryimage"},"thumbnailUrl":"https:\/\/hc.heartbeat.ai\/wp-content\/uploads\/2026\/02\/suppression-lists-opt-out-management-8330dcf6.png","articleSection":["News"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["http:\/\/heartbeat.ai\/resources\/recruiting-ops\/suppression-lists-opt-out-management\/#respond"]}]},{"@type":"WebPage","@id":"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/suppression-lists-opt-out-management\/","url":"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/suppression-lists-opt-out-management\/","name":"Suppression Lists Opt Out Management (ATS\/CRM Ops Playbook)","isPartOf":{"@id":"http:\/\/heartbeat.ai\/resources\/#website"},"primaryImageOfPage":{"@id":"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/suppression-lists-opt-out-management\/#primaryimage"},"image":{"@id":"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/suppression-lists-opt-out-management\/#primaryimage"},"thumbnailUrl":"https:\/\/hc.heartbeat.ai\/wp-content\/uploads\/2026\/02\/suppression-lists-opt-out-management-8330dcf6.png","datePublished":"2026-02-01T18:46:07+00:00","dateModified":"2026-02-27T19:35:56+00:00","description":"Build a \"never again\" suppression system: capture channel-specific opt-outs with source\/date, sync across ATS\/CRM and tools, and block re-imports with guardrails.","breadcrumb":{"@id":"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/suppression-lists-opt-out-management\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["http:\/\/heartbeat.ai\/resources\/recruiting-ops\/suppression-lists-opt-out-management\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/suppression-lists-opt-out-management\/#primaryimage","url":"https:\/\/hc.heartbeat.ai\/wp-content\/uploads\/2026\/02\/suppression-lists-opt-out-management-8330dcf6.png","contentUrl":"https:\/\/hc.heartbeat.ai\/wp-content\/uploads\/2026\/02\/suppression-lists-opt-out-management-8330dcf6.png","width":1024,"height":1024},{"@type":"BreadcrumbList","@id":"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/suppression-lists-opt-out-management\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/heartbeat.ai\/healthcare\/"},{"@type":"ListItem","position":2,"name":"Suppression Lists Opt Out Management (Recruiting Ops Playbook)"}]},{"@type":"WebSite","@id":"http:\/\/heartbeat.ai\/resources\/#website","url":"http:\/\/heartbeat.ai\/resources\/","name":"Heartbeat.ai","description":"","publisher":{"@id":"http:\/\/heartbeat.ai\/resources\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"http:\/\/heartbeat.ai\/resources\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"http:\/\/heartbeat.ai\/resources\/#organization","name":"Heartbeat.ai","url":"http:\/\/heartbeat.ai\/resources\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"http:\/\/heartbeat.ai\/resources\/#\/schema\/logo\/image\/","url":"https:\/\/hc.heartbeat.ai\/wp-content\/uploads\/2021\/04\/Heartbeat.ai-logo.png","contentUrl":"https:\/\/hc.heartbeat.ai\/wp-content\/uploads\/2021\/04\/Heartbeat.ai-logo.png","width":704,"height":126,"caption":"Heartbeat.ai"},"image":{"@id":"http:\/\/heartbeat.ai\/resources\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"http:\/\/heartbeat.ai\/resources\/#\/schema\/person\/7b323ddce9b211907423482e2f9db173","name":"Ben Argeband","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/9cdd6acf262740ced0b6a1c76378e93640df32a98d2f4d29507f31fbce6817e7?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/9cdd6acf262740ced0b6a1c76378e93640df32a98d2f4d29507f31fbce6817e7?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/9cdd6acf262740ced0b6a1c76378e93640df32a98d2f4d29507f31fbce6817e7?s=96&d=mm&r=g","caption":"Ben Argeband"},"url":"http:\/\/heartbeat.ai\/resources\/author\/ben-argeband\/"}]}},"_links":{"self":[{"href":"http:\/\/heartbeat.ai\/resources\/wp-json\/wp\/v2\/posts\/54236","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=54236"}],"version-history":[{"count":2,"href":"http:\/\/heartbeat.ai\/resources\/wp-json\/wp\/v2\/posts\/54236\/revisions"}],"predecessor-version":[{"id":54485,"href":"http:\/\/heartbeat.ai\/resources\/wp-json\/wp\/v2\/posts\/54236\/revisions\/54485"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/heartbeat.ai\/resources\/wp-json\/wp\/v2\/media\/54235"}],"wp:attachment":[{"href":"http:\/\/heartbeat.ai\/resources\/wp-json\/wp\/v2\/media?parent=54236"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/heartbeat.ai\/resources\/wp-json\/wp\/v2\/categories?post=54236"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/heartbeat.ai\/resources\/wp-json\/wp\/v2\/tags?post=54236"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}