Notificações do Partner Portal
O sino unificado reúne eventos da Academy, Meta, templates, saúde de entregas, cobrança e sistema. Cada membro escolhe o que deseja receber.
Categorias disponíveis
| Preferência | Eventos | Padrão |
|---|---|---|
notify_academy | Resposta, aprovação e atualização de conteúdo. | true |
notify_meta_alerts | Qualidade, conta, número, nome e capacidade. | true |
notify_templates | PENDING, APPROVED, REJECTED, PAUSED, qualidade e categoria. | true |
notify_delivery_health | 131049, 131042 e demais alertas de entrega reportados pelo backend do partner. | true |
notify_billing | Falha, recuperação, fatura paga e acesso financeiro. | true |
notify_billing_reminders | Aproximadamente 24h antes do trial, renovação ou retry de cobrança. | true |
notify_system | Avisos gerais HookCloud. | true |
popup_enabled | Exibe toast; não desativa o histórico no sino. | true |
Como a entrega funciona
- A origem muda.Triggers transformam Academy, Meta, template, entrega e billing em um formato único.
- Idempotência.Cada evento possui uma chave de deduplicação.
- Preferências por usuário.A lista filtra categorias desativadas sem alterar os outros membros.
- Leitura individual.Cada usuário tem seu próprio estado de lido/não lido.
Lembretes financeiros
O job interno que já processa a fila Stripe também gera lembretes idempotentes na janela de 23 a 25 horas antes do evento financeiro.
| Evento | Quando | Destino |
|---|---|---|
billing.trial_ends_tomorrow | Trial termina em ~24h | Aba Assinatura |
billing.charge_tomorrow | Renovação em ~24h | Aba Assinatura |
billing.payment_retry_tomorrow | Smart Retry em ~24h | Aba Assinatura |
Implementação no seu frontend
O Partner Portal já implementa polling, badge, popup, navegação e preferências. Em um frontend próprio, consulte periodicamente, marque a leitura e respeite o campo target_url.
const response = await fetch(
`${API_URL}?route=list-partner-notifications&limit=40`,
{ headers: { apikey: PUBLISHABLE_KEY, Authorization: `Bearer ${userJwt}` } }
);
const { items, unread, preferences } = await response.json();Alertas Meta com explicação em português
Os alertas Meta recebem uma interpretação adicional no objeto explanation. O Portal, o Admin e o aplicativo usam o mesmo catálogo local para explicar o significado, o impacto e o próximo passo. A leitura dessa explicação não faz uma nova consulta à Meta.
O objeto aparece em search-meta-risk-alerts → items[], get-meta-risk-dashboard → latest_alerts.items[], no alert retornado por acknowledge-meta-risk-alert e resolve-meta-risk-alert, e nas notificações Meta de list-partner-notifications → items[]. As permissões de cada rota continuam sendo exigidas; a explicação não amplia o acesso a outros parceiros.
| Campo | Uso recomendado |
|---|---|
title e summary | Título e explicação do evento em linguagem clara. |
impact | O que o evento informa e os limites da interpretação. Um aviso de segurança não significa automaticamente falha de conexão. |
recommended_action | Orientação para o usuário, incluindo ação condicional quando ele não reconhece uma alteração de segurança. |
area e tone | Assunto e tom visual: info, success, warning ou danger. São apresentação; não substituem o estado operacional nem alteram a severidade original. |
technical | field, event, category e code preservam a referência técnica da interpretação para suporte. Valores indisponíveis ficam nulos. |
reference_url | Referência oficial ou documentação HookCloud apropriada, definida pelo catálogo. Renderize textos como texto, sem interpretar HTML recebido em um alerta. |
interpretation_version e recognized | Versão da explicação e indicação de que o evento foi reconhecido. Com recognized=false, mostre a orientação neutra e o detalhe técnico; não invente uma causa. |
É um acréscimo ao contrato: category, current_state, severity, status, datas e dados originais continuam disponíveis. Uma notificação de cobrança, comunidade ou autenticação não deve ser traduzida como alerta Meta apenas por mencionar uma conta da Meta.
Exemplo: redefinição do PIN
O exemplo genérico abaixo representa um evento da conta/WABA sem uma instância específica associada. PIN_RESET_SUCCESS informa conclusão de uma redefinição do PIN; o aviso orienta a reconhecer a ação e conferir a segurança. Ele não permite afirmar que o cartão está ausente, que o nome foi recusado ou que a conta foi banida.
{
"category": "security_update",
"current_state": "PIN_RESET_SUCCESS",
"severity": "warning",
"status": "open",
"scope_type": "waba",
"partner_instance_id": null,
"metadata": {
"field": null,
"value": {
"event": "PIN_RESET_SUCCESS"
}
},
"explanation": {
"title": "Redefinição do PIN concluída",
"summary": "A Meta informou a conclusão de uma redefinição do PIN de segurança deste número.",
"impact": "Este aviso não significa erro na conexão, falta de pagamento ou banimento. Ele não confirma se a verificação em duas etapas está ativa agora.",
"recommended_action": "Se reconhece a ação, confira a configuração atual no WhatsApp Manager. Se não reconhece, revise os acessos com o administrador da empresa e procure o suporte. Nunca envie seu PIN ou senha pelo suporte.",
"area": "security",
"tone": "warning",
"reference_url": "https://developers.facebook.com/documentation/business-messaging/whatsapp/webhooks/reference/security/",
"interpretation_version": "2026-10-16.1",
"technical": {
"field": "security",
"event": "PIN_RESET_SUCCESS",
"category": "security_update",
"code": null
},
"recognized": true
}
}A referência de segurança da Meta documenta a grafia PIN_REQUEST_SUCCESS para a conclusão das instruções por email de desativação da verificação em duas etapas. A variação observada PIN_RESET_SUCCESS recebe explicação conservadora: confira a configuração atual, sem afirmar que o segundo fator está ativo ou desativado neste momento.
Veja como separar alerta e saúde operacional. Para orientar o usuário final, compartilhe o guia de PIN e alertas na Central de Ajuda.
Referências oficiais: segurança e PIN · alertas da conta · restrições e vínculo.
Aviso de limite do nome e avisos de ligações
Ao receber hookcloud.instance.health_updated, leia a fotografia de connection_health completa. Um número pode estar inventory_state=active e ter messaging_capability.state=limited com reason=display_name_capacity_limit: a última consulta de saúde associou o limite à aprovação do nome. Isso não substitui o estado de aprovação do nome nem confirma que o WhatsApp Manager ainda mostre o mesmo diagnóstico. ready_to_operate=false preserva a ausência de confirmação de envio sem limitações; não significa, sozinho, bloqueio total.
O diagnóstico meta_display_name_capacity_limit pertence ao domínio messaging. Já meta_calling_not_configured, domínio calling, trata dos códigos SIP 138024 e 138025 quando identificados nesse contexto. Não gere um aviso de falha de mensagens só por existir uma pendência de configuração de ligações que seu sistema não utiliza.
Se o nome já consta como APPROVED e a capacidade ainda está limited, mostre ambos: nome aprovado e diagnóstico de capacidade aguardando atualização pela Meta. Não rebaixe a aprovação por causa do texto do limite, nem force envio available. A HookCloud não garante um prazo de propagação entre o WhatsApp Manager, os eventos e a API; compare a identidade e evidence.checked_at. A atualização visual do Portal consulta dados locais, não faz GET à Meta a cada atualização.
Um evento histórico e sua explicação não substituem a saúde atual. Mostre “Ativo — envio com limite” nesse caso e preserve outras restrições independentes. Veja os campos, condições e referências oficiais desse contrato.
