Antes de começar
- Uma chave de API com permissão
TEMPLATES_WRITE. - Conta ativa. Com a conta ainda em ativação, criar e listar templates responde
403 ACCOUNT_NOT_ACTIVATED.
Onde criar
Criar um template pela API
201 Created, com o template e o status atual no provedor (providerStatus). Todos os campos, respostas e erros estão em API: Templates.
Para criar a partir da biblioteca da Meta:
As 3 categorias e quando usar cada
UTILITY
Notificação sobre algo que o cliente espera: pedido confirmado, entrega, lembrete de consulta, status de pagamento.
MARKETING
Promoção, oferta, lançamento, reengajamento, recuperação de carrinho. O cliente precisa ter consentido em receber marketing.
AUTHENTICATION
Só códigos de verificação (OTP/2FA), no formato restrito que a Meta define para essa categoria.
Variáveis
Cada{{n}} é uma variável posicional, preenchida no envio pelo array templateVariables, na ordem das variáveis:
- O corpo não pode começar nem terminar com variável. Coloque texto antes do primeiro
{{e depois do último}}. - Cada variável precisa de um exemplo em
samples, que o revisor da Meta vê. - A variável que preenche a URL de um botão não pode ter exemplo com espaço.
- Evite variáveis coladas:
{{1}} {{2}}em sequência tende a ser reprovado. - Use variável só para o que muda (nome, valor, data) e mantenha texto fixo suficiente para o template fazer sentido sozinho.
- Mande exemplos realistas.
{{1}} {{2}} {{3}}
Exemplo bom: Olá {{1}}, seu pedido {{2}} foi confirmado. Previsão de entrega: {{3}}.
No envio, a quantidade de valores precisa bater com a do template. Se não bater, a API responde 422 TEMPLATE_VARIABLES_MISMATCH.
Header de mídia
O template pode ter imagem, vídeo ou documento como header (headerType + header com a URL). Formatos e tamanhos aceitos são definidos pela Meta; confira a documentação da Meta antes de subir mídia pesada.
No envio, a URL pública da mídia vai como primeiro elemento do array templateVariables, antes das variáveis do corpo:
mediaUrl no envio está descontinuado. Use a primeira posição de templateVariables. Ver Mensagens.
Botões
Limites aplicados na criação: até 10 botões no total, até 2 de link (
URL ou SMART_LINK), até 1 PHONE_NUMBER e texto de botão com até 20 caracteres.
Carrossel
De 2 a 10 cards, cada um com mídia e texto e até 2 botões, com os mesmos tipos de botão em todos os cards.O que a Arara valida antes de submeter
EmPOST /v1/templates, a API recusa a criação quando:
Além disso, a Arara faz uma moderação de conteúdo em templates
MARKETING e UTILITY e recusa textos com discurso de ódio, ameaça, conteúdo sexual explícito e frases típicas de golpe (como “lucro garantido” ou “você foi sorteado”).
A Arara não bloqueia por caixa alta, emoji ou link encurtado. Essas regras são da política de conteúdo da Meta: quem decide é a Meta, e a Arara reflete a decisão no status do template.
O que costuma reprovar
Template de autenticação (código de verificação)
A categoriaAUTHENTICATION é a mais restrita do WhatsApp. A Arara monta o template no formato fixo que a Meta exige: corpo padrão com o código e botão Copiar código. Não dá para escrever um corpo próprio nessa categoria.
Quem pode criar
A Meta só libera a criação de templates de autenticação quando a conta cumpre os três requisitos:
Número novo ou que ainda está no limite de 250 não consegue criar template de autenticação, mesmo com a empresa verificada. Templates
UTILITY e MARKETING continuam funcionando normalmente.
Erro “does not have permission to create message template”
Quando algum requisito não é cumprido, o template de autenticação volta com statusFAILED e o motivo:
- Verificar a empresa na Meta, se ainda não estiver verificada.
- Enviar conversas de boa qualidade com templates
UTILITYouMARKETINGaté o número chegar ao limite de 2.000. A Meta sobe o limite sozinha conforme o uso. - Criar o template de autenticação de novo. A Meta libera a categoria automaticamente quando os requisitos são cumpridos.
Código de verificação em outra categoria
A Meta não aceita código de verificação em templateUTILITY ou MARKETING. Esses templates são recusados, em geral com o motivo vazio (rejectionReason: null).
Enviar código enquanto a categoria não é liberada
Use a janela de atendimento: quando o usuário manda uma mensagem para o seu número (por exemplo, por um link “receber meu código”), abre uma janela de 24 horas em que você pode enviar o código como mensagem de texto comum, sem template.Aprovação e status
Quem aprova é a Meta. Templates da biblioteca já nascem aprovados; os demais levam de minutos a algumas horas, e às vezes mais. Não submeta template crítico na véspera de uma campanha. Acompanhe o status de duas formas:- Webhook
template.updated, comstatuserejectionReason. GET /v1/templates/{id}/status, usando oid(UUID) do template.
Enviar com um nome que não existe na organização é recusado com
409 CONFLICT.
Templates pausados
Mesmo aprovado, um template pode ser pausado pela Meta por baixa qualidade, geralmente por bloqueios e denúncias dos destinatários. Quando um envio falha por template pausado, a Arara marca o template comoPAUSED e envia template.updated. A Meta também informa mudanças de qualidade do template, que chegam como template.quality_updated (name, quality).
Use o código TEMPLATE_PAUSED para interromper uma campanha. Para voltar a enviar, revise o conteúdo e a base para quem o template foi enviado, e edite o texto ou crie um template novo. Reenviar o mesmo conteúdo tende a ser pausado de novo.
Para listar os pausados:
Idiomas
Cada template é criado em um idioma (campolanguage, padrão pt_BR). O envio escolhe o template pelo nome, sem parâmetro de idioma. Para falar com o mesmo cliente em mais de um idioma, crie um template por idioma, com nomes diferentes: pedido_confirmado (pt_BR) e pedido_confirmado_en (en_US).
Manutenção e limites
- Listar:
GET /v1/templates(paginado, filtrosnameestatus). - Desempenho:
GET /v1/templates/{id}/analytics. - Remover:
DELETE /v1/templates/{id}. - Nomes: prefira nomes descritivos (
confirmacao_pedido,lembrete_pagamento) atemplate1outeste. - Quantidade: os planos atuais não limitam a quantidade de templates. Contas no plano Free legado têm teto de 3 templates aprovados (pendentes e reprovados não contam) e, no teto, a criação responde
403 PLAN_LIMIT_REACHED.
Próximos passos
API: Templates
Endpoints completos de CRUD.
Webhooks
Receba mudanças de status em tempo real.
Marketing no WhatsApp
Como usar templates em campanha.