# An email arrived in an inbox

Source: https://docs.emelia.io/docs/inbox-api/email-received

Guide: [Inbox API](https://docs.emelia.io/docs/inbox-api.md)

Webhook event `email.received`: Emelia sends an HTTP POST request to your URL.

Fired once per new message synchronised into an INBOX folder. Not fired for sent messages, drafts or other folders. Deduplicated across backend instances for 5 minutes.

Registration: webhook subscriptions cannot be created with an API key, and Emelia has no screen for them yet: contact support.

## Headers

| Header | Description |
|---|---|
| `X-Maylee-Event` | Event name, same as `event` in the body. |
| `X-Maylee-Signature` | `t=<unix seconds>,v1=<hex HMAC-SHA256 of "<t>.<raw body>" keyed with the webhook secret>`. Reject deliveries older than 300 seconds and compare in constant time. |
| `User-Agent` | Fixed User-Agent of the delivery client. Do not use it to authenticate a delivery: verify the signature. |

## Payload

| Field | Type | Required | Description |
|---|---|---|---|
| `event` | any | yes |  |
| `createdAt` | string (date-time) | yes | Time of THIS delivery attempt (changes on retries). |
| `data` | object | yes |  |
| `data.emailId` | string | yes |  |
| `data.mailboxId` | string | yes |  |
| `data.folderType` | string | yes |  |

```json
{
  "event": "email.received",
  "createdAt": "2026-10-08T09:12:51.000Z",
  "data": {
    "emailId": "cmemacme0000000000000001",
    "mailboxId": "cmbxacme0000000000000001",
    "folderType": "INBOX"
  }
}
```
