2026-09-08 · 原文发布日
表单线索自动打分:高意向客户直接收到WhatsApp破冰消息
客户通过n8n表单提交咨询后,流程先校验手机号并生成去重键查Google Sheets,重复线索只记Slack不打扰;新线索交给Gemini判断购买意向、打分并拟好WhatsApp开场白写回表格,高意向线索在Slack提醒销售,中高意向且号码有效的自动发WhatsApp破冰消息并附预填姓名和需求的Cal.com预约链接,发送状态回写表格避免重复触达。
原文要点
原工作流是iamvaar发布的n8n免费模板(2026年9月更新,附YouTube演示视频):n8n表单收屋面咨询线索,校验手机号并生成去重键查Google Sheets,重复线索只在Slack记一条并停止触达;新线索写表后交给Google Gemini(Google PaLM凭据)用结构化提示词判断购买意向、打分、起草WhatsApp开场白,结果回写表格;High意向在Slack提醒销售;High/Medium且号码有效、表格中无WhatsApp Sent标记的,拼一个带name/email/notes预填参数的Cal.com预约链接,连同破冰消息经WhatsApp Business Cloud API发出;最后回写表格标记已发、低意向/垃圾线索或号码无效跳过。
这次做成什么
用n8n搭一条线索打分与触达练习流:表单提交→手机号校验与去重→Gemini意向打分并起草WhatsApp破冰语→按意向分支(Slack提醒/发WhatsApp/标记低意向)→状态回写Google Sheets防重复触达。全程用合成号码测试。
准备什么
- 一个n8n实例(自托管或云端)
- Google Sheets Service Account凭据及一张自建线索表
- Google Gemini(Google PaLM)凭据,并确认模型名在你的Google Cloud项目可用
- Slack凭据和一个测试频道
- WhatsApp Business Cloud凭据与Phone Number ID(练习阶段可用测试号)
- Cal.com预约链接(没有可先用占位链接)
具体怎么做
建线索表与表单
Google Sheets建表,列名严格用:Name、Company、Role、Email、Phone、Dedupe Key、Inquiry Message、Submitted At、Status、Score、Intent、WhatsApp Sent、WhatsApp Message。n8n加Form Trigger,字段:姓名、公司、职务、邮箱、手机号、咨询内容(多行)。
手机号校验与去重键
接Code节点:Phone去掉空格和横线,若非10-15位数字则标记phone_valid=false;Dedupe Key=Email小写+'|'+规范化Phone。接Google Sheets节点按Dedupe Key查找,查到即Slack发'重复线索'通知并终止后续触达。
写入表格并AI打分
查重为空则Sheets追加一行(Status=new)。接Gemini节点粘贴下方结构化提示词,要求只返回JSON:score(0-100)、intent(High/Medium/Low/Spam)、whatsapp_message。解析失败时用Set节点填intent=Low兜底。把三项结果回写该行。
按意向分支路由
Switch节点:Intent=High→Slack频道发'高意向线索+姓名+咨询摘要'提醒销售;Intent=High或Medium且phone_valid=true且WhatsApp Sent为空→进入发送分支;Low/Spam→回写Status=disqualified;号码无效→回写Status=skipped_invalid_phone。
拼预约链接并发WhatsApp
Set节点拼Cal.com链接:https://cal.com/你的团队/咨询?name={{姓名}}&email={{邮箱}}¬es={{咨询内容}}(参数需URL编码)。接WhatsApp Business Cloud节点,用Phone Number ID向线索手机号发模板/文本消息:破冰语+预约链接。发送成功后回写WhatsApp Sent=yes并记录发送的WhatsApp Message。全部用测试号码,别发真人。
可直接复制的材料
Gemini意向打分提示词
本站独立编写示例,字段名需与Sheets列一致;模型名以你Google Cloud项目可用的为准,作者未在文中给出具体模型名。
你是装修公司销售助理。根据线索信息判断购买意向,只返回JSON,不要输出其他文字。
姓名:{{$json.Name}}
公司:{{$json.Company}}
咨询内容:{{$json.Inquiry Message}}
规则:明确提到项目时间、预算、面积或要求报价→意向偏高;只是随便问问→Medium;无关内容或广告→Spam。
返回格式:{"score":0到100的整数,"intent":"High|Medium|Low|Spam","whatsapp_message":"一条不超过80字的中文WhatsApp破冰消息,称呼姓名,回应其咨询内容,引导预约一次免费上门评估"}表单测试线索数据
本站虚构数据,手机号为占位测试号,不含真实个人信息。
{"Name":"王小明","Company":"演示置业有限公司","Role":"工程主管","Email":"wangxm@example.com","Phone":"138 0000 1234","Inquiry Message":"办公楼屋顶漏水,约1200平米,希望本月内安排报价。"}输入与输出示例
本站虚构演示,非原作者结果,未实际调用Gemini或WhatsApp。
输入
提交上方测试线索:含'1200平米''本月内报价'等明确需求,手机号去空格后13800001234共11位有效,Dedupe Key=wangxm@example.com|13800001234在表中无匹配。对应输出
Gemini返回{"score":88,"intent":"High","whatsapp_message":"王小明您好,已收到贵司办公楼屋顶漏水咨询,可为您预约免费上门评估并出报价。"};Slack测试频道出现'高意向线索:王小明/演示置业,屋顶漏水1200平米';WhatsApp发送分支拼出https://cal.com/demo-team/consult?name=%E7%8E%8B%E5%B0%8F%E6%98%8E&email=wangxm%40example.com¬es=...并连同破冰语发到测试号码;表格该行回写Score=88、Intent=High、WhatsApp Sent=yes。重复提交同邮箱同手机号时仅Slack记'重复线索',不再发消息。做完检查这些
- 提交缺数字的坏手机号时phone_valid=false,流程走到skipped_invalid_phone分支且不发WhatsApp
- 同一Dedupe Key二次提交时Slack出现重复提示,表格不产生第二行、不发WhatsApp
- Gemini返回的JSON能解析出score、intent、whatsapp_message三字段并回写对应列
- High意向线索触发Slack销售提醒,Low/Spam线索回写disqualified且无任何外发
- WhatsApp Sent=yes的行再次进入流程时不会被重复触达
容易卡住的地方
- Google Sheets列名必须与工作流映射逐字一致(含大小写和空格),否则回写失败
- WhatsApp Business Cloud向新号码首发通常需预审批的消息模板,自由文本可能发不出去,需在Meta后台核对
- Cal.com的预填参数名以你自己事件类型支持的为准,别照抄本站示例参数
- Gemini凭据的模型名作者未写明,需在你的Google Cloud项目确认可用模型
- 去重键若只用手机号,换邮箱重咨的同一客户会漏判,建议邮箱+手机组合并定期清理
本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。
- 原文标题
- Qualify roofing leads and send WhatsApp icebreakers with Gemini and Sheets
- 原作者
- iamvaar
- 原始发布日期
- 2026-09-08T09:47:17.887Z
- 来源
- https://n8n.io/workflows/19381