> ## Documentation Index
> Fetch the complete documentation index at: https://docs.notifique.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Eventos dos Webhooks

> Receba avisos quando um template oficial for enviado à Meta, aprovado, rejeitado ou mudar de categoria.

<Tip>
  **`template.*`** avisa sobre o **catálogo Meta** (aprovação, rejeição, categoria). **`message.*`** avisa sobre **entrega** da mensagem, são coisas diferentes.
</Tip>

## Em poucas palavras

* Eventos **`template.*`** = ciclo de vida do template **oficial** sincronizado com a Meta.
* **`instanceId`** vem **vazio**, templates não usam instância de canal.
* Disparam quando você **publica na Meta**, quando a Meta **muda status** ou **categoria**, ou quando o Notifique **atualiza** o espelho local após sync.
* Para saber se a mensagem **entregou**, use [webhooks do WhatsApp](/whatsapp-api/como-funciona/eventos-do-webhooks) (`message.sent`, `message.delivered`, …).

Configuração geral: [Webhooks](/guides/webhooks/index). Segurança: [Segurança de webhooks](/guides/webhooks/seguranca).

***

## Como vem o POST

```json theme={null}
{
  "event": "template.status_changed",
  "workspaceId": "clxx123...",
  "instanceId": "",
  "timestamp": "2026-07-25T16:10:00.000Z",
  "data": {
    "templateId": "clxx...",
    "name": "boas_vindas",
    "metaName": "boas_vindas",
    "metaId": "1234567890",
    "metaWabaId": "9876543210",
    "language": "pt_BR",
    "source": "WHATSAPP_OFFICIAL",
    "status": "APPROVED",
    "previousStatus": "PENDING",
    "category": "MARKETING",
    "metaEvent": "APPROVED",
    "rejectionReason": null
  }
}
```

| Campo                  | Descrição                                                                      |
| ---------------------- | ------------------------------------------------------------------------------ |
| `event`                | `template.submitted`, `template.status_changed` ou `template.category_changed` |
| `data.templateId`      | ID do template no Notifique                                                    |
| `data.name`            | Nome interno do template                                                       |
| `data.metaName`        | Nome na Meta (envio oficial)                                                   |
| `data.source`          | `WHATSAPP_OFFICIAL` em templates oficiais                                      |
| `data.status`          | Status atual (`APPROVED`, `PENDING`, `REJECTED`, …)                            |
| `data.previousStatus`  | Status anterior (em `status_changed`)                                          |
| `data.rejectionReason` | Motivo quando `REJECTED`                                                       |

Headers: `X-Notifique-Signature`, `X-Notifique-Timestamp`, `X-Workspace-Id`, `X-Webhook-Event`.

***

## O que seu servidor deve responder

| Resposta                | Efeito                 |
| ----------------------- | ---------------------- |
| **2xx** em até \~10s    | Evento entregue        |
| **4xx / 5xx / timeout** | Retentativa automática |

<Note>
  Boas práticas: ao receber **`APPROVED`**, libere o template no seu app para disparos oficiais; em **`REJECTED`**, bloqueie e alerte o time de conteúdo.
</Note>

***

## Referência por evento

| Evento                      | Quando dispara                     | O que fazer com isso                |
| --------------------------- | ---------------------------------- | ----------------------------------- |
| `template.submitted`        | Template enviado/publicado na Meta | Registrar envio para aprovação      |
| `template.status_changed`   | Status local muda                  | Liberar ou bloquear envios oficiais |
| `template.category_changed` | Categoria Meta muda                | Ajustar regras de cobrança/uso      |

Status possíveis em `status_changed`: `APPROVED`, `PENDING`, `REJECTED`, `IN_APPEAL`, `PAUSED`, `DISABLED`, `DELETED`, `PENDING_DELETION`, `LIMIT_EXCEEDED`, `ARCHIVED`.

***

## Payload de cada evento

<AccordionGroup>
  <Accordion title="template.submitted">
    Disparado quando o template é **enviado para a Meta** (publicação ou atualização pendente de análise).

    ```json theme={null}
    {
      "event": "template.submitted",
      "workspaceId": "clxx123...",
      "instanceId": "",
      "timestamp": "2026-07-25T15:00:00.000Z",
      "data": {
        "templateId": "clxx...",
        "name": "confirmacao_pedido",
        "metaName": "order_confirmation",
        "metaId": "1234567890",
        "metaWabaId": "9876543210",
        "language": "pt_BR",
        "source": "WHATSAPP_OFFICIAL",
        "status": "PENDING",
        "category": "UTILITY"
      }
    }
    ```
  </Accordion>

  <Accordion title="template.status_changed">
    Disparado quando o status **muda**, tipicamente após resposta da Meta ou sync.

    ```json theme={null}
    {
      "event": "template.status_changed",
      "workspaceId": "clxx123...",
      "instanceId": "",
      "timestamp": "2026-07-25T16:10:00.000Z",
      "data": {
        "templateId": "clxx...",
        "name": "boas_vindas",
        "metaName": "boas_vindas",
        "metaId": "1234567890",
        "metaWabaId": "9876543210",
        "language": "pt_BR",
        "source": "WHATSAPP_OFFICIAL",
        "status": "APPROVED",
        "previousStatus": "PENDING",
        "category": "MARKETING",
        "metaEvent": "APPROVED",
        "rejectionReason": null
      }
    }
    ```

    Exemplo **rejeitado**:

    ```json theme={null}
    {
      "event": "template.status_changed",
      "workspaceId": "clxx123...",
      "instanceId": "",
      "timestamp": "2026-07-25T17:00:00.000Z",
      "data": {
        "templateId": "clxx...",
        "name": "promo_verao",
        "metaName": "summer_promo",
        "status": "REJECTED",
        "previousStatus": "PENDING",
        "category": "MARKETING",
        "rejectionReason": "INVALID_FORMAT"
      }
    }
    ```
  </Accordion>

  <Accordion title="template.category_changed">
    Disparado quando a Meta **reclassifica** o template (impacta cobrança e regras de uso).

    ```json theme={null}
    {
      "event": "template.category_changed",
      "workspaceId": "clxx123...",
      "instanceId": "",
      "timestamp": "2026-07-26T09:00:00.000Z",
      "data": {
        "templateId": "clxx...",
        "name": "lembrete_pedido",
        "metaName": "order_reminder",
        "metaId": "1234567890",
        "language": "pt_BR",
        "source": "WHATSAPP_OFFICIAL",
        "status": "APPROVED",
        "category": "UTILITY",
        "previousCategory": "MARKETING"
      }
    }
    ```
  </Accordion>
</AccordionGroup>

***

## Fluxo típico (publicar na Meta)

```mermaid theme={null}
sequenceDiagram
  participant App as Sua integração
  participant Ntf as Notifique
  participant Meta as Meta

  App->>Ntf: Publicar template na Meta
  Ntf->>Meta: Submit template
  Ntf-->>App: template.submitted (PENDING)
  Meta-->>Ntf: Review result
  Ntf-->>App: template.status_changed (APPROVED ou REJECTED)
  App->>Ntf: POST /v1/templates/send (se APPROVED)
  Ntf-->>App: message.sent / message.delivered (canal WA)
```

***

## Próximos passos

* [Templates oficiais Meta](/template-api/como-funciona/templates-oficiais-meta): sync, vínculo e publicação
* [Quick Start](/template-api/como-funciona/quick-start): disparo multicanal
* [Introdução](/template-api/como-funciona/introducao): interno × oficial
* [Eventos WhatsApp](/whatsapp-api/como-funciona/eventos-do-webhooks): entrega `message.*`
* [Webhooks (guia geral)](/guides/webhooks/index)
