编写 WhatsApp 模板
在你已连接的 WhatsApp Business Account 上创建模板,即可用你自己的措辞发送消息。本概述介绍草稿、语言、提交和审核。选择一个类别查看其编写指南:
- Authentication:使用 Meta 预设措辞和复制验证码按钮的验证码消息。
- Utility:订单更新、预约提醒和账户通知。
- Marketing:促销消息、carousel 和最高价格。
如需浏览和发送现有模板,请参阅 WhatsApp 模板。
整个流程由三件事决定:
- 模板包含版本,版本包含每种语言的一个条目。 每次发送使用某个版本中一种已批准的语言。
- 内容写入草稿。 一个模板最多有一个打开的草稿,在你提交之前,草稿中的任何内容都不会到达 WhatsApp。
- 审批按语言返回。 同一版本中,一种语言可能获批,而另一种被拒绝。
开始之前
您需要连接一个属于自己的号码,这会为您的工作区提供一个可用于创作的 WhatsApp Business Account。未连接的账户会被拒绝,编辑 Bird 内置的 bird_ 模板也会被拒绝:这些模板存放在 Bird 自己的账户上,请改为将其复制到您的账户。
编写 authentication 模板还需要经过验证的企业;utility 和 marketing 类别则不需要。相关门槛请参阅身份验证模板。
在 Approved templates 页面上、使用 bird CLI 或通过 MCP 服务器创建模板。
在仪表板中
New template 提供两种方式。Start with a template 会打开模板库,这是最快的方式:选择一个内容已接近你需求的模板(包括 Bird 的模板),副本会作为打开的草稿出现在你的账号上。

Start from scratch 会先要求选择类别、名称和默认语言,然后打开编辑器。营销模板还需要选择消息类型。名称会成为 slug。首次提交前,您可以在 Settings 中修改 slug;类别在创建模板时即确定。

编辑器一次编写一种语言。其语言列表显示每种语言的审核状态,手机预览使用示例值渲染你的内容。请按照 authentication、utility 或 marketing 指南了解你所选类别可用的控件。
Save as draft 会保存您的工作,不会联系 WhatsApp。Submit for review 会锁定版本并将其发送给 WhatsApp。
两种起步方式
复制现有模板
复制操作将源模板的内容作为打开的草稿,且不会调用 WhatsApp,因此在你主动选择之前不会提交任何内容。在复制之前,有两点值得了解:
- 类别继承自源模板,且无法更改。 如果你需要不同的类别,请改为从头创建。
- 你只能缩减语言范围,不能增加。 一个包含 70 种语言的目录模板不必变成你的 70 种语言:只选择你实际会维护的子集。请求源模板不包含的语言会被拒绝并返回
E15060,响应中会指明哪些语言不匹配。之后可以向副本添加更多语言。
从头创建
类别在创建时确定;slug 在首次提交后固定。 提交前,您可以在 Settings 中修正 slug。WhatsApp 根据 slug 生成自己的模板名称。如需在提交后更改 slug 或使用其他类别,请创建新模板。bird_ 前缀保留给 Bird 的模板目录。您选择的类别不一定决定发送价格:Meta 会为每种语言分配自己的类别,并可能重新分类,价格以 Meta 的类别为准。
编写各语言内容
每个变量都需要一个示例值。 Meta 审核的是填入这些值后的消息。缺少示例会阻止提交。请自行提供每种语言的措辞和示例;Meta 不会翻译它们。请参阅 Meta 的模板基础知识。
对于 marketing 语言,可在编辑器中或使用 optimization_spec 设置最高价格。marketing 指南介绍价格单位、国家覆盖设置、估算以及每条消息的乘数。
设置 WhatsApp 重试消息的时长。 对于无法投递的消息,WhatsApp 会在该语言的存活时间内重试,之后丢弃该消息。请在 Time to live 中选择时长,或选择默认选项:authentication 为 Default · 10 min,utility 和 marketing 为 Default · 30 days。该时限从我们将消息交给 Meta 后开始计算。通过 API 时,以秒为单位设置 message_send_ttl_seconds,发送 null 可恢复默认值,省略该字段则保留当前值。取值范围取决于类别:
| 类别 | 范围 |
|---|---|
| Authentication | 30 秒至 15 分钟 |
| Utility | 30 秒至 12 小时 |
| Marketing | 12 小时至 14 天 |
仅更改存活时间不需要重新审核。对于 marketing 模板,该设置仅在企业账户已加入 Marketing Messages 时生效。
检查后提交
检查每种语言的内容和变量示例,然后选择 Submit for review,将已保存的草稿提交给 Meta。提交前请修正验证错误。
只有内容与其已批准副本不同的语言才需要内容审核。已匹配的语言会沿用其批准状态。marketing 的价格变更会单独应用。如果内容和定价都没有更改,提交会立即完成,无需轮询。之后不会打开替换草稿:下一轮编辑需要重新创建草稿。
关注审核进度
审批稍后到达,且按语言返回。当任何语言尚未决定时,模板的 pending_version_id 保持已设置状态,每种语言的列表携带各自的结果:
approved可发送。模板上的available_languages正是当前发送可以解析使用的语言列表。rejected或submit_failed需要先处理该语言的错误,然后再重试。如有需要,请在新草稿中更正内容。paused无法发送。请检查内容和受众;Meta 可以恢复临时暂停的模板。你也可以编辑已暂停的语言并重新提交。请参阅 Meta 的模板暂停指南。disabled、limit_exceeded、in_appeal无法编辑。检查该语言的错误,并按照 Meta 在 WhatsApp Manager 中显示的操作指引处理。如果申诉正在等待处理,请查看其状态以了解决定。
模板自身的 status 是一个聚合值:active 表示至少有一种语言可发送,而非全部。
发送你编写的模板
你编写的模板通过与其他模板相同的端点发送,与 Bird 目录的一个区别是:你必须指定 from,且该号码必须属于与模板相同的 WhatsApp Business Account。使用不同账号的发送者会在计费之前被拒绝,返回 422 E15023。
模板可以通过 language_source_required 要求指定接收者语言。否则,on_missing_language 控制解析是直接失败,还是可以使用已批准的基础语言或 default_language。请针对模板已批准的 available_languages 测试配置的策略;未批准的默认语言不可发送。你提供的值必须填充实际解析到的语言的占位符,因此发送前请先读取该语言的内容。完整载荷请参阅发送 WhatsApp 消息。
注意事项
- 发送前请检查当前生效的版本。 版本列表按从新到旧排序,且包含任何打开的草稿,因此最上面一行通常是草稿或仍在审核中的版本。模板将正在使用的版本标记为
live_version_id;没有生效版本的模板完全无法发送。 - 审核中的语言拒绝写入。 WhatsApp 会锁定该语言直到审核完成,因此在
pending期间的编辑会失败而不是排队等待。 - 列表行不包含内容。 列出模板只能找到模板并显示生命周期状态;读取模板的实际内容需要进行版本读取。
- 删除不可恢复。 丢弃一种语言、删除草稿和删除模板都需要显式确认,删除模板会停止该 slug 下的所有发送。
后续步骤
- WhatsApp 模板:目录、类别以及共享的按模板发送契约
- 模板指南:Meta 审核关注的内容
- 发送 WhatsApp 消息:完整的发送载荷
- 模板 API:以编程方式创建模板
- 创建和提交 WhatsApp 模板:一段编写 utility 模板和 marketing carousel 的视频