2026-09-08 · 原文发布日
表单线索按理想客户画像打分并写回HubSpot
表单提交新线索后,流程先清洗数据:邮箱规范化并转小写、提取公司域名、识别免费邮箱、补齐公司和网站字段。然后把线索连同你写的理想客户画像交给Gemini,返回匹配分数、细分、理由和开场白的JSON;解析做了防御处理,读不懂的回复会落到安全默认值。邮箱有效才在HubSpot按邮箱创建或更新联系人并写入评分字段,只有超过热度阈值的线索才通过Gmail给销售负责人发HTML提醒。
原文要点
作者Lhoussaine Ait Aissa发布的免费n8n模板:n8n Form触发器接收表单线索后,先规范化数据(邮箱校验并转小写、提取公司域名、识别免费邮箱、回填公司和网站),再把线索连同你写的ICP描述发给Google Gemini,返回含匹配分数、细分、理由和开场白的JSON;解析做了防御处理,读不懂的回复落到安全默认值。邮箱有效才按邮箱在HubSpot创建或更新联系人并写入评分字段,只有超过热度阈值且未被取消资格的热线索才通过Gmail向销售负责人发HTML提醒。配置项包括sales_owner_email、hot_score_threshold和icp_description。
这次做成什么
在n8n搭一条表单线索自动评分路由:表单触发→清洗→Gemini按ICP打分→防御性解析→邮箱有效则HubSpot按邮箱upsert→热线索才发Gmail提醒,并用本站合成表单数据走通分支逻辑。
准备什么
- 一个n8n实例,可使用内置n8n Form触发器节点
- HubSpot账号及Private App令牌,需crm.objects.contacts.read和crm.objects.contacts.write两个scope
- Google Gemini(Chat Model)凭据和已授权的Gmail发送账号
- HubSpot中已存在映射要用的联系人属性(如message、lead status、lifecycle stage、website、company、phone)
- 一位接收提醒的销售负责人邮箱
具体怎么做
建表单触发与清洗
添加n8n Form触发器,设置name、email、company、website、phone、message六个字段并发布测试表单。其后接Code节点做清洗:trim并把email转小写,用简单正则校验格式;从邮箱@后提取域名,对照免费邮箱列表(gmail.com、yahoo.com、outlook.com等)打free_email标记;company为空时用域名首段回填,website为空且非免费邮箱时用https://加域名回填。
配置参数与AI评分
加一个Set节点作为配置区,设置sales_owner_email、hot_score_threshold(练习建议70)、icp_description三个字段。再接Gemini Chat Model节点,系统提示词用下方ICP评分提示词,用户消息传入清洗后的线索JSON加上icp_description,要求只输出含fit_score、segment、reasoning、email_opener的JSON。
防御性解析与热度判定
用Code节点对模型返回做JSON.parse并try/catch,失败时采用安全默认值:fit_score置0、segment置unknown、disqualified置true。随后计算is_hot:email_valid为true且disqualified为false且fit_score大于等于hot_score_threshold时才为true,三个条件缺一不可。
分支写入与提醒
先加一个IF节点:email_valid为true才进HubSpot节点,operation选upsert(按email匹配),把message、fit_score、segment、lifecycle stage、website、company、phone映射到联系人属性。再接第二个IF节点:is_hot为true时用Gmail节点向sales_owner_email发HTML邮件,正文含姓名、公司、分数、理由和开场白;否则流程直接结束不发信。
可直接复制的材料
Gemini按ICP打分的提示词
本站独立编写的示例提示词。ICP描述建议在配置节点的icp_description中单独维护并拼进用户消息,而不是写死在提示词里,方便按路由规则调整。
你是B2B线索资格审查助手。我会给你一条表单线索(JSON,含name、email、company、website、phone、message、free_email字段)和我们的理想客户画像(ICP)描述。
请完成:
1. fit_score:0到100的整数,表示线索与ICP的匹配度。免费邮箱、明显无关行业、信息严重缺失都应显著降分。
2. segment:用中文一个词给出细分(如“中小企业-电商”“大企业-制造”“不匹配”)。
3. reasoning:不超过60字的中文理由。
4. email_opener:不超过60字的中文个性化开场白,供销售首次联系使用。
5. disqualified:布尔值,明显垃圾或完全无关的线索填true。
只输出如下JSON,不要输出任何其他内容:
{"fit_score": 整数, "segment": "字符串", "reasoning": "字符串", "email_opener": "字符串", "disqualified": false}配置区Set节点示例
本站示例值,全部需替换为你的真实路由规则和ICP;阈值为练习参考值,请按线索量实际校准。
{
"sales_owner_email": "sales-lead@yourcompany.example",
"hot_score_threshold": 70,
"icp_description": "年营收500万至5000万人民币、正在找营销自动化的国内电商品牌,决策人是市场负责人或创始人。"
}合成表单测试数据
本站虚构数据,不含真实个人信息。email故意大小写混合、company和website留空,用于验证小写化和回填逻辑;域名BrandShop.example为保留示例域。
{"name": "王测试", "email": "Wang.Test@BrandShop.example", "company": "", "website": "", "phone": "13800001234", "message": "我们是年营收约2000万的国产护肤品牌,想评估营销自动化工具。"}输入与输出示例
本站虚构演示,用于展示字段对应和分支走向,并非调用Gemini的真实返回,也未实际运行该工作流。
输入
提交上述合成表单数据:email为Wang.Test@BrandShop.example,company和website为空,message说明是年营收约2000万的护肤品牌想找营销自动化。对应输出
清洗后email变为wang.test@brandshop.example,free_email为false,company回填为brandshop,website回填为https://brandshop.example。模型示意返回{"fit_score": 82, "segment": "中小企业-电商", "reasoning": "营收规模与电商行业均贴合ICP,需求明确", "email_opener": "看到贵司在护肤类目增长很快,想聊聊自动化如何减少人工跟进", "disqualified": false}。82≥70且邮箱有效,进入HubSpot upsert并触发Gmail提醒。做完检查这些
- 故意提交一个含大写字母的邮箱,写入HubSpot前必须已全部转小写
- 提交gmail.com邮箱时free_email标记为true,且company为空时不会被域名回填误填成gmail
- 把模型输出位置手动换成一段非JSON文本,流程走安全默认值分支,不报错、不发Gmail提醒
- fit_score低于阈值的线索完成HubSpot upsert后流程结束,Gmail节点无发送记录
- HubSpot中重复提交同一邮箱时是更新已有联系人而不是新建重复联系人
容易卡住的地方
- HubSpot Private App令牌必须同时勾选crm.objects.contacts.read和write,只给读权限会导致upsert失败
- 映射用到的联系人属性若HubSpot里不存在(尤其是自定义属性),写入会报错,需先在HubSpot建好
- disqualified为true时即使分数高也不算热线索,别忘了在is_hot条件里带上这一项
- Gemini调用按量计费,模型名和可用性以你Google账号实际为准
- 免费邮箱识别依赖你维护的域名列表,新出现的免费邮箱服务商不会自动覆盖
- 表单触发器需使用发布后的表单地址,编辑器内的测试提交与外部提交行为不同
本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。
- 原文标题
- Score inbound leads with Google Gemini, HubSpot, and Gmail alerts
- 原作者
- Lhoussaine Ait Aissa
- 原始发布日期
- 2026-09-08T11:18:40.435Z
- 来源
- https://n8n.io/workflows/19385