WhatsApp

Templates Meta

Disponibilize no seu SaaS somente templates aprovados e enviáveis, sem consultar a Graph API em cada tela.

Modelo recomendado

WhatsApp Managercliente cria o template
Metaanalisa e muda o status
HookCloudcache + webhook + rate limit
Seu SaaSseletor de templates

Referências: Templates oficiais · Fetch Message Templates

Listar templates enviáveis

bash
curl --request GET \
  --url 'https://api.hookcloud.app/functions/v1/swift-worker?route=list-partner-meta-templates&instance_id=UUID&status=APPROVED&sendable_only=true&page=1&page_size=50' \
  --header 'apikey: SUA_PUBLISHABLE_KEY' \
  --header 'Authorization: Bearer hc_partner_live_SUA_CHAVE'
Respostajson
{
  "ok": true,
  "source": "hookcloud_cache",
  "meta_waba_id": "WABA_ID",
  "sync": {
    "status": "synced",
    "last_success_at": "2026-07-21T12:00:00Z",
    "next_allowed_at": "2026-07-21T12:05:00Z"
  },
  "items": [
    {
      "template_id": "123456789",
      "template_name": "confirmacao_agendamento",
      "template_language": "pt_BR",
      "template_status": "APPROVED",
      "quality_status": "GREEN",
      "category": "UTILITY",
      "sendable": true,
      "components": [],
      "parameter_schema": {
        "total_parameters": 2,
        "parameters": [
          { "component": "body", "index": 1, "placeholder": "{{1}}", "kind": "text" },
          { "component": "body", "index": 2, "placeholder": "{{2}}", "kind": "text" }
        ]
      }
    }
  ]
}

Como usar parameter_schema

Gere o formulário da campanha a partir dos parâmetros retornados. Valide quantidade, ordem, tipo e mídia antes de enviar.

CampoExemploUso
componentbodyParte do template
index1Ordem posicional
placeholder{{1}}Texto exibido no template
kindtext / image / video / document / button_urlTipo de input
requiredtrueValidação do formulário

Atualização sem excesso de GET

A listagem usa o cache HookCloud. A Graph API é chamada quando a Meta envia uma mudança ou quando um owner/admin solicita refresh.

POST /swift-workerjson
{
  "route": "refresh-partner-meta-templates",
  "instance_id": "UUID_DA_INSTANCIA"
}

Use o sync_job_id e consulte get-partner-meta-template-sync. Não faça polling agressivo.

Regra sendable

CondiçãoResultado
APPROVED ou REINSTATED + qualidade saudávelsendable=true
PENDINGApenas exibir “Em análise”
REJECTEDBloquear seleção e mostrar motivo
PAUSED ou DISABLEDRemover de campanhas
Qualidade RED / FLAGGEDBloquear ou exigir revisão
Partner suspenso ou instância inativaNão enviar

Enviar template

bash
curl --request POST 'https://graph.facebook.com/v25.0/PHONE_NUMBER_ID/messages' \
  --header 'Authorization: Bearer META_ACCESS_TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{
    "messaging_product": "whatsapp",
    "to": "5511999999999",
    "type": "template",
    "template": {
      "name": "confirmacao_agendamento",
      "language": { "code": "pt_BR" },
      "components": [
        {
          "type": "body",
          "parameters": [
            { "type": "text", "text": "Marcos" },
            { "type": "text", "text": "22/07 às 15h" }
          ]
        }
      ]
    }
  }'

Referências: Template de texto · Template com mídia

Webhook de mudança

Ao receber hookcloud.meta.template.updated:

  1. Deduplicate pelo ID do evento.
  2. Atualize status local imediatamente.
  3. Se sendable=false, interrompa novas seleções.
  4. Consulte o catálogo HookCloud para componentes completos.
Esta página ajudou?Use o Partner Portal para suporte e compartilhe o link desta seção.