用 Webhook 从任何系统发送 WhatsApp 消息
您的店铺、CRM 或预约工具早就知道何时有新订单、何时付款失败、何时有客户预约。Webhook 可以把每一个这样的事件变成一条 WhatsApp 消息,您这边无需写代码。本文介绍如何规划、保护和测试。
MonoChat 团队 更新于: 2 分钟阅读
本页内容
要在其他系统中发生某件事时发送 WhatsApp 消息,就把该系统的 Webhook 指向一个接收方:它按电话号码找到客户,并发送一条已审核的 WhatsApp 模板。您的店铺、CRM 或预约工具本来就会为订单、付款和预约发出 Webhook;真正的工作在于选出值得发消息的事件、撰写模板、保护 URL,并在客户看到任何内容之前用真实请求完成测试。
本文介绍整体规划、影响规划的 WhatsApp 规则,以及如何在 MonoChat 中用一个从自己的 Webhook URL 启动的工作流来实现。
Webhook 是什么,不是什么
Webhook 是一个系统在事件发生时,向您提供的 URL 发送的 HTTP 请求。Shopify 可以在订单创建时发送,WooCommerce 可以在订单更新时发送,CRM 可以在商机阶段变化时发送,预约工具可以在有人预约时发送。请求中带有事件的详细信息,通常是 JSON 格式:订单号、金额、客户姓名,以及对 WhatsApp 来说最重要的电话号码。
Webhook 本身不会给客户发送任何内容。必须有某个东西接收请求、决定如何处理,并调用 WhatsApp Business API。这个“东西”要么是您自己编写和部署的代码,要么是一个自动化平台:它给您一个 Webhook URL,让您无需代码就能搭建其余部分。
哪些事件值得发一条 WhatsApp 消息
并非每个事件都值得发消息。一个订单收到五条通知的客户,会开始忽略所有通知。请选择客户真正在等待的时刻:
| 事件 | 消息 | 模板类别 |
|---|---|---|
| 订单已创建或已付款 | 带订单号和后续步骤的确认 | 功能类 |
| 付款失败或待付款 | 一句简短提醒和重新付款的方式 | 功能类 |
| 订单已发货 | 承运商和物流跟踪链接 | 功能类 |
| 货到付款订单已创建 | 一个问题:确认订单、修改地址或取消 | 功能类 |
| 预约已创建、已变更或明天到期 | 日期、时间、地点和改约方式 | 功能类 |
| CRM 中商机赢单或丢单 | 交接给客户经理,或一个反馈问题 | 视内容为功能类或营销类 |
| 购物车被遗弃 | 一条提醒,可能附带优惠 | 营销类 |
Meta 根据模板的内容判定类别,而不是根据您选择的标签。关于某个具体订单、付款或预约的消息属于功能类;凡是推广、提供优惠或试图说服的内容都属于营销类,并且需要涵盖营销的用户授权。我们的 WhatsApp 模板示例 提供了上述功能类场景的文案。
适用的 WhatsApp 规则
大多数 Webhook 消息需要模板
客户给您发消息或打电话时,客户服务窗口就会开启,并从其最后一条消息起持续 24 小时。窗口内您可以自由回复;窗口外只能发送预先审核通过的消息模板。店铺和 CRM 事件很少发生在这个窗口内,所以请把每条 Webhook 消息都按模板来规划,并在启用任何功能之前先提交模板审核。
电话号码必须可用
Webhook 中必须带有 WhatsApp 能够触达的电话号码:国际格式,带国家代码。很多店铺允许客户随意填写号码,所以请抽查几笔真实订单。号码缺少国家代码,是测试正常、上线后却不行的最常见原因。
2026 年 10 月 1 日计费规则变化
Meta 自 2025 年 7 月 1 日起按每条送达的消息收费。自 2026 年 10 月 1 日起,在开启的客户服务窗口内发送的功能类模板在免费一段时间后重新开始收费,同时每个企业电话号码每月有 1,000 条服务消息的免费额度。费率取决于类别和客户所在国家。实际意味着:无论客户最近是否给您发过消息,一条订单确认都要花钱,所以只发重要的消息,不重要的就省掉。WhatsApp API 价格指南详细解释了费率表。
保护 Webhook URL
任何知道 Webhook URL 的人都可以调用它。如果这个 URL 会发送 WhatsApp 消息,一旦泄露,别人就能以您的名义给您的客户发消息,或者推高您的账单。三个习惯可以避免这种情况:
- 要求密钥。 发送方系统把密钥放进请求头,或用它对请求体签名(HMAC-SHA256),让接收方可以核实请求在传输途中没有被篡改。没有有效密钥或签名的请求会被拒绝。
- 一个用途一个 URL。 订单工作流和预约工作流应使用不同的 URL 和密钥,这样您更换其中一个时不会影响另一个。
- 留意发送方的失败记录。 WooCommerce 在连续超过五次投递失败后会停用 Webhook,Shopify 会删除目标地址反复返回非 200 响应的 Webhook 订阅。接收方一旦关闭或配置错误,您的通知可能会悄无声息地停止。
在 Shopify 和 WooCommerce 中在哪里创建 Webhook
- Shopify: Settings › Notifications › Webhooks,然后点击 Create webhook。选择一个事件(Order creation、Order payment、Fulfillment creation 等),格式选 JSON,并填写一个
https://URL。Webhook 创建后事件不能更改,所以每个事件建一个 Webhook。Send test 可以检查请求是否到达 URL。 - WooCommerce: WooCommerce › Settings › Advanced › Webhooks,然后点击 Add webhook。选择一个主题(订单、客户、优惠券或商品事件),填写投递 URL 和密钥;WooCommerce 会在请求头中加入用该密钥生成的 payload 哈希。
- CRM 或预约工具: 查找“webhooks”“automations”或“outgoing integrations”。如果它只提供固定格式,请在搭建之前先确认客户电话号码在哪个字段里。
上线前用真实请求测试
Webhook 的 payload 很长,而且每个平台的字段命名都不一样:电话号码可能在 phone、billing.phone 或 customer.default_address.phone 中。不要猜。发送一个真实的测试请求,查看收到的内容,再据此映射字段。然后测试这些边界情况:
- 没有电话号码的订单,或号码缺少国家代码的订单;
- 同一事件被投递两次,平台重试时会出现这种情况;
- 凌晨 3 点下的订单,如果您希望消息等到早上再发;
- 回复通知的客户,确保有人工或 AI 助手随时可以接待。
如何在 MonoChat 中实现
MonoChat 是官方 Meta Business Partner。自 3.8.37 版本(2026 年 10 月)起,工作流可以由 Webhook 启动,您的店铺或 CRM 无需您这边写代码就能触发 WhatsApp 消息。
1. 用“收到 Webhook”节点启动工作流。 从事件节点中添加它。它有自己的 Webhook URL 和密钥。选择渠道(例如您的 WhatsApp 号码)和 身份路径,即客户电话号码在请求中的位置(默认是 request.body.phone)。MonoChat 会在该渠道中找到客户,找不到则创建,然后为该客户运行工作流。工作流进入队列后,节点会向发送方返回 202;找不到渠道或电话号码时,则返回明确的错误。
2. 开启“需要密钥”。 发送方可以把密钥放在令牌请求头中(默认是 Authorization,单独填写或写成 Bearer <secret>),也可以在签名请求头中(默认是 X-Signature)发送原始请求体的 HMAC-SHA256 签名。两个请求头的名称都可以修改,以匹配发送方系统。
3. 捕获一个真实请求。 在 Webhook URL 末尾加上 /test,并把店铺的测试 Webhook 指向它。只要节点设置处于打开状态,请求就会连同 body、query 和请求头一起显示在 已收到的请求 下,而不会启动工作流。用它找到您需要的路径,再保存为工作流变量,例如把 request.body.orderId 保存为 orderId。
4. 发送消息。 添加一个 发送模板消息 节点,选择已审核的模板,并用工作流变量填写模板变量:订单号、金额、物流跟踪链接。用条件为不同的状态发送不同的模板。
5. 需要时回调。 HTTP 请求 节点可以到您自己的系统中查询更多数据,或把客户的回答写回去,例如为货到付款订单写入“已确认”。调用成功时沿 输出 继续,失败时沿 失败时 继续,这样您可以发送备用消息,或把会话分配给人工。
客户回复后,会话会进入同一个 MonoChat 团队收件箱,与您其他的 WhatsApp、Instagram 和 Messenger 聊天放在一起,由您的团队或 AI 助手接手。如需搭建工作流,请查看 工作流自动化。
根据由谁来做,还有两种方式:
- 您的开发人员已经在调用 API。 WhatsApp Template API 应用只需一次 API 调用即可发送已审核的模板,回复会进入收件箱。
- 您在用 Shopify,并希望在聊天中看到订单数据。 Shopify 聊天自动化 会同步商品和订单,让团队和 AI 助手能回答订单问题。
开始使用:在 app.monochat.ai 免费注册账户,连接您的 WhatsApp 号码,并在 价格页面 比较各套餐。
来源
用 MonoChat 付诸实践