waba-template-author
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
Chinese<!--
Verified against Sent sources:
- https://docs.sent.dm/docs/docs/03-quickstart/first-template
- https://docs.sent.dm/start/quickstart/first-message
- https://docs.sent.dm/reference/api
- Sent v3 OpenAPI: POST /v3/templates, GET /v3/templates, GET /v3/templates/{id}, PUT /v3/templates/{id}, DELETE /v3/templates/{id}, POST /v3/messages
Review notes:
- Sent docs define templates across SMS, WhatsApp, and RCS, and state that WhatsApp templates require Meta approval.
- Sent's surfaced template statuses are `APPROVED`, `PENDING`, `REJECTED` (snapshot Template Models section).
- Sent's three template categories are `UTILITY`, `MARKETING`, `AUTHENTICATION` — no others.
- Treat WhatsApp category rules, rejection reasons, the Meta-only `PAUSED` state, and Cloud API payloads as Meta-side policy/context. Sent does not surface `PAUSED`.
-->
<!--
已对照Sent来源验证:
- https://docs.sent.dm/docs/docs/03-quickstart/first-template
- https://docs.sent.dm/start/quickstart/first-message
- https://docs.sent.dm/reference/api
- Sent v3 OpenAPI: POST /v3/templates, GET /v3/templates, GET /v3/templates/{id}, PUT /v3/templates/{id}, DELETE /v3/templates/{id}, POST /v3/messages
审核说明:
- Sent文档定义了适用于SMS、WhatsApp和RCS的模板,并指出WhatsApp模板需要Meta审核。
- Sent显示的模板状态为`APPROVED`、`PENDING`、`REJECTED`(参考模板模型章节快照)。
- Sent的三类模板为`UTILITY`、`MARKETING`、`AUTHENTICATION`——无其他类别。
- 将WhatsApp类别规则、拒绝原因、Meta专属的`PAUSED`状态以及Cloud API负载视为Meta端的政策/上下文。Sent不会显示`PAUSED`状态。
-->
WABA template author
WABA模板编写工具
Overview
概述
Use this skill to write WhatsApp template content that can be represented as a Sent template, submitted for WhatsApp review where required, and later sent through with . The skill’s job is not just to produce polished copy; it must choose the right category, structure components correctly, provide realistic sample values, and flag review risks before submission.
POST /v3/messagestemplate.idSent stores templates as reusable message blueprints across SMS, WhatsApp, and RCS. WhatsApp review and category enforcement come from Meta, but the Sent-facing workflow uses Sent’s endpoints and Sent template statuses.
/v3/templates使用此技能编写可转换为Sent模板的WhatsApp模板内容,在需要时提交WhatsApp审核,之后可通过接口并携带发送消息。本技能的职责不仅是生成打磨后的文案,还必须选择正确的类别、合理构建组件、提供真实的示例值,并在提交前标记审核风险。
POST /v3/messagestemplate.idSent将模板存储为可在SMS、WhatsApp和RCS间复用的消息蓝图。WhatsApp的审核和类别规则由Meta制定,但面向Sent的工作流需使用Sent的端点和Sent模板状态。
/v3/templatesWhen to use
使用场景
Use this skill when the user asks for WhatsApp template copy, WABA template creation, utility/marketing/authentication classification, template rejection fixes, variable samples, buttons, headers, template categories, Meta approval risk, or a Sent template payload for WhatsApp.
Do not use this skill to design the whole template-management UI; use . Do not use it to connect a WABA or phone number; use . Do not use it to register SMS compliance; use .
template-builder-uiwaba-embedded-signupsms-10dlc-registration当用户请求WhatsApp模板文案、WABA模板创建、实用类/营销类/认证类分类、模板拒签修复、变量示例、按钮、标题、模板类别、Meta审核风险,或用于WhatsApp的Sent模板负载时,使用此技能。
请勿使用此技能设计完整的模板管理UI;如需此功能,请使用。请勿使用此技能连接WABA或电话号码;如需此功能,请使用。请勿使用此技能注册SMS合规性;如需此功能,请使用。
template-builder-uiwaba-embedded-signupsms-10dlc-registrationCategory decision
类别判定
Pick the narrowest truthful WhatsApp category. Do not force promotional content into utility. The category should match the recipient’s expectation, the opt-in context, and the actual copy.
| Category | Use when | Avoid when |
|---|---|---|
| Utility | The message is tied to an existing transaction, account, order, appointment, or service request. | The copy includes upsell, acquisition, abandoned cart, discount, or broad engagement language. |
| Marketing | The message promotes, re-engages, cross-sells, announces offers, or encourages optional action not tied to an existing transaction. | The message is purely required service/account information. |
| Authentication | The message delivers one-time passcodes or verification flows. | The message includes non-authentication content or marketing. |
Example. “Your order 1234 shipped and arrives tomorrow” is utility. “Your order shipped — add accessories for 20% off” is marketing risk because it adds promotional content.
选择最精准且符合实际的WhatsApp类别。请勿将推广内容强行归入实用类。类别应与收件人的预期、选择加入的场景以及实际文案相符。
| 类别 | 使用场景 | 避免场景 |
|---|---|---|
| Utility(实用类) | 消息与现有交易、账户、订单、预约或服务请求相关。 | 文案包含追加销售、获客、购物车遗弃提醒、折扣或广泛互动类语言。 |
| Marketing(营销类) | 消息用于推广、重新触达、交叉销售、发布优惠或鼓励与现有交易无关的可选操作。 | 消息仅包含必需的服务/账户信息。 |
| Authentication(认证类) | 消息用于发送一次性验证码或验证流程。 | 消息包含非认证内容或营销信息。 |
示例:“您的订单1234已发货,预计明日送达”属于实用类。“您的订单已发货——添加配件可享20%折扣”存在营销类风险,因为添加了推广内容。
Process
流程
1. Capture the business intent
1. 捕捉业务意图
Ask what event triggers the template, who receives it, what action the recipient should take, and whether the message contains any promotion. Write those answers before drafting copy.
A strong intent statement is specific: “Send a delivery reschedule link after a courier misses the first attempt.” A weak one says: “Notify users about updates.”
询问触发模板的事件、收件人是谁、收件人应采取的操作,以及消息是否包含推广内容。在起草文案前记录这些答案。
清晰的意图表述应具体:“快递首次派送失败后,发送配送改期链接。”模糊的表述如:“通知用户有关更新。”
2. Choose the category before writing copy
2. 起草文案前先选择类别
Drafting before category selection often creates copy that fails review. Choose utility, marketing, or authentication first, then write within that boundary.
If the user wants utility but includes promotional language, explain the conflict and offer two options: remove promotion and keep utility, or keep promotion and classify as marketing.
先起草文案再选择类别往往会导致文案无法通过审核。先选择实用类、营销类或认证类,再在该类别范围内撰写文案。
如果用户想要实用类模板但包含推广语言,需说明冲突并提供两个选项:移除推广内容并保留实用类,或保留推广内容并归类为营销类。
3. Draft the component structure
3. 构建组件结构
Represent the template in Sent-compatible component language: header, body, footer, buttons, variables, and samples. Keep the component set as simple as the use case allows.
| Component | Guidance |
|---|---|
| Header | Use only when it clarifies identity or context. Avoid promotional headers for utility templates. |
| Body | Put the required message and variables here. Keep the first sentence clear without needing the button. |
| Footer | Use for low-emphasis context such as opt-out or support where appropriate. |
| Buttons | Use quick replies or call-to-action buttons only when they directly support the message intent. |
| Variables | Use stable names and provide realistic samples for every variable. |
用兼容Sent的组件语言表示模板:标题、正文、页脚、按钮、变量和示例。组件集合应尽可能贴合使用场景,保持简洁。
| 组件 | 指导原则 |
|---|---|
| 标题 | 仅在明确身份或上下文时使用。实用类模板避免使用推广性标题。 |
| 正文 | 放置必需消息和变量。第一句应清晰易懂,无需依赖按钮。 |
| 页脚 | 用于低优先级上下文,如适当情况下的退订或支持信息。 |
| 按钮 | 仅在直接支持消息意图时使用快速回复或号召性按钮。 |
| 变量 | 使用稳定名称,并为每个变量提供真实示例。 |
4. Write with review risk in mind
4. 撰写时考虑审核风险
Use concise, literal copy. Avoid vague urgency, misleading scarcity, or mixed intents. Do not include sensitive data unless the use case requires it and the customer confirms it is acceptable.
Utility example.
text
Name: order_shipped_update
Category: Utility
Language: en_US
Body: Hi {{first_name}}, your {{brand_name}} order {{order_id}} has shipped and is expected on {{delivery_date}}. Track it here: {{tracking_url}}.
Samples:
first_name: Alex
brand_name: Acme
order_id: A12345
delivery_date: May 22
tracking_url: https://acme.example/t/A12345
Button: Track order -> {{tracking_url}}Marketing example.
text
Name: spring_sale_announcement
Category: Marketing
Language: en_US
Body: Hi {{first_name}}, {{brand_name}} spring deals are live. Use code {{promo_code}} by {{end_date}} to save on selected items.
Samples:
first_name: Alex
brand_name: Acme
promo_code: SPRING20
end_date: May 31
Button: Shop now -> https://acme.example/sale使用简洁、直白的文案。避免模糊的紧迫感、误导性稀缺性或混合意图。除非使用场景需要且客户确认可接受,否则请勿包含敏感数据。
实用类示例
text
Name: order_shipped_update
Category: Utility
Language: en_US
Body: Hi {{first_name}}, your {{brand_name}} order {{order_id}} has shipped and is expected on {{delivery_date}}. Track it here: {{tracking_url}}.
Samples:
first_name: Alex
brand_name: Acme
order_id: A12345
delivery_date: May 22
tracking_url: https://acme.example/t/A12345
Button: Track order -> {{tracking_url}}营销类示例
text
Name: spring_sale_announcement
Category: Marketing
Language: en_US
Body: Hi {{first_name}}, {{brand_name}} spring deals are live. Use code {{promo_code}} by {{end_date}} to save on selected items.
Samples:
first_name: Alex
brand_name: Acme
promo_code: SPRING20
end_date: May 31
Button: Shop now -> https://acme.example/sale5. Convert the draft into a Sent template operation
5. 将草稿转换为Sent模板操作
Use Sent’s template API for creation and lifecycle management. The verified operations are:
| Operation | Endpoint | Use |
|---|---|---|
| Create template | | Save a draft or submit a new template. |
| List templates | | Find templates by search, status, or category. |
| Retrieve template | | Inspect status and definition. |
| Update template | | Revise name, category, language, definition, or submit for review. |
| Delete template | | Delete the Sent template, optionally deleting from Meta where supported. |
Use Sent’s documented template statuses in user-facing instructions: , , (per the Sent docs snapshot, Template Models section). Sent does not surface — that is Meta-side only. If Meta returns additional statuses for a WhatsApp account, quote them as Meta-side evidence rather than Sent-surfaced statuses.
PENDINGAPPROVEDREJECTEDPAUSED使用Sent的模板API进行创建和生命周期管理。已验证的操作如下:
| 操作 | 端点 | 用途 |
|---|---|---|
| 创建模板 | | 保存草稿或提交新模板。 |
| 列出模板 | | 按搜索关键词、状态或类别查找模板。 |
| 获取模板 | | 查看状态和定义。 |
| 更新模板 | | 修改名称、类别、语言、定义,或提交审核。 |
| 删除模板 | | 删除Sent模板,可选在支持的情况下同步从Meta删除。 |
在面向用户的说明中使用Sent文档规定的模板状态:、、(参考Sent文档快照的模板模型章节)。Sent不会显示状态——这是Meta端专属状态。如果Meta为WhatsApp账户返回其他状态,请将其作为Meta端证据引用,而非Sent显示的状态。
PENDINGAPPROVEDREJECTEDPAUSED6. Add variable samples before submission
6. 提交前添加变量示例
Every placeholder needs a realistic sample. Samples should look like production data and should not add claims that the body does not support.
Bad sample pattern. Body says “Your appointment is confirmed,” but sample data includes “50% off visit.” This can create category confusion.
Good sample pattern. Body and sample values all support the same transactional use case.
每个占位符都需要真实的示例。示例应与生产数据类似,且不得添加正文未提及的声明。
错误示例模式:正文写“您的预约已确认”,但示例数据包含“就诊享50%折扣”。这会导致类别混淆。
正确示例模式:正文和示例值均支持同一交易场景。
7. Revise rejected templates from the reason, not from guesses
7. 根据拒签原因修订模板,而非猜测
If a template is rejected, retrieve the Sent template detail/status and any available rejection reason. Then change only what the reason justifies. Category mismatch, missing samples, unsupported components, and promotional language in utility templates require different fixes.
| Rejection symptom | Likely correction |
|---|---|
| Category mismatch | Change category or remove conflicting copy. |
| Missing/weak samples | Add realistic variable samples. |
| Unsupported component | Simplify header/buttons or split channel variants. |
| Policy concern | Remove misleading, sensitive, or prohibited content. |
| Language mismatch | Correct language code and localized text. |
如果模板被拒,获取Sent模板详情/状态及所有可用拒签原因。仅修改原因指出的内容。类别不匹配、缺少示例、组件不支持、实用类模板含推广语言等情况需要不同的修复方式。
| 拒签表现 | 可能的修正方式 |
|---|---|
| 类别不匹配 | 修改类别或移除冲突文案。 |
| 示例缺失/无效 | 添加真实的变量示例。 |
| 组件不支持 | 简化标题/按钮,或拆分渠道变体。 |
| 政策问题 | 移除误导性、敏感或违禁内容。 |
| 语言不匹配 | 修正语言代码和本地化文本。 |
8. Confirm sendability after approval
8. 审核通过后确认可发送性
After approval, confirm the template can be used with the intended Sender Profile/channel and sent through with . If delivery later fails, hand off to rather than rewriting approved copy blindly.
POST /v3/messagestemplate.idmessaging-performance-analyzer审核通过后,确认模板可用于目标Sender Profile/渠道,并可通过接口携带发送。若后续投递失败,请转交处理,而非盲目重写已通过审核的文案。
POST /v3/messagestemplate.idmessaging-performance-analyzerCommon rationalizations to avoid
需避免的常见误区
Do not call a template utility if it includes discounts, upsells, abandoned-cart messaging, or broad engagement language.
Do not omit sample values because the placeholders are obvious. Review and test flows need rendered examples.
Do not treat Meta Cloud API payload examples as the Sent API contract. Use Sent for Sent integrations.
/v3/templatesDo not introduce as a Sent template status. Sent surfaces only , , and — PAUSED is Meta-side and is not reflected in the Sent template status. When Meta pauses, the Sent status stays as it was, and individual sends start failing instead — diagnose via .
PAUSEDAPPROVEDPENDINGREJECTEDmessaging-performance-analyzerDo not rewrite a rejected template without reading the actual rejection reason when available.
请勿将包含折扣、追加销售、购物车遗弃提醒或广泛互动语言的模板归类为实用类。
请勿因占位符看似明确而省略示例值。审核和测试流程需要渲染后的示例。
请勿将Meta Cloud API负载示例视为Sent API约定。Sent集成请使用Sent 接口。
/v3/templates请勿将作为Sent模板状态。Sent仅显示、和——PAUSED是Meta端状态,不会反映在Sent模板状态中。当Meta暂停模板时,Sent状态保持不变,仅单个发送请求开始失败——需通过诊断。
PAUSEDAPPROVEDPENDINGREJECTEDmessaging-performance-analyzer请勿在未查看实际拒签原因(如有)的情况下重写被拒模板。
Verification checklist
验证清单
- The trigger event, audience, recipient action, and promotional content are documented.
- Category is chosen before copy is drafted.
- The body is clear without relying on a button.
- Every variable has a realistic sample value.
- Component choices match the selected channel and use case.
- Sent template API endpoints are used for create/list/get/update/delete.
- Status handling uses only Sent's surfaced set — ,
APPROVED,PENDING(noREJECTED).PAUSED - Rejection fixes map to observed reasons, not generic rewrites.
- Approved templates are tested through Sent sending with before broad rollout.
template.id
- 已记录触发事件、受众、收件人操作和推广内容。
- 起草文案前已选择类别。
- 正文无需依赖按钮即可清晰传达信息。
- 每个变量都有真实的示例值。
- 组件选择符合所选渠道和使用场景。
- 使用Sent模板API端点进行创建/列出/获取/更新/删除操作。
- 状态处理仅使用Sent显示的状态集——、
APPROVED、PENDING(无REJECTED)。PAUSED - 拒签修复对应已观察到的原因,而非通用重写。
- 已通过Sent发送测试已审核模板,再进行大规模推广。
template.id
Related skills
相关技能
Use when the task is UI design, component validation, JSON editor behavior, or template-management product specs.
template-builder-uiUse when the WhatsApp sender/WABA/phone number is not connected to Sent yet.
waba-embedded-signupUse when the template belongs to a specific tenant, brand, department, or profile boundary.
sender-profile-architectUse when WhatsApp copy will be mirrored to SMS and must align with US A2P use-case registration.
sms-10dlc-registrationUse when approved WhatsApp templates have poor delivery, read, or webhook outcomes.
messaging-performance-analyzerUse the skill for shared Sent terminology and routing.
sent当任务涉及UI设计、组件验证、JSON编辑器行为或模板管理产品规格时,请使用。
template-builder-ui当WhatsApp发送方/WABA/电话号码尚未连接到Sent时,请使用。
waba-embedded-signup当模板属于特定租户、品牌、部门或配置文件边界时,请使用。
sender-profile-architect当WhatsApp文案将同步到SMS且需符合美国A2P使用场景注册要求时,请使用。
sms-10dlc-registration当已审核的WhatsApp模板投递、阅读或Webhook结果不佳时,请使用。
messaging-performance-analyzer共享Sent术语和路由请使用技能。
sentBundled references and scripts
捆绑参考资料和脚本
| File | Type | Purpose |
|---|---|---|
| Policy lookup table | Meta category boundaries, component rules, and Cloud API submission shape. |
| Worked examples | Copy-pasteable payloads for utility, marketing, and authentication templates. |
| Decision matrix | Map rejection reasons to precise edits and resubmission etiquette. |
| Validation script | Stdlib lint for a template JSON payload (placeholder numbering, samples, category-risk phrases, button structure, language code). Run from the skill root: |
| Fixture | Passing fixture for the linter. |
| Fixture | Failing fixture (wrong placeholder order, promo phrasing in utility). |
| 文件 | 类型 | 用途 |
|---|---|---|
| 政策对照表 | Meta类别边界、组件规则和Cloud API提交格式。 |
| 实操示例 | 可直接复制的实用类、营销类和认证类模板负载。 |
| 决策矩阵 | 将拒签原因映射到精准修改和重新提交规范。 |
| 验证脚本 | 对模板JSON负载进行标准库检查(占位符编号、示例、类别风险短语、按钮结构、语言代码)。从技能根目录运行: |
| 测试用例 | 通过检查的测试用例。 |
| 测试用例 | 未通过检查的测试用例(占位符顺序错误、实用类含推广语)。 |
Unverified claims to confirm or remove
需确认或移除的未验证声明
- Exact category-pricing behavior and Meta rejection-code semantics are external Meta policy context, not Sent API facts.
- Cross-check the Sent template schema against the live OpenAPI at before promoting code to production.
https://docs.sent.dm
- 精确的类别定价行为和Meta拒签代码语义属于Meta外部政策上下文,而非Sent API事实。
- 在将代码推广到生产环境前,请对照上的实时OpenAPI交叉检查Sent模板架构。
https://docs.sent.dm