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 hours

Document 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

  • utility templates (statements, order updates) review faster and cost less than marketing — 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.