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
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'{
"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.
| Campo | Exemplo | Uso |
|---|---|---|
| component | body | Parte do template |
| index | 1 | Ordem posicional |
| placeholder | {{1}} | Texto exibido no template |
| kind | text / image / video / document / button_url | Tipo de input |
| required | true | Validaçã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.
{
"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ção | Resultado |
|---|---|
| APPROVED ou REINSTATED + qualidade saudável | sendable=true |
| PENDING | Apenas exibir “Em análise” |
| REJECTED | Bloquear seleção e mostrar motivo |
| PAUSED ou DISABLED | Remover de campanhas |
| Qualidade RED / FLAGGED | Bloquear ou exigir revisão |
| Partner suspenso ou instância inativa | Não enviar |
Enviar template
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:
- Deduplicate pelo ID do evento.
- Atualize status local imediatamente.
- Se
sendable=false, interrompa novas seleções. - 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.
