自动化流程
可视化流程编辑器:将触发事件与各项集成中的操作步骤连接起来。
自动化流程会在事件发生时替你执行工作:收到回复或会议预约后,Warmbly 可以向 Slack 发消息、推送到 CRM,或为联系人添加标签。你只需在画布上搭建,无需写代码。

创建自动化流程
打开自动化流程标签页,选择新建自动化流程。
选择触发事件,例如收到回复。
点击 + 添加操作,在需要分支的位置添加 If / else(条件分支)。
点击测试,用示例数据模拟运行。
点击保存,并确认自动化流程已启用。
使用须知
- 保存前,任何修改都不会生效。测试会先保存,再模拟运行。
- 关闭的自动化流程绝不会触发,即使来自营销活动步骤也一样。
- 测试不会发送消息或修改记录,但 AI 步骤会实际运行并消耗积分。
- 一个步骤失败不会阻塞其余步骤,失败会记录在历史记录中。
- 批量文件导入和表格同步不会触发创建联系人事件。
自动化流程是在画布上搭建的流程:一个触发器(收到回复、会议已预约)执行一个或多个操作(发送 Slack 消息、推送到 CRM、标记联系人),中间可以加入 IF 条件进行分支。无需代码,不过高级模式也允许直接编写条件表达式。

打开自动化流程标签页。每个流程都有名称、启用开关和画布。处于关闭状态时绝不会运行,即使从营销活动步骤调用也不例外。
画布自动布局:触发器在顶部,其下所有步骤按从上到下的顺序运行。你无需手动画线或排列卡片。双指滚动或拖动画布空白处可以移动视图;捏合,或按住 Ctrl/Cmd 滚动,可以缩放。Shift+1 将整个流程适配到视图中,Cmd/Ctrl+0 恢复 100% 缩放。
- 悬停在任意连接线上,点击 + 可在该处插入步骤;点击路径末尾的 + 则在其后追加。选择器支持搜索,也支持键盘操作(方向键、
Enter、Esc)。 - If / else(条件分支) 分为是与否两列。AI 分支选择为每个分支提供一列。在路径中间插入任一种分支节点时,原先位于其后的步骤会保留在第一个分支上。
- 路径末尾的跳转到步骤可继续执行流程中已有的步骤,并以标签形式显示。悬停即可查看目标位置,只提供不会形成回环的步骤。
- 在此结束用于明确终止路径。
- 点击步骤可在侧边面板编辑。添加或删除步骤时,其余流程会通过简短动画自动调整位置。步骤的 ⋯ 菜单可以复制、添加错误路径或删除。删除步骤后,前后的节点会重新连接;删除分支节点时,会先询问,再一并删除只由这些分支通往的步骤。
- 尚未完成设置的步骤,其名称旁有琥珀色圆点,悬停可查看缺少什么;顶部的问题按钮列出全部问题。修复之前不能保存。
Cmd/Ctrl+Z撤销编辑,Shift+Cmd+Z(或Ctrl+Y)重做,Cmd/Ctrl+S保存,Delete删除选中步骤。- 画布支持协作,显示同事的光标和选中步骤,使用各自的颜色描边。按
/可以聊天。参见实时协作。
运行前先保存
触发器、条件和操作只有在保存后才会生效。测试会先保存,再模拟运行。
| 触发器 | 触发时机 |
|---|---|
| 收到回复 | 联系人回复营销活动邮件 |
| 创建联系人 | 手动、通过 API、表单或自动化流程添加新联系人(批量文件导入和表格同步不触发,见下文) |
| 提交表单 | 托管的表单收到提交 |
| 会议已预约 / 已改期 / 已取消 | Calendly 或 Cal.com 中的会议发生变化 |
| 邮件退信 | 营销活动邮件退信 |
| 已退订 | 联系人退订 |
| 预热健康状态变化 | 邮箱预热健康状态改变 |
| 垃圾邮件投诉 | 记录到垃圾邮件投诉 |
| 入站 Webhook | 外部系统向此流程专属 URL 发出 POST 请求 |
| 营销活动操作 | 营销活动邮件序列运行到“运行自动化流程”步骤 |
每种触发器都携带自己的事件数据。例如,回复事件包含联系人邮箱、回复意图、分类器置信度,以及启用收件箱标签时的标签判断结果。这些值用于条件判断,也可插入操作文本。各触发器的完整变量列表见个性化与表达式。
营销活动操作不会自行触发,只能由营销活动步骤调用,但仍会检查你设置的条件。
创建联系人为每位新联系人触发一次,携带联系人字段及首次接触来源,因此可以按 source(表单、API、自动化流程)或其他任意字段分支。已有联系人仅被更新时,不会触发。批量导入刻意保持静默:如果导入文件或 Google Sheets 同步的一万行数据触发一万个流程,就会使所有 Webhook 被大量请求淹没,因此这些方式从不触发该事件;单次 API 请求添加超过 100 位联系人时也不触发。
传入 Webhook
选择触发器并保存后,编辑器会显示专属 URL。任何能发起 HTTP 请求的系统,都可以向该地址 POST JSON。
- JSON 请求体成为事件载荷:
{"email":"[email protected]"}可通过{{.email}}读取。非对象请求体通过{{.body}}提供。 - URL 本身就是凭据。 其中携带高熵令牌,应作为机密保管,通过 HTTPS 发送;泄露后需轮换,可先切换为其他触发器,再切回来。
- 请求立即返回,流程在后台运行,因此慢操作不会阻塞调用方。
- 以下划线开头的键会被移除,请求体上限为 1 MB。
If / else(条件分支) 分为是与否两列,只有匹配的分支会执行;空分支会直接结束。
选择字段、运算符和值。字段根据触发器提供,因此始终与当前事件有关。
| 字段类型 | 运算符 |
|---|---|
| 文本 | is, is not, contains, is present |
| 数字 | ≥, ≤, is, is present |
| 选项(枚举) | is, is not, is present |
| 列表 | contains, is present |
列表只有在某一项与目标值完整匹配时,才满足 contains,匹配不区分大小写。因此,标记为“Not interested”的回复不会通过 contains Interested。没有任何元素的列表视为不存在。
根据收件箱标签筛选回复
启用收件箱标签后,收到回复事件还会携带该邮件已保存的标签判断结果,因此回复自动化可以依据收件箱显示的同一组标签筛选:
| 字段 | 内容 |
|---|---|
ai_labels | 邮件上的标签(Interested、Meeting、Pricing、Question、Wrong person,以及你自定义的问题标签) |
ai_intent | 真人回复的意图:agreed, scheduling, wants_pricing, wants_info, wrong_person, not_now, not_interested, opt_out 等。标签功能无法有把握地判断时为空 |
ai_intent_confidence | 标签功能对 ai_intent 的把握程度,范围 0 到 1 |
ai_kind | 邮件类别:human_reply, auto_reply_ooo, auto_reply_ticket, cold_inbound, internal。无法确定时为空 |
ai_relevance | 0 到 100 的相关性评分 |
ai_needs_review | 标签功能是否将该邮件标记为需要人工检查 |
标签功能从未判断过的回复(功能关闭,或邮件被跳过)不会携带上述任何键。检查 ai_needs_review 是否满足 is present,即可区分已判断的回复与没有结论的回复:即使值为 false,这个键也仍然存在。不要使用 ai_labels、ai_kind 或 ai_intent 做这项检查,因为已判断的回复也可能拥有空列表或空字符串。intent 和 confidence 仍保留工作区关键词列表的判断结果,不受影响。要获知所有感兴趣的潜在客户,可以按 ai_labels 是否包含 Interested、Meeting、Pricing 或 Question 分支,或使用一个表达式:
or (has .ai_labels "Interested") (has .ai_labels "Meeting") (has .ai_labels "Pricing")回复有这些标签时,内置 Slack 和 Discord 消息会在标题中列出标签名称。
以下三种特殊条件可用于任意触发器:
- 询问 AI(是/否):用自然语言询问事件,例如“这封回复是在问价格吗?”,根据答案选择路径。支持模板,可以插入
{{.field}}。每次判断消耗一个积分;模型无法回答或积分不足时,执行“否”路径,并在历史记录中说明原因。参见自动化流程中的 AI 步骤。 - 随机分流:按指定比例(
1%到99%)进入“是”路径;同一事件的结果固定,因此重新投递不会改变分支。 - 高级表达式:直接编写条件,结果为真值时进入对应路径。
and (gtf .confidence 0.8) (eq .intent "positive")可使用比较(eq、gt、lt)、数值转换与计算(gtf、ltf、add、sub、mul、div)、逻辑(and、or、not)以及文本辅助函数(contains、lower)。格式错误或为空的表达式为假,不会悄悄通过;保存时也会进行验证。
每个操作节点都需要选择执行目标(某个集成或 Warmbly 内置功能)以及操作。
| 集成操作 | 作用 |
|---|---|
| 发送 Slack / Discord 消息 | 发到指定频道(Slack 需要 #channel) |
| 发送 Webhook | 向你提供的 URL 发起 HTTP 请求 |
| 创建 / 更新 HubSpot 联系人、Pipedrive 人员、Salesforce 记录、Close 潜在客户 | 新建记录或更新已有记录。在 HubSpot 模式或 Pipedrive 模式下,联系人本就自动同步,因此无需对应 CRM 的此项操作,该操作会让位于自动同步。Salesforce 按连接规则查找 Lead 或 Contact,或创建新记录 |
Slack、Discord 和 Webhook 操作可选择填写消息模板。Slack 和 Discord 消息以 Warmbly 强调色的品牌卡片显示,包含联系人和主题字段,而不是普通的一行文字。Slack 会按原文显示文本:<、> 和 & 会被转义,因此主题或模板不能构成 Slack 链接或提及。
| 内置操作 | 作用 |
|---|---|
| 创建或更新联系人 | 根据事件字段新建联系人,或补充同邮箱联系人的信息,再为其加标签并加入营销活动。参见潜在客户接入 |
| 添加到营销活动 | 将事件中的联系人加入营销活动;已完成的活动会通过正常启动检查后重新启动(拒绝时会记入活动日志,潜在客户继续等待);等待新客户的活动会立即接手 |
保存含这两种操作之一的自动化流程时,会启用所选营销活动的持续等待新潜在客户设置,使活动在两次运行之间等待,而不是完成退出。
| 添加 / 移除标签 | 为联系人添加或移除标签 |
| 为会话添加标签 | 对联系人回复所在的会话应用标签 |
| 创建任务 | 分配给工作区所有者 |
| 创建商机 | 在指定销售管道与阶段中创建 |
| 移动商机阶段 | 移动该联系人在指定管道中最近一笔未关闭商机 |
| 将联系人退订 | 仅当事件携带营销活动时可用 |
| 设置变量 | 根据模板计算具名值,供后续步骤以 {{.name}} 重用 |
| 触发事件 | 向实时网关发布 CUSTOM_EVENT |
| AI 步骤 / AI 分支选择 | 智能体或单次调用 AI 节点,以及由 AI 决定的路由。参见 AI 步骤 |
需要了解三个约束:联系人在指定管道中没有未关闭商机时,移动商机阶段不执行操作;退订要求事件携带营销活动;为会话添加标签仅适用于“收到回复”自动化,因为它需要一个可标记的会话。
在 HubSpot 模式或 Pipedrive 模式下,这些操作选择的是相应 CRM 的销售管道,创建的任务与商机也会通过同步队列发送到该 CRM。在 Pipedrive 中,任务会变成活动。
添加到营销活动和其他所有联系人操作都需要目标联系人:事件必须携带 contact_id 或 contact_email,Warmbly 的每种触发器都会提供。在入站 Webhook 中,应先放置创建或更新联系人步骤,其写入的联系人会成为后续步骤使用的事件联系人。
潜在客户接入
任何能发送 HTTP 请求的系统,都可以无需 API 客户端就在 Warmbly 中创建联系人:使用入站 Webhook触发器,再接一个创建或更新联系人操作。
- 选择入站 Webhook 触发器,保存,并复制 URL。
- 添加创建或更新联系人。每个字段都可基于调用方发送的 JSON 编写模板,例如邮箱
{{.email}}、名字{{.first_name}},以及将自定义字段team_size设为{{.answers.team_size}}。再选择标签和潜在客户将加入的营销活动。 - 将发送方指向该 URL。可以使用 Zapier 的 Webhooks by Zapier、Make 的 HTTP 模块、n8n 的 HTTP Request 节点、Typeform 或 Tally Webhook,也可以使用自己的代码。
操作通过邮箱匹配已有联系人,因此重复发送同一潜在客户会更新记录,而不是重复创建。渲染为空的值不会抹去联系人已有字段。联系人已存在时设置决定是补充信息并加入活动(默认),还是不做改动。新联系人的首次接触来源记为 automation,详情记录自动化流程名称。
潜在客户表单广告可能集中产生大量线索,而跟进仍由你的邮箱在每日上限与间隔限制下发送。若一个邮箱每天上限 50 封,一天收到 200 条线索,就需要四天发送;营销活动的“收件人数与发送容量”估算会显示这一点。应增加邮箱数量,而不是提高单个邮箱上限。
创建联系人的流程可能进一步触发创建联系人流程。这种行为允许存在,但有边界:自动化操作产生的事件会携带已经经过的跳转次数,达到五跳后不再运行后续自动化,避免两个流程无限互相触发。
触发事件与入站 Webhook 方向相反:你的应用使用具有 REALTIME_SUBSCRIBE 权限的 API 密钥,通过 WebSocket 订阅并接收 { name, payload },无需托管公开 URL 就能获得事件。参见实时事件。
出错分支
在操作的 ⋯ 菜单中选择添加错误路径,处理 Slack 消息被拒、CRM 超时等失败。操作随后会分成然后和发生错误时两列。
- 已连接错误分支时,失败后沿该分支运行,整次运行不会被标记为失败,类似 try/catch;正常路径会跳过。
- 没有错误分支时,历史记录会记录失败,整次运行标为出错,但仍尽力沿正常路径继续,因此一个步骤出错不会阻塞其余步骤。
- 模拟运行不会让操作失败,因此测试始终显示正常路径。
模板
文本字段(消息、Webhook URL、商机名称、任务标题)接受 {{.key}} 形式的触发器变量,编辑器提供可点击的标签插入:
New reply from {{.contact_email}} on {{.campaign_name}}未知标记会渲染为空,而不是导致失败。
测试会保存画布,并用示例数据模拟运行:不发送消息、不修改记录。它会在画布上标出实际经过的步骤,淡化其余步骤,并以列表形式预览每个操作,展示准确的执行路径。AI 步骤是例外,会实际运行以展示真实输出,每个 AI 步骤消耗一个积分。
历史记录显示最近的真实运行:成功或出错、开始时间,以及各步骤结果(失败时显示错误文本,成功时显示简短摘要)。自动化触发时会实时更新。
尽力执行的设计
流程采用尽力执行方式,并设有防循环边界,因此一个步骤失败不会阻塞其余步骤。整次运行仍会记录为出错,便于查看哪里发生了问题。