> ## 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.

# Webhook events

> Get a POST when an in-app chat message, conversation, or member changes.

<Tip>
  The API is **pull**; the webhook is **push**. Use it to sync CRM, Inbox, and metrics without polling.
</Tip>

## In short

* Every delivery is a **POST** `application/json` to the registered URL.
* `chat.*` events are **in-app chat only**. WhatsApp uses `message.*`, push uses `push.*`.
* `instanceId` is **empty** (chat has no channel instance).
* Enable **only** the events your integration uses.
* Reply **2xx quickly**; heavy work goes to your queue.

Register a webhook and enable the `chat.*` events you need. Chat **always** fires if the webhook is subscribed — there is no extra “inbound messages” switch on the channel. General setup: [Webhooks](/en/guides/webhooks/index). HMAC: [Webhook security](/en/guides/webhooks/seguranca).

***

## POST body

```json theme={null}
{
  "event": "chat.received",
  "workspaceId": "clxx123...",
  "instanceId": "",
  "timestamp": "2026-09-05T14:30:00.000Z",
  "data": {
    "chatAppId": "clxxapp...",
    "conversationId": "clxxconv...",
    "messageId": "clxxmsg...",
    "message": {
      "id": "clxxmsg...",
      "type": "TEXT",
      "body": "Hi"
    }
  }
}
```

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

**2xx** within \~10s succeeds; **4xx / 5xx / timeout** retries (5 min, 30 min, 2 h).

## Events

| Event                       | When                        | Typical use                  |
| --------------------------- | --------------------------- | ---------------------------- |
| `chat.received`             | Message from a `USER`       | Support, Inbox, CRM          |
| `chat.sent`                 | Message from an `AGENT`     | Echo confirmation            |
| `chat.message.deleted`      | Message deleted             | Drop from client cache       |
| `chat.conversation.created` | New conversation            | Open a ticket                |
| `chat.conversation.updated` | Title, policies, or preview | Refresh list                 |
| `chat.conversation.deleted` | Soft delete                 | Close thread                 |
| `chat.member.added`         | Member joined               | ACL                          |
| `chat.member.removed`       | Member left                 | Revoke local access          |
| `chat.user.blocked`         | A `USER` blocked another    | Refuse DIRECT and membership |
| `chat.user.unblocked`       | The block was removed       | Allow DIRECT again           |

`USER` → `chat.received`. `AGENT` → `chat.sent`. `chat.conversation.updated` also fires when the room capability switch changes.

## Next steps

* [Introduction](/en/chat-api/como-funciona/introducao)
* [Quick Start](/en/chat-api/como-funciona/quick-start)
* [Webhooks guide](/en/guides/webhooks/index)
