Templates and approval
Create WhatsApp templates, get them approved by Meta, and use document headers for per-recipient PDFs.
Submit a template
Outbound WhatsApp messages to customers outside the 24-hour service window must use a template approved by Meta. Blueticked submits templates to Meta on your behalf; you read the review status back from the API.
const template = await bt.templates.create({
name: "statement_ready_v1",
category: "utility",
language: "en_US",
body: "Hi {{1}}, your statement for {{2}} is ready.",
});
console.log(template.status); // "pending" while Meta reviews it (a test key's template is "approved" at once)Document headers (statements)
The API creates templates without a header. A body naming a header field (header_format, header_text or any other) is refused with template_kind_unsupported and nothing is created. Make a template with a DOCUMENT header in the dashboard; once Meta approves it, the API sends it with a document parameter, so each customer receives their own PDF. See Campaigns and statements for the single and bulk paths.
Approval tips
utilitytemplates (statements, order updates) are for transactional messages; Meta rejects promotional wording in them. Keep utility templates strictly transactional.- Number the variables
{{1}},{{2}}and on, in order, with no gaps. Meta also rejects a body that starts or ends with a variable, or puts two side by side. - Rejections include Meta's reason; fix the copy and resubmit under a new name or version suffix.
Status lifecycle
A template you create is pending while Meta reviews it, then approved or rejected. Meta can later set an approved template to paused (for quality) or disabled. Only approved templates can send. There is no template webhook event: read the status with GET /v1/templates/{id}, or list with ?status=.