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

# Event types

> Supported webhook event types and their payload structure.

Webhooks send real-time notifications when events happen in your Heyy workspace. All webhook payloads follow this structure:

```json theme={null}
{
  "id": "f8a2b1c3-4d5e-4f6a-9b0c-1d2e3f4a5b6c",
  "tenantId": "a98d0e1f2-a1b4-4c4d-6e7f-8a9b0c1d2e3f",
  "event": "message.received",
  "data": {}
}
```

* **id** — Unique identifier for this webhook payload delivery
* **tenantId** — The tenant that triggered this webhook event
* **event** — Event type (for example, `message.received`)
* **data** — Event-specific payload (for message events, a `Message` object)

We have not added other event families yet, but platform events will likely use a slightly different object structure due to their different nature.

## Message webhooks

Heyy currently sends message object webhooks for the following events:

| Event Type                                              | Description                                                                                                 |
| ------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- |
| [`message.received`](/webhooks/events/message-received) | A new inbound message was received on one of your channels.                                                 |
| [`message.sent`](/webhooks/events/message-sent)         | A new outbound message was created and sent from Heyy (by an agent, automation, or API call).               |
| [`message.updated`](/webhooks/events/message-updated)   | An existing message changed (most commonly delivery status transitions like `sent` → `delivered` → `read`). |

All message webhooks share the same payload structure.
