2026-09-28 · 原文发布日
开发信回信分类并生成每日电话清单
免费n8n模板:Smartlead的EMAIL_REPLY webhook触发后清洗回信正文,用OpenAI(不配则用关键词规则兜底)分类为有意向、暂缓、转介绍、退订、外出、需人工六类,映射成Zoho CRM的线索状态更新和带截止日的跟进任务;退订可自动调Smartlead接口全局屏蔽。工作日上午7:30还从Zoho拉取目标状态线索,按意向排序生成限量电话清单发到团队webhook。支持预览模式先看不写库。
原文要点
该n8n模板免费,由Smartlead的EMAIL_REPLY webhook触发(也内置演示触发器生成样例回信),清洗正文去除引用历史后用OpenAI分类,未配置OpenAI则用关键词规则加兜底;分为interested、not_now、referral、unsubscribe、out_of_office、needs_human六类,映射为Zoho CRM线索状态更新和带截止日的跟进任务,外出类忽略;退订可经Smartlead API全局屏蔽;预览模式只输出payload不写库;工作日上午7:30从Zoho按配置状态拉线索,按意向、转介绍、高分A级排序生成限量电话清单发到团队webhook。Zoho用Self Client OAuth,refresh token需含ZohoCRM.modules.ALL与ZohoCRM.coql.READ作用域。
这次做成什么
先以TEST_RUN预览模式跑通「回信清洗→六分类→Zoho payload预览→退订屏蔽演示→电话清单」全链路,确认payload正确后再切live;配本站设计的分类提示词与关键词兜底规则。
准备什么
- Smartlead账号并能创建EMAIL_REPLY webhook指向本工作流生产URL
- Zoho CRM账号及Self Client OAuth的client ID、client secret、refresh token
- Smartlead API Key用于退订屏蔽;可选OpenAI API Key用于AI分类
- 可选Slack/Teams/Google Chat的incoming webhook地址用于告警与电话清单
具体怎么做
触发与清洗
Webhook节点接收Smartlead EMAIL_REPLY事件(演练阶段用演示触发器或Pinned本站样例)。Code节点剥离引用历史:截断「On ... wrote:」「-----Original Message-----」之后内容,去除多余空行,并归一化email、name、leadId、campaign字段。
六分类(AI或规则)
配置OpenAI凭据时用HTTP Request/AI节点发下方分类提示词,要求只回JSON;未配置时走Code节点执行关键词兜底规则(见材料),命中退订类关键词需再经安全检查,避免把含「不需要」的长句误杀,不确定一律落needs_human。
分类映射为Zoho动作
Switch节点按分类分流:interested→状态设「有意向」并建明日到期跟进任务;not_now→状态「暂缓」建一周后任务;referral→状态「转介绍」并通知团队;out_of_office→忽略不写库;unsubscribe→进入屏蔽分支;needs_human→仅发团队告警。TEST_RUN=true时用Code节点输出payload预览。
退订屏蔽分支
unsubscribe分支在配置Smartlead API Key后调其退订接口将该线索从所有campaign屏蔽;未配置时输出「将要发送的请求」预览,不实际调用。
每日电话清单
Schedule Trigger设为工作日07:30(注意时区),HTTP Request用COQL查询Zoho中配置状态的线索,Code节点按interested→referral→A级评分排序并截取上限(本站演练设20条),POST到NOTIFY_WEBHOOK_URL;确认无误后把TEST_RUN改为false允许写库。
可直接复制的材料
回信六分类提示词(粘贴到OpenAI消息体)
本站独立编写;阈值0.7为本站设定,可调整
你是开发信回信分类器。把下面的回信正文分类为六类之一:interested(明确兴趣/约聊)、not_now(暂缓/以后再说)、referral(转介绍他人)、unsubscribe(要求退订/不要再发)、out_of_office(自动回复/休假)、needs_human(含糊、投诉、法律措辞或无法判断)。只输出JSON:{"label":"类别","confidence":0到1,"reason":"10字内依据"}。confidence低于0.7时label一律改needs_human。回信正文:{{cleanedText}}关键词兜底规则配置
本站独立编写的示例规则,优先级自上而下,可按业务改词表
{"rules":[{"label":"unsubscribe","any":["退订","unsubscribe","不要再发","opt out","remove me"]},{"label":"out_of_office","any":["自动回复","out of office","休假中","on vacation","auto-reply"]},{"label":"referral","any":["你可以联系","转给","speak with","cc'd"]},{"label":"not_now","any":["下个月再","暂时不需要","later","not now","下个季度"]},{"label":"interested","any":["感兴趣","约个时间","interested","book a call","报价"]}],"fallback":"needs_human","safetyCheck":"正文超过200字且同时命中unsubscribe与其他类关键词时改判needs_human"}合成EMAIL_REPLY测试数据
本站合成数据;清洗后正文应为前两行,预期分类not_now
{"event_type":"EMAIL_REPLY","lead":{"email":"zhangsan@demo-corp.cn","name":"张三","lead_id":"L-1001"},"campaign":"Q4-demo","reply_text":"谢谢来信。\n这周实在没空,下个月初再联系我吧。\n\nOn Mon, agent wrote: 我们提供..."}输入与输出示例
本站虚构演示,非模板实测结果;OpenAI与Zoho可能另计费
输入
用上方测试数据触发:张三回复「这周实在没空,下个月初再联系我吧」(含引用历史)对应输出
清洗后正文=「谢谢来信。这周实在没空,下个月初再联系我吧。」;分类{"label":"not_now","confidence":0.93,"reason":"明确说下个月再联系"};预览payload:Zoho线索状态=暂缓,任务=「回访张三-开发信暂缓」截止日为今天+7天(对应步骤3的一周后跟进任务设定)做完检查这些
- 清洗后正文不含「On ... wrote:」之后的引用内容且email字段已归一化
- 六类样例各跑一条时Switch分支走向与映射表一致
- TEST_RUN=true时不产生任何Zoho写入,只输出payload预览
- 退订分支在未配Smartlead Key时只输出将要发送的请求
- 工作日07:30清单消息按interested优先排序且不超过设定上限
容易卡住的地方
- Zoho refresh token必须含ZohoCRM.modules.ALL和ZohoCRM.coql.READ两个作用域,缺一会查询失败
- 07:30调度需确认n8n实例时区,否则电话清单会在错误时间发出
- 未配OpenAI时关键词规则可能误分类长邮件,safetyCheck兜底别删
- TEST_RUN默认应为true,切false前先用合成数据验证payload
- 电话清单排序中的A级评分依赖你Zoho里的评分字段,需先确认字段存在
本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。
- 原文标题
- Classify Smartlead replies and build a daily call list with Zoho CRM and OpenAI
- 原作者
- Atharva Ashtekar
- 原始发布日期
- 2026-09-28T07:32:25.492Z
- 来源
- https://n8n.io/workflows/20023