Engagement-Based Suppression Workflow
Build a two-tier sunset system that protects email deliverability while giving disengaged contacts a fair chance to re-engage before suppression.
Why Two Tiers Matter
Suppressing contacts immediately after inactivity is aggressive and loses potential re-activations. A two-tier approach:
- - Tier 1 (inactive for your sunset window — typically 120-270 days): Triggers a re-engagement campaign — a last chance to interact.
- Tier 2 (your re-engagement window after Tier 1 — typically 21-45 days — with still no engagement): Suppresses the contact from marketing emails.
This preserves deliverability scores while maximizing the recoverable audience.
Prerequisites
- - HubSpot Marketing Professional or Enterprise plan
- A re-engagement email campaign or sequence ready to send
- A custom dropdown property to track suppression status (e.g.,
engagement_flag or reengagement_status — dropdown with values: "re-engagement sent", "suppressed")
Workflow Design
CODEBLOCK0
Building the Workflow: Three Options
Option 1: Manual UI Build
Follow the step-by-step instructions in the "Execute" section below. This is the most reliable method and gives you full control over every trigger, branch, and action.
Option 2: HubSpot Breeze AI
HubSpot's built-in Breeze AI can generate a workflow skeleton from a natural language prompt. Navigate to Automation > Workflows > Create workflow > "Describe what you want" and paste the following prompt:
CODEBLOCK1
CRITICAL WARNING: Breeze trigger limitations. Breeze creates event-based triggers (OR logic) instead of filter-based triggers (AND logic). This is a known limitation. After Breeze creates the workflow, you MUST manually verify and fix the trigger/enrollment conditions in the UI. The enrollment trigger for this workflow requires AND logic across four conditions -- Breeze will likely create them as separate OR conditions, which would enroll contacts incorrectly. Breeze is best used for creating the workflow skeleton (actions, branches, delays) -- the trigger conditions almost always need manual correction.
Additional Breeze limitations for this workflow:
- - Breeze cannot create "is unknown" branch conditions -- you must add these manually
- Breeze cannot configure re-enrollment rules
- Breeze cannot set up workflow goals (early exit on re-engagement)
Option 3: Claude Anthropic Chrome Extension
The Claude Anthropic Chrome extension lets Claude see and interact with the HubSpot workflow builder UI directly. You can describe the workflow logic in natural language and Claude will click through the UI to build it. This is often more accurate than Breeze for complex workflows because Claude can verify each step visually, including the multi-condition AND enrollment trigger and the "is unknown" checks that Breeze cannot handle.
To use this approach:
- 1. Open the HubSpot workflow builder in Chrome (Automation > Workflows > Create workflow)
- Activate the Claude Chrome extension
- Describe the workflow using the design diagram and instructions from this skill
Note on Fast Mode: If you're using Claude Code's Fast Mode to speed up workflow creation,
be aware of the billing model: Haiku usage is included in your subscription, but Opus in
Fast Mode consumes extra credits. For workflow building tasks (which are UI-heavy and may
require many interactions), consider whether the speed tradeoff is worth the credit cost.
Step-by-Step Build Instructions
Stage 1: Before — Prepare
- 1. Create your suppression status property (e.g.,
engagement_flag or reengagement_status) if it does not exist:
- Object: Contact
- Type: Dropdown select
- Options: "re-engagement sent", "suppressed", blank/unknown
- Group: Contact information
- 2. Create or identify a re-engagement email/sequence. A simple 1-2 email series asking "Still interested?" with a clear CTA works well.
- 3. Define "engagement" for your branch condition. Recommended: email open OR email click OR form submission OR page view within your re-engagement window (typically 21-45 days).
Stage 2: Execute — Build the Workflow
- 1. Set enrollment trigger:
-
hs_email_last_open_date is more than your sunset window (typically 120-270 days) ago OR is unknown
- AND
email is known
- AND
hs_email_optout is not true
- AND your suppression status property is unknown
- 2. Action: Set contact property
- Your suppression status property = "re-engagement sent"
- 3. Action: Enroll in re-engagement sequence (or send re-engagement email)
- 4. Delay: your re-engagement window (typically 21-45 days)
- 5. If/then branch:
- Condition:
hs_email_last_open_date is less than [re-engagement window] days ago OR
hs_email_last_click_date is less than [re-engagement window] days ago
-
YES (re-engaged): Set your suppression status property to blank/unknown (clears flag, contact returns to normal)
-
NO (still disengaged): Set your suppression status property = "suppressed" and set
hs_marketable_status to non-marketing contact (via workflow action — this is the only way to set it, as the API is read-only)
- 6. Settings:
- Re-enrollment: OFF
- Goal: Contact opens or clicks any email (optional — exits workflow early)
- 7. Turn on the workflow.
Stage 3: After — Verify
- 1. Spot-check 10-20 contacts that entered the workflow. Confirm:
- Re-engagement email was sent
- After 30 days, disengaged contacts were suppressed
- Re-engaged contacts had their suppression status property cleared
- 2. Monitor deliverability metrics weekly for the first month.
- Track how many contacts re-engage vs. get suppressed — adjust the sunset window if needed.
Stage 4: Rollback
- 1. Turn off the workflow.
- To reverse suppressions: filter contacts where your suppression status property = "suppressed" and manually set them back to marketing contacts in the UI.
- Clear the suppression status property values in bulk if needed.
Tuning
- - Shorten the sunset window (e.g., 90-120 days) for aggressive deliverability improvement.
- Lengthen the re-engagement window (e.g., 45-60 days) if your email cadence is low.
- Exclude recent customers — add a filter to skip contacts with lifecycle stage = Customer or with a closed-won deal in the last 12 months.
基于互动度的分层抑制工作流
构建一个双层日落系统,既能保护邮件送达率,又能给不活跃联系人公平的重新互动机会,然后再进行抑制。
为什么双层机制很重要
不活跃后立即抑制联系人过于激进,会流失潜在的重新激活用户。双层方法:
- - 第一层(在您的日落窗口内不活跃——通常为120-270天):触发重新互动活动——最后一次互动机会。
- 第二层(第一层之后的重新互动窗口——通常为21-45天——仍无互动):将该联系人从营销邮件中抑制。
这能在保留送达率评分的同时,最大化可恢复的受众群体。
前提条件
- - HubSpot Marketing Professional或Enterprise套餐
- 准备好发送的重新互动邮件活动或序列
- 用于跟踪抑制状态的自定义下拉属性(例如,engagementflag或reengagementstatus——下拉选项:已发送重新互动邮件、已抑制)
工作流设计
触发器:上次互动日期 > [日落窗口] 天前
且邮箱已知
且未全局退订
且[抑制状态属性]未知
│
▼
┌────────────────────┐
│ 设置[状态属性] │
│ = 已发送重新互动 │
│ 邮件 │
└────────┬───────────┘
│
▼
┌────────────────────┐
│ 加入 │
│ 重新互动 │
│ 活动/序列 │
└────────┬───────────┘
│
▼
┌────────────────────┐
│ 延迟:[重新互动 │
│ 窗口] 天 │
└────────┬───────────┘
│
▼
┌────────────────────┐
│ 条件分支: │
│ 重新互动窗口内 │
│ 有互动吗? │
├──────────┬─────────┘
│ 是 │ 否
│ │
▼ ▼
清除状态 设置[状态属性]
属性 = 已抑制
+ 设置为非营销联系人
构建工作流:三种选项
选项1:手动UI构建
按照下方执行部分的逐步说明操作。这是最可靠的方法,让您完全控制每个触发器、分支和操作。
选项2:HubSpot Breeze AI
HubSpot内置的Breeze AI可以从自然语言提示生成工作流框架。导航至自动化 > 工作流 > 创建工作流 > 描述您想要的内容并粘贴以下提示:
创建一个基于联系人的工作流,用于双层日落/重新互动系统。
注册触发器:联系人上次打开邮件日期距今超过[日落窗口]天,
且邮箱已知,且未全局退订,且自定义属性
[您的抑制状态属性]为未知。
工作流应:
- 1. 将联系人属性[您的抑制状态属性]设置为已发送重新互动邮件
- 将联系人加入重新互动邮件序列
- 等待[重新互动窗口]天
- 检查联系人在过去[重新互动窗口]天内是否打开或点击了任何邮件
- 如果是(重新互动):清除[您的抑制状态属性]属性
- 如果否(仍不活跃):将[您的抑制状态属性]设置为已抑制,并将联系人
设置为非营销联系人
关键警告:Breeze触发器限制。 Breeze创建的是基于事件的触发器(OR逻辑)而不是基于筛选器的触发器(AND逻辑)。这是一个已知限制。Breeze创建工作流后,您必须手动验证并在UI中修复触发器/注册条件。此工作流的注册触发器需要四个条件的AND逻辑——Breeze可能会将它们创建为单独的OR条件,这将导致联系人注册错误。Breeze最适合用于创建工作流框架(操作、分支、延迟)——触发器条件几乎总是需要手动修正。
此工作流的其他Breeze限制:
- - Breeze无法创建为未知分支条件——您必须手动添加这些
- Breeze无法配置重新注册规则
- Breeze无法设置工作流目标(重新互动时提前退出)
选项3:Claude Anthropic Chrome扩展
Claude Anthropic Chrome扩展让Claude可以直接查看并与HubSpot工作流构建器UI交互。您可以用自然语言描述工作流逻辑,Claude会通过UI点击来构建它。对于复杂工作流,这通常比Breeze更准确,因为Claude可以直观地验证每一步,包括Breeze无法处理的多条件AND注册触发器和为未知检查。
使用此方法:
- 1. 在Chrome中打开HubSpot工作流构建器(自动化 > 工作流 > 创建工作流)
- 激活Claude Chrome扩展
- 使用此技能中的设计图和说明描述工作流
关于快速模式的说明:如果您使用Claude Code的快速模式来加速工作流创建,
请注意计费模式:Haiku使用包含在您的订阅中,但快速模式下的Opus
会消耗额外积分。对于工作流构建任务(这些任务UI密集且可能需要多次交互),
请考虑速度权衡是否值得积分成本。
逐步构建说明
第一阶段:之前——准备
- 1. 创建您的抑制状态属性(例如,engagementflag或reengagementstatus)如果不存在:
- 对象:联系人
- 类型:下拉选择
- 选项:已发送重新互动邮件、已抑制、空白/未知
- 分组:联系人信息
- 2. 创建或识别重新互动邮件/序列。 一个简单的1-2封邮件系列,询问还感兴趣吗?并带有明确的行动号召即可。
- 3. 定义互动用于您的分支条件。推荐:在您的重新互动窗口内(通常21-45天)打开邮件或点击邮件或提交表单或浏览页面。
第二阶段:执行——构建工作流
- 1. 设置注册触发器:
- hs
emaillast
opendate距今超过您的日落窗口(通常120-270天)或未知
- 且email已知
- 且hs
emailoptout不为真
- 且您的抑制状态属性为未知
- 2. 操作:设置联系人属性
- 您的抑制状态属性 = 已发送重新互动邮件
- 3. 操作:加入重新互动序列(或发送重新互动邮件)
- 4. 延迟:您的重新互动窗口(通常21-45天)
- 5. 条件分支:
- 条件:hs
emaillast
opendate距今少于[重新互动窗口]天或hs
emaillast
clickdate距今少于[重新互动窗口]天
-
是(重新互动): 将您的抑制状态属性设置为空白/未知(清除标记,联系人恢复正常)
-
否(仍不活跃): 将您的抑制状态属性设置为已抑制,并将hs
marketablestatus设置为非营销联系人(通过工作流操作——这是唯一设置方式,因为API是只读的)
- 6. 设置:
- 重新注册:关闭
- 目标:联系人打开或点击任何邮件(可选——提前退出工作流)
- 7. 开启工作流。
第三阶段:之后——验证
- 1. 抽查10-20个进入工作流的联系人。确认:
- 重新互动邮件已发送
- 30天后,不活跃联系人已被抑制
- 重新互动的联系人的抑制状态属性已被清除
- 2. 第一个月每周监控送达率指标。
- 跟踪重新互动与抑制的联系人数量——根据需要调整日落窗口。
第四阶段:回滚
- 1. 关闭工作流。
- 撤销抑制:筛选您的抑制状态属性 = 已抑制的联系人,在UI中手动将其重新设置为营销联系人。
- 如有需要,批量清除抑制状态属性值。
调优
- - 缩短日落窗口(例如,90-120天)以积极提升送达率。
- 延长重新互动窗口(例如,45-60天)如果您的邮件发送频率较低。
- 排除近期客户——添加筛选条件,跳过生命周期阶段 = 客户或过去12个月内有成交赢单的联系人。