
N8N unable to create multiple webhooks in Helpscout
快速结论:用户在使用 n8n 创建多个 Helpscout 触发器工作流时,后续工作流无法在 Helpscout 中注册新的 Webhook,所有工作流共享同一个 Webhook 注册条目。排查方向是检查 n8n 节点中 checkExists() 方法的逻辑错误。
问题场景
用户运行 n8n(自托管 Docker 部署,版本 1.82.3),创建多个工作流,每个工作流使用 Helpscout 触发器监听不同事件类型(如新对话创建、对话更新)。第一个工作流正常创建 Webhook,后续工作流虽然保存并显示激活状态,但未在 Helpscout 中生成新的 Webhook 注册条目,所有工作流共用同一个 Webhook URL 和密钥。
报错原文
No error message. The 2nd/3rd/ect. workflows save and look like they are ready to work. It is when I look in Helpscout that I see no additional webhooks created.
原因分析
根本原因来自 n8n Helpscout 触发器中 checkExists() 方法的代码逻辑缺陷。该方法在检查已有 Webhook 时,未正确将 URL 匹配条件与 Webhook ID 赋值关联起来。具体表现为:
- 当遍历 Helpscout API 返回的 Webhook 列表时,即使某个 Webhook 的 URL 与当前节点 URL 不匹配,代码仍会将第一个 Webhook 的 ID 赋值给节点静态数据,并返回
true(认为已存在)。 - 这导致后续工作流无法创建独立的 Webhook 注册,所有工作流均指向同一个 Webhook ID,且在激活时可能覆盖或删除其他工作流的注册。
- 更严重的副作用:该行为可能影响非 n8n 创建的 Webhook(例如手动在 Helpscout 中创建的 Webhook),可能被误删除。
这是一个已确认的代码 bug,社区用户在 GitHub Issue #13957 中提供了详细的代码分析(见评论)。截至 Issue 关闭时,该修复尚未合并(用户反馈:”Fix wasn’t merged”)。
环境排查
- n8n 版本:1.82.3(用户环境)
- 部署方式:Docker(自托管)
- 节点版本:Node.js 20.18.3
- 数据库:Postgres
- 执行模式:scaling(企业版)
- 确认 Helpscout 中 Webhook 注册数量是否始终为 1(无论激活多少个工作流)
- 检查 n8n 工作流触发器的 Webhook URL 和密钥是否一致(可通过 Helpscout 后台对比)
解决步骤
- 手动创建多个 Webhook(临时工作流):如用户 @GreenOakMick 验证,可激活第一个工作流 → 记录其 Secret 和 URL → 激活第二个工作流(会覆盖第一个)→ 在 Helpscout 中手动添加第一个 Webhook 信息(URL 和 Secret)。重复此操作可实现多个 Webhook 共存。
- 代码修复方向(需开发者介入):修改
checkExists()方法,将nodeWebhookData.webhookId = apiWebhook.id和return true语句放入if (apiWebhook.url === nodeWebhookUrl)条件块内。同时考虑 Webhook 名称唯一性(如添加标签区分)以避免覆盖。 - 等待官方修复:关注 n8n 仓库中相关 issue(#13957)或内部工单 GHC-1217 的进展。由于该修复尚未合并,建议在官方发布更新后升级。
注意:步骤 1 为手动维护方式,每次工作流激活/停用后可能需要重新调整 Helpscout 中的 Webhook 配置。
验证方法
在 Helpscout 后台的 Webhook 设置页面,确认存在多个 Webhook 条目(与激活的工作流数量一致),且每个条目对应不同的 n8n 触发器 URL。激活任意工作流后,测试事件(如触发 Helpscout 中的对话创建/更新)是否能正确路由到对应工作流并执行。



