{"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-08-31T05:34:40","modified_gmt":"2026-08-31T10:34:40","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 class=\"article-last-updated\"><strong>Last updated:<\/strong> August 31, 2026<\/p>\n<p><img decoding=\"async\" loading=\"false\" class=\"aligncenter\" src=\"http:\/\/hc.heartbeat.ai\/wp-content\/webp-express\/webp-images\/uploads\/2026\/02\/suppression-lists-opt-out-management-8330dcf6.png.webp\" alt=\"54235\" \/><\/p>\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_capture_sync_enforce\" >Framework: capture, sync, 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\" >Step 1: Define what you&#8217;re suppressing<\/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_one_system_of_record\" >Step 2: Choose one system of record<\/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_Build_a_suppression_fields_schema\" >Step 3: Build a suppression fields schema<\/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_before_comparing\" >Step 4: Normalize identities before comparing<\/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\" >Step 5: Capture stop requests from every channel<\/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\" >Step 6: Add a simple RACI<\/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\" >Step 7: Sync suppression across tools<\/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\" >Step 9: Escalation path for complaints<\/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\" >Step 10: Add import guardrails<\/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_a_one-sentence_logging_standard\" >Step 11: Train recruiters on a 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\" >Template 4: Vendor\/tool import instruction<\/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_schema_propagation_and_import_guardrails\" >OPS_TEMPLATE worksheet: schema, propagation, and 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\" >Weekly audit loop<\/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\" >Workflow fit tips<\/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&#8217;s 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&#8217;re responsible for keeping email, SMS, and call outreach clean across an <strong>ATS<\/strong>, <strong>CRM<\/strong>, sourcing tools, and spreadsheets, this applies to you. More specifically: teams who need a repeatable way to capture an <strong>opt-out<\/strong>, sync it everywhere it matters, and stop it from getting re-imported next week.<\/p>\n<p>Suppression prevents repeat contact with candidates who&#8217;ve already said no, and it saves recruiter time that would otherwise go toward chasing people who won&#8217;t respond. Treat it as an ops system, not a one-time cleanup project.<\/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 and date, syncs to your 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&#8217;s enforced at import, enrollment, and send or dial time \u2014 not just stored in one tool somewhere.<\/dd>\n<dt>Best for<\/dt>\n<dd>Recruiting ops teams managing opt-outs across email, SMS, and call channels.<\/dd>\n<\/dl>\n<blockquote>\n<p><strong>Compliance and safety<\/strong><\/p>\n<p>This method is for legitimate recruiting outreach only. Always respect candidate privacy, opt-out requests, and applicable data laws. Heartbeat does not provide medical advice or legal counsel.<\/p>\n<\/blockquote>\n<h2><span class=\"ez-toc-section\" id=\"Framework_capture_sync_enforce\"><\/span>Framework: capture, sync, enforce<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Suppression programs that hold up under real recruiting volume tend to do three things consistently:<\/p>\n<ul>\n<li><strong>Capture<\/strong>: record the stop request once, with enough detail to act on \u2014 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, including ATS, CRM, email sequencer, dialer, and enrichment tools.<\/li>\n<li><strong>Enforce<\/strong>: prevent outreach and prevent re-entry through import guardrails, enrollment blocks, and audit logs.<\/li>\n<\/ul>\n<p>The trade-off is real: you&#8217;ll spend more time on data hygiene up front. In exchange, you stop paying the hidden cost of repeat contact, escalations, and recruiter hours wasted on people you should never reach out to again.<\/p>\n<p><strong>Channel-specific vs. global suppression, in practice:<\/strong><\/p>\n<ul>\n<li>A candidate replies &#8220;STOP&#8221; to a text \u2014 suppress <strong>SMS<\/strong>, but email or calls may still be allowed unless they say otherwise.<\/li>\n<li>A candidate unsubscribes from email \u2014 suppress <strong>email<\/strong> only, unless your policy or their language extends further.<\/li>\n<li>A candidate says &#8220;don&#8217;t contact me again&#8221; \u2014 treat this as <strong>global<\/strong> suppression across email, SMS, and call unless your internal policy requires clarification first.<\/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\"><\/span>Step 1: Define what you&#8217;re suppressing<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Before touching any tools, align on three definitions and write them into your SOP so the team logs things the same way.<\/p>\n<ul>\n<li><strong>Opt-out<\/strong>: a candidate&#8217;s request to stop receiving messages on a specific channel or within a defined scope, such as &#8220;no texts.&#8221;<\/li>\n<li><strong>Suppression<\/strong>: the operational state where your systems block outreach for that channel or scope, including future imports and sequences.<\/li>\n<li><strong>Stop request<\/strong>: the triggering event \u2014 a reply, an unsubscribe, a verbal request on a call, a recruiter note, or a complaint. It needs a source and timestamp attached.<\/li>\n<\/ul>\n<p>You&#8217;re not just storing a &#8220;do not contact&#8221; flag. You&#8217;re storing a decision about what to block, evidence for why and when, and routing information for where it needs to be enforced.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Step_2_Choose_one_system_of_record\"><\/span>Step 2: Choose one system of record<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Pick a single authoritative place for suppression. For most recruiting teams that&#8217;s the <strong>ATS<\/strong> or <strong>CRM<\/strong>, since that&#8217;s where identities converge and where recruiters actually work.<\/p>\n<ul>\n<li>If the ATS is source of truth, suppression fields live on the candidate record and every other tool reads from it.<\/li>\n<li>If the CRM is source of truth, the same logic applies, but make sure the ATS updates before outreach tasks get created.<\/li>\n<\/ul>\n<p><strong>Use this to avoid split-brain suppression:<\/strong><\/p>\n<ul>\n<li>If outreach tasks originate in the ATS, make the ATS authoritative and push suppression outward.<\/li>\n<li>If outreach tasks originate in the CRM, make the CRM authoritative and sync into the ATS before tasks generate.<\/li>\n<li>If your email, SMS, or dialer tool can enroll candidates without touching ATS\/CRM, you still need ATS\/CRM as system of record \u2014 enforce suppression at enrollment in the sending tools too.<\/li>\n<li>If you can&#8217;t name one owner, you don&#8217;t have a system yet. You have several partial lists.<\/li>\n<\/ul>\n<p>Avoid making a spreadsheet your system of record unless there&#8217;s no alternative. Spreadsheets document; they don&#8217;t enforce anything.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Step_3_Build_a_suppression_fields_schema\"><\/span>Step 3: Build a suppression fields schema<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>You need enough structure to block the right channel, prove what happened, and avoid re-importing suppressed contacts later.<\/p>\n<p><strong>Recommended candidate-level fields:<\/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): all outreach, no SMS, no calls, no marketing<\/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 \u2014 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 identity-level fields, if your stack supports them:<\/strong><\/p>\n<ul>\n<li><strong>suppressed_emails<\/strong> (array): normalized emails, lowercase and trimmed<\/li>\n<li><strong>suppressed_phones<\/strong> (array): normalized E.164 numbers<\/li>\n<\/ul>\n<p>Identity-level fields matter because candidates change jobs, emails, and sometimes phone numbers. Suppression should follow the person, not just the one record where the opt-out happened.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Step_4_Normalize_identities_before_comparing\"><\/span>Step 4: Normalize identities before comparing<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Suppression breaks down when the same person shows up with a slightly different email or phone format. Normalize before matching:<\/p>\n<ul>\n<li><strong>Email<\/strong>: lowercase, trim spaces, store both raw and normalized versions.<\/li>\n<li><strong>Phone<\/strong>: store in E.164, strip punctuation, keep the country code.<\/li>\n<li><strong>Name<\/strong>: don&#8217;t use name as a suppression key \u2014 too many collisions.<\/li>\n<\/ul>\n<p>Set matching priority so a phone match or an email match is enough to block the relevant channel.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Step_5_Capture_stop_requests_from_every_channel\"><\/span>Step 5: Capture stop requests from every channel<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Build capture paths for the three places stop requests happen most often:<\/p>\n<ul>\n<li><strong>Email<\/strong>: unsubscribe links, &#8220;remove me,&#8221; &#8220;stop emailing,&#8221; auto-unsubscribe events.<\/li>\n<li><strong>SMS<\/strong>: STOP keywords, &#8220;don&#8217;t text,&#8221; carrier filtering events.<\/li>\n<li><strong>Call<\/strong>: verbal &#8220;don&#8217;t call me,&#8221; gatekeeper requests, voicemail requests.<\/li>\n<\/ul>\n<p>Operational rule: whoever sees the stop request first logs it immediately in the system of record, then triggers sync. Don&#8217;t wait for ops to clean it up later \u2014 that gap is where re-contact happens.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Step_6_Add_a_simple_RACI\"><\/span>Step 6: Add a simple RACI<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li><strong>Recruiter (Responsible)<\/strong>: logs the stop request immediately, selects channel and scope, adds a short note.<\/li>\n<li><strong>Recruiting ops (Accountable)<\/strong>: owns the 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 without being a daily bottleneck.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Step_7_Sync_suppression_across_tools\"><\/span>Step 7: Sync suppression across tools<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 flows into each one.<\/p>\n<ul>\n<li><strong>ATS \u2194 CRM<\/strong>: bi-directional or one-way, but never ambiguous \u2014 one has to be authoritative.<\/li>\n<li><strong>Email sequencer<\/strong>: suppression list upload or API sync, plus automatic unsubscribe ingestion back to the system of record.<\/li>\n<li><strong>Dialer<\/strong>: blocked numbers list plus call task suppression rules.<\/li>\n<li><strong>SMS platform<\/strong>: blocked numbers list plus STOP ingestion back to the system of record.<\/li>\n<li><strong>Enrichment\/workflow tools<\/strong>: suppression check before enrichment and before pushing back into ATS\/CRM.<\/li>\n<\/ul>\n<p><strong>Monitoring, so sync failures don&#8217;t turn into repeat-contact incidents:<\/strong><\/p>\n<ul>\n<li>Alert on failed sync jobs across email, SMS, and dialer, and route to ops with the affected identity keys.<\/li>\n<li>Run daily reconciliation: sample recent stop requests and confirm they landed in each downstream tool.<\/li>\n<li>Define retry behavior \u2014 automatic retry first, then a ticket with the stop_request_timestamp and source attached.<\/li>\n<\/ul>\n<p>If you&#8217;re running <a href=\"http:\/\/heartbeat.ai\/resources\/integrations-automation\/ats-enrichment-workflows\/\">ATS enrichment workflows<\/a>, the suppression check needs to happen before enrichment writes back into your ATS or CRM. Skip that order and you&#8217;ll keep resurrecting contacts you already suppressed.<\/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 call or SMS task creation when that channel is suppressed.<\/li>\n<li><strong>Before send\/dial<\/strong>: last-mile suppression in the sending tool itself, as a safety net.<\/li>\n<\/ol>\n<p>When a record gets blocked at import due to a partial match \u2014 a shared clinic phone line, for example \u2014 ops should review it and either confirm suppression or correct the identity mapping rather than force it through.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Step_9_Escalation_path_for_complaints\"><\/span>Step 9: Escalation path for complaints<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li><strong>Pause<\/strong> outreach to the identity keys involved (email and phone) while you investigate.<\/li>\n<li><strong>Verify<\/strong> the stop request event in the system of record \u2014 source, timestamp, scope \u2014 and fill in anything missing.<\/li>\n<li><strong>Confirm propagation<\/strong> to downstream tools and backfill suppression wherever sync failed.<\/li>\n<li><strong>Document resolution<\/strong> in the candidate record and your ops log: what failed, what changed, how you&#8217;ll prevent it next time.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Step_10_Add_import_guardrails\"><\/span>Step 10: Add import guardrails<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Re-import is where most &#8220;we already suppressed them&#8221; failures actually happen. Put guardrails in writing and in tooling:<\/p>\n<ul>\n<li><strong>Import rule<\/strong>: any inbound list or enrichment feed gets checked against suppression keys \u2014 normalized email\/phone \u2014 before creating or updating records.<\/li>\n<li><strong>Quarantine queue<\/strong>: matches route to an ops review queue instead of importing directly.<\/li>\n<li><strong>Field protection<\/strong>: imports can&#8217;t overwrite suppression fields unless the import source is the system of record itself.<\/li>\n<li><strong>Reactivation policy<\/strong>: define who can remove suppression and what evidence is required, such as explicit candidate consent with a timestamp.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Step_11_Train_recruiters_on_a_one-sentence_logging_standard\"><\/span>Step 11: Train recruiters on a one-sentence logging standard<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Recruiters won&#8217;t log stop requests if it&#8217;s complicated. Give them one sentence they can paste into notes:<\/p>\n<ul>\n<li>&#8220;Candidate requested no [channel] outreach on [date\/time] via [source]. Updated suppression scope to [scope].&#8221;<\/li>\n<\/ul>\n<p>Ops can standardize the structured fields later. The event just needs to be captured right away.<\/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 &#8220;new&#8221; 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&#8217;t 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&#8217;s 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 logging happens and where suppression state is stored before being 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 for email, SMS, and call \u2014 not one generic flag.<\/li>\n<li><strong>(15)<\/strong> Stop request logging includes source, timestamp, and actor; recruiters can log quickly with a single action and short note.<\/li>\n<li><strong>(15)<\/strong> Import guardrails run suppression checks before record creation\/update, and suppression fields are protected from overwrite.<\/li>\n<li><strong>(10)<\/strong> Enrollment is blocked when the relevant channel is suppressed, for both sequences and call\/SMS tasks.<\/li>\n<li><strong>(10)<\/strong> Sync to email, SMS, and dialer suppression endpoints is automated with a defined cadence and failure alerts.<\/li>\n<li><strong>(10)<\/strong> An audit trail exists showing who changed suppression, when, and why, with an evidence pointer.<\/li>\n<li><strong>(5)<\/strong> A reactivation policy exists and requires explicit candidate consent captured with a timestamp.<\/li>\n<\/ul>\n<p><strong>Pass\/fail guidance:<\/strong> Under 70 points, you&#8217;re relying on memory and good intentions. Over 85, you&#8217;re 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&#8217;ve updated your preferences and will stop contacting you via [email\/SMS\/calls] going forward. If you ever want to reconnect, reply here and I&#8217;ll 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\"><\/span>Template 4: Vendor\/tool import instruction<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>A &#8220;suppression list&#8221; that only lives in the email tool.<\/strong> That doesn&#8217;t stop call tasks, SMS, or re-imports. Enforce at import, enrollment, and send\/dial.<\/li>\n<li><strong>One generic flag for everything.<\/strong> Candidates often mean &#8220;don&#8217;t text me&#8221; but are fine with email. Store channel-specific suppression so you don&#8217;t burn good leads or ignore stated preferences.<\/li>\n<li><strong>No source or date.<\/strong> If you can&#8217;t answer when someone asked, you can&#8217;t troubleshoot disputes or train the team properly.<\/li>\n<li><strong>Imports overwriting 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> Without normalized phone\/email, you&#8217;ll miss matches and re-contact people who already opted out.<\/li>\n<li><strong>Reactivation without evidence.<\/strong> Removing suppression because &#8220;the candidate seems interested&#8221; invites repeat contact issues. 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 chasing dead ends. It also keeps your outreach channels healthier over time.<\/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>: messages or calls sent to identities marked suppressed at the time of send, counted weekly. Goal: trend to zero.<\/li>\n<li><strong>Suppression propagation lag<\/strong>: time from stop_request_timestamp to suppression appearing in each downstream tool, measured as median and 95th percentile. Monitor it and reduce it over time.<\/li>\n<li><strong>Import block rate<\/strong>: records blocked or quarantined due to suppression match, per 100 attempted imports. If this is zero, you&#8217;re probably not checking correctly.<\/li>\n<li><strong>Enrollment block rate<\/strong>: sequence or dial enrollments blocked due to suppression, per 100 attempts. This should exist as proof enforcement is actually working.<\/li>\n<\/ul>\n<p>If you also monitor outreach performance, keep the definitions consistent:<\/p>\n<ul>\n<li><strong>Deliverability rate<\/strong> = delivered emails \/ sent emails, per 100 sent.<\/li>\n<li><strong>Bounce rate<\/strong> = bounced emails \/ sent emails, per 100 sent.<\/li>\n<li><strong>Reply rate<\/strong> = replies \/ delivered emails, per 100 delivered.<\/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.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"OPS_TEMPLATE_worksheet_schema_propagation_and_import_guardrails\"><\/span>OPS_TEMPLATE worksheet: schema, propagation, and import guardrails<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>This worksheet targets the most common failure: suppressed contacts re-entering through enrichment or list imports.<\/p>\n<p><strong>A) Minimum viable suppression schema<\/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 and timestamp, system-enforced where possible.<\/li>\n<\/ul>\n<p><strong>B) Propagation checklist<\/strong><\/p>\n<ul>\n<li>Email tool: sync suppressed emails and ingest unsubscribes back to the system of record.<\/li>\n<li>SMS tool: sync blocked numbers and ingest STOP events back to the system of record.<\/li>\n<li>Dialer: sync blocked numbers and block call task creation when the call channel is suppressed.<\/li>\n<li>Workflow\/enrichment: run a suppression check before writeback and quarantine matches.<\/li>\n<\/ul>\n<p><strong>C) Import guardrails<\/strong><\/p>\n<ul>\n<li>Pre-import step: normalize incoming email\/phone and match against suppressed identities.<\/li>\n<li>On match: route to a quarantine queue rather than auto-creating or updating the record.<\/li>\n<li>Field protection: suppression fields stay read-only for imports unless the source is the system of record.<\/li>\n<li>Audit: log import job ID and counts \u2014 attempted, blocked, quarantined, approved.<\/li>\n<\/ul>\n<p><strong>D) Example suppression event record<\/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\"><\/span>Weekly audit loop<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li>Review repeat-contact incidents and identify which choke point failed \u2014 import, enrollment, or send\/dial.<\/li>\n<li>Check propagation lag for the last week&#8217;s stop requests and fix whichever tool is drifting.<\/li>\n<li>Work the quarantine queue: approve true matches, correct false matches, and update matching rules as needed.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Workflow_fit_tips\"><\/span>Workflow fit tips<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li>Put a suppression status badge on the candidate header in your ATS\/CRM so recruiters see it before they click call, text, or email.<\/li>\n<li>Make suppression a required step in disposition reasons \u2014 for example, &#8220;Not interested \u2014 opted out of SMS.&#8221;<\/li>\n<li>When sourcing in <strong>Heartbeat.ai<\/strong>, keep suppression synced so recruiters don&#8217;t waste cycles; Heartbeat.ai can support workflows that prioritize connectability, including <strong>ranked mobile numbers by answer probability<\/strong> when you&#8217;re 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. The obligation in practice is simple: when someone asks you to stop, you stop on the channels and scope they requested, and you make sure your systems don&#8217;t quietly forget.<\/p>\n<p>Data minimization matters operationally: store what you need to enforce suppression \u2014 channel, scope, timestamp, source, and an evidence pointer. Avoid storing message bodies or sensitive content unless internal policy requires it.<\/p>\n<p>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&#8217;s the difference between opt-out and suppression?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>An opt-out is the candidate&#8217;s 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 stop. Track deliverability rate (delivered\/sent per 100 sent) 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, and import guardrails.<\/li>\n<li>Audit your stack for enforcement at the three choke points: import, enrollment, and send\/dial.<\/li>\n<li>If you&#8217;re 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&#8217;re ready to operationalize sourcing and 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><br \/>\n<script type=\"application\/ld+json\">{\"@context\":\"https:\/\/schema.org\",\"@type\":\"Article\",\"articleSection\":\"Recruiting Ops\",\"author\":{\"@type\":\"Person\",\"jobTitle\":\"Founder & CEO of Heartbeat.ai\",\"name\":\"Ben Argeband\"},\"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><\/p>\n<p><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's 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's 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 stop. 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 and opt-out management across ATS, CRM, and outreach tools, with fields, sync, and import guardrails.<\/p>","protected":false},"author":5,"featured_media":54235,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_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 v28.1 - 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-08-31T10:34:40+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=\"16 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-08-31T10:34:40+00:00\",\"mainEntityOfPage\":{\"@id\":\"http:\\\/\\\/heartbeat.ai\\\/resources\\\/recruiting-ops\\\/suppression-lists-opt-out-management\\\/\"},\"wordCount\":3352,\"commentCount\":0,\"publisher\":{\"@id\":\"http:\\\/\\\/heartbeat.ai\\\/resources\\\/#organization\"},\"image\":{\"@id\":\"http:\\\/\\\/heartbeat.ai\\\/resources\\\/recruiting-ops\\\/suppression-lists-opt-out-management\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/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\":\"http:\\\/\\\/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-08-31T10:34:40+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\":\"http:\\\/\\\/hc.heartbeat.ai\\\/wp-content\\\/uploads\\\/2026\\\/02\\\/suppression-lists-opt-out-management-8330dcf6.png\",\"contentUrl\":\"http:\\\/\\\/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\":\"http:\\\/\\\/heartbeat.ai\\\/resources\\\/\"},{\"@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-08-31T10:34:40+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":"16 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-08-31T10:34:40+00:00","mainEntityOfPage":{"@id":"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/suppression-lists-opt-out-management\/"},"wordCount":3352,"commentCount":0,"publisher":{"@id":"http:\/\/heartbeat.ai\/resources\/#organization"},"image":{"@id":"http:\/\/heartbeat.ai\/resources\/recruiting-ops\/suppression-lists-opt-out-management\/#primaryimage"},"thumbnailUrl":"http:\/\/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":"http:\/\/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-08-31T10:34:40+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":"http:\/\/hc.heartbeat.ai\/wp-content\/uploads\/2026\/02\/suppression-lists-opt-out-management-8330dcf6.png","contentUrl":"http:\/\/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":"http:\/\/heartbeat.ai\/resources\/"},{"@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":3,"href":"http:\/\/heartbeat.ai\/resources\/wp-json\/wp\/v2\/posts\/54236\/revisions"}],"predecessor-version":[{"id":66114,"href":"http:\/\/heartbeat.ai\/resources\/wp-json\/wp\/v2\/posts\/54236\/revisions\/66114"}],"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}]}}