Skip to main content

Gerenciar Templates

No canal do WhatsApp Oficial, conversas só podem ser iniciadas com um template aprovado pela Meta. Esta página cobre a gestão (criar, listar e acompanhar aprovação); o envio de mensagem a partir de um template aprovado está em Mensagem de Template. As operações usam POST /api/v1/message/SendCommand com content.type: "TEMPLATES", variando o commandType (CREATE ou LIST). Resposta síncrona: { "packageId": "..." }; resultado via webhook.

Criar template

string
required
Nome do template em snake_case (minúsculas, dígitos e underscore), conforme as regras da Meta.
string
required
Locale da Meta (ex.: pt_BR, en_US).
string
required
Categoria da Meta: MARKETING, UTILITY ou AUTHENTICATION.
string
required
Estrutura dos componentes do template como string JSON (o array de componentes serializado). A MessageFy repassa o conteúdo de forma opaca à Meta, sem interpretar nem validar — monte-o seguindo o formato de componentes da WhatsApp Business Platform.
O campo é componentsJson e o valor é uma string contendo o JSON dos componentes — não um array. Enviar um array diretamente causa erro de desserialização (400).

Regras de estrutura (Meta)

Header com mídia: para format IMAGE, VIDEO ou DOCUMENT, informe a mídia em example.header_handle — URL pública http(s) ou data URI base64. Com data URI, a MessageFy sobe o arquivo para o storage e o substitui pela URL pública antes de enviar à Meta.

Webhook de resposta

Guarde o template.id — é o templateId usado no envio.

Acompanhar a aprovação (TEMPLATE_STATUS)

A decisão da Meta chega de forma espontânea (pode levar horas ou dias) pelo evento TEMPLATE_STATUS:
TEMPLATE_STATUS é um evento da conta, não de um número: a mesma WABA pode ter vários canais. Ele é entregue no canal de feedback do Router e não carrega correlationId/originPackageId — correlacione pelo templateId. O conjunto de status é governado pela Meta: compare por igualdade e trate valores desconhecidos como um estado novo, não como erro.

Listar templates

Webhook:
Campos de cada template: id, whatsAppNumberId, name, language, category, components (string JSON, como devolvida pelo provedor), status, rejectionReason, wabaId, wabaTemplateId, createdAt, updatedAt.
O LIST devolve todos os templates do business (todos os números da WABA), não apenas os do número deste canal — o canal do pacote define de qual business vêm as credenciais. Filtre do seu lado se precisar. Não há filtro por número.
Para buscar um template, informe templateId no LIST:
Id inexistente não é erro: a resposta vem com success: true, lista vazia e count: 0.

Motivos comuns de rejeição

A Meta rejeita templates por, entre outros: formatação inválida (INVALID_FORMAT), conteúdo que viola as políticas do WhatsApp, categoria incorreta para o conteúdo, variáveis sem exemplo, uso de conteúdo promocional em categoria UTILITY/AUTHENTICATION, links encurtados/suspeitos e nomes de template enganosos. Corrija e crie um novo template (não é possível editar um rejeitado).