2026-09-29 · 原文发布日
WordPress留言表单自动分类打分并进HubSpot
这套n8n模板接住Contact Form 7的每次提交:Gemini按一句话业务描述把留言分成线索、售后或垃圾并打1到5分,线索写入或更新HubSpot联系人并附上完整留言笔记,售后转去对应Slack频道,垃圾直接拦在CRM外;热门线索在销售频道里带火焰标记和HubSpot链接。模型故障或输出不合规时留言不评分也照样转给销售,保证不丢单。表单字段名、热门分数线都可在设置节点改。
原文要点
Mateusz Skorupa发布的免费n8n模板:Contact Form 7在wpcf7_before_send_mail钩子(已过CF7自带垃圾检查)把字段JSON发给带Header Auth的webhook;Gemini(模板用gemini-3.1-flash-lite)按一句话业务描述把留言分为lead/support/spam并打1-5分与一句摘要,结果受JSON schema校验;线索写入或更新HubSpot联系人并附完整留言笔记,售后进专属Slack频道,垃圾拦截;模型故障或输出不合规时不评分照样转销售不丢单;无邮箱无留言的提交作为配置警告发销售;热门线索(默认≥4分)带:fire:标记和HubSpot链接。
这次做成什么
给WordPress的Contact Form 7接一条n8n流水线:Gemini自动分类打分,线索进HubSpot、售后进Slack、垃圾拦截,且任何故障路径都不丢单。
准备什么
- 装了Contact Form 7的WordPress站点,以及Webhook Actions插件或可改functions.php的权限
- Gemini API key、HubSpot账号(免费CRM即可,私有应用需contacts读写scope)、Slack workspace(chat:write的bot)
- n8n实例及HubSpot App Token、Slack bot token、Gemini三类凭据
具体怎么做
配Settings与webhook鉴权
打开Settings节点:business用一句话描述你的业务(Gemini据此打分),填sales_channel和support_channel两个Slack频道,hot_score默认4;若表单改过字段名,填email_field/name_field/message_field的新名;EU区HubSpot把hubspot_app_url改成https://app-eu1.hubspot.com。然后在New Lead Webhook加Header Auth凭据(如X-Webhook-Token:长随机串)并复制生产URL。
接三方凭据
Gemini Chat Model节点填Gemini key(模板默认gemini-3.1-flash-lite,可按账号实际可用型号调整);HubSpot建私有应用,勾选crm.objects.contacts.read与crm.objects.contacts.write,token配到Save to HubSpot与Add Note;Slack建chat:write的bot并配到Notify Sales/Support,记得在两个频道里/invite你的app,否则报not_in_channel。
WordPress侧挂钩子
用免费Webhook Actions插件:在wpcf7_before_send_mail新建webhook,把args.2.fields.your-name、your-email、your-message映射为同名字段,加args.0.title为form_title、args.2.meta.url为page_url,附上Header Auth头。或在functions.php用下面artifact的PHP片段(本站修正重写版,原文片段有语法残缺需修正后使用)。
激活并实测三类留言
激活工作流后发三条真实感留言:一条明确询价(应进HubSpot并带分数与笔记)、一条售后问题(应进support频道)、一条只写『test』(应判spam停在Ignore Spam)。在执行列表里逐条确认路由,并检查HubSpot联系人是否附了完整留言笔记。
可直接复制的材料
Gemini分类打分提示词
本站独立撰写,对应模板Qualify Lead节点逻辑;{{ }}表达式换成你工作流字段;category取值变更时Route Lead的输出分支要同步改。
你是售前留言分类器。业务描述:{{ $json.business }}
请把下面的表单提交分类为lead(购买意向)、support(售后/使用问题)或spam(推广、无关内容),并打1到5的意向分(5=立即想买),再给一句20字内的中文摘要。
只输出JSON,不要markdown围栏:{"category":"lead|support|spam","score":1,"summary":""}
无法判断时category填lead、score填null。
提交内容:
姓名:{{ $json.name }}
邮箱:{{ $json.email }}
留言:{{ $json.message }}WordPress侧PHP片段(修正版)
原文所附PHP片段headers两行语法残缺无法运行,这是本站按原意修正重写的版本;REPLACE-WITH-YOUR-TOKEN必须与n8n的Header Auth一致,URL换成你的webhook;blocking=false让访客不等n8n。
add_action( 'wpcf7_before_send_mail', function () {
$fields = [ 'your-name', 'your-email', 'your-subject', 'your-message' ];
$payload = [];
foreach ( $fields as $field ) {
$payload[ $field ] = sanitize_textarea_field( wp_unslash( $_POST[ $field ] ?? '' ) );
}
$payload['form_id'] = absint( $_POST['_wpcf7'] ?? 0 );
$payload['page_url'] = get_permalink( absint( $_POST['_wpcf7_container_post'] ?? 0 ) ) ?: '';
$args = [
'headers' => [
'Content-Type' => 'application/json',
'X-Webhook-Token' => 'REPLACE-WITH-YOUR-TOKEN',
],
'body' => wp_json_encode( $payload ),
'blocking' => false,
];
wp_remote_post( 'https://YOUR-N8N/webhook/wordpress-cf7-lead', $args );
} );输入与输出示例
本站虚构演示,分类结果与Slack文案均为示意,并非真实Gemini/HubSpot返回。
输入
表单提交:{"your-name":"王小雅","your-email":"wangxiaoya@example.cn","your-message":"你好,我们健身房想采购30台你们的体测仪,请报批量价并安排演示","form_title":"联系我们","page_url":"https://shop.example.cn/contact"}对应输出
Gemini返回:{"category":"lead","score":5,"summary":"健身房批量采购30台体测仪询价"};HubSpot创建联系人并附完整留言笔记;Slack销售频道收到含:fire:标记、分数5/5与HubSpot记录链接的告警。做完检查这些
- 三条测试留言分别落到HubSpot+销售频道、support频道、Ignore Spam三个出口,路由与分数匹配
- 提交邮箱已在HubSpot存在时走更新分支,旧联系人的历史留言笔记保留且新增本条笔记
- 把Gemini key临时改错模拟模型故障:留言不带分数仍出现在销售频道告警中,流程不中断、不丢单,可在执行列表看到未评分标记
- 只写『test』的提交被判spam后停在Ignore Spam,HubSpot和Slack都查不到这条记录
容易卡住的地方
- Header Auth令牌在WordPress与n8n两侧必须完全一致,不一致时webhook直接401且访客无感知
- Slack应用没被/invite进频道会报not_in_channel,告警静默失败
- Contact Form 7本身不存数据库,webhook没接通前通知邮件是唯一副本,上线前先并行观察几天
- 原文附带的PHP片段有语法残缺不能直接粘贴运行,需用修正版;字段名改了要同步改Settings里的三个字段名配置
本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。
- 原文标题
- Qualify WordPress Contact Form 7 leads with Gemini, HubSpot, and Slack
- 原作者
- Mateusz Skorupa
- 原始发布日期
- 2026-09-29T13:15:40.191Z
- 来源
- https://n8n.io/workflows/20157