Templates and approval
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 and tracks the review status via webhooks.
Submit a template
template.ts
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" — Meta review usually takes minutes to hoursDocument headers (statements)
Add header_format: "document" to create a template that attaches a per-recipient PDF at send time — each customer receives their own file:
statement-template.ts
await bt.templates.create({
name: "monthly_statement_v1",
category: "utility",
language: "en_US",
header_format: "document",
body: "Hi {{1}}, your statement for {{2}} is attached.",
});Sending against a document-header template requires a document parameter; see Campaigns and statements for the single and bulk paths.
Approval tips
utilitytemplates (statements, order updates) review faster and cost less thanmarketing— but Meta rejects promotional wording in them. Keep utility templates strictly transactional.- Every variable
{{n}}must be used in order, with no adjacent variables and none at the very start or end of the body. - Rejections include Meta's reason; fix the copy and resubmit under a new name or version suffix.
Status lifecycle
draft → pending → approved or rejected (and occasionally paused by Meta for quality). Only approved templates can send. Status changes arrive on your webhooks and are visible in the dashboard.