# A label was applied by hand or through the API

Source: https://docs.emelia.io/docs/inbox-api/label-applied

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

Webhook event `label.applied`: Emelia sends an HTTP POST request to your URL.

Fired when a label is applied through the API or the inbox app. Not fired for labels applied by the AI pipeline, by an AI backfill or for Emelia campaign labels (they are applied by the worker). On `POST /emails/bulk` with `applyLabel`, it is fired for every processed email as soon as one of them actually changed.

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.tagId` | string | yes | The label id. |
| `data.tagName` | string | yes |  |
| `data.isAiLabel` | boolean | yes |  |

```json
{
  "event": "label.applied",
  "createdAt": "2026-10-08T09:12:51.000Z",
  "data": {
    "emailId": "cmemacme0000000000000001",
    "tagId": "cmtgacme0000000000000001",
    "tagName": "Quotes",
    "isAiLabel": false
  }
}
```
