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

# Event Types

> Available webhook events and payload examples

## Event Types Overview

Webhook events are namespaced by service (`outbound` or `inbound`). Subscribe to the events relevant to your use case.

### Outbound Events

| Event                | Description                         |
| -------------------- | ----------------------------------- |
| `outbound.queued`    | Message entered the queue           |
| `outbound.delivered` | Message successfully delivered      |
| `outbound.deferred`  | Message temporarily deferred        |
| `outbound.bounced`   | Message bounced (hard or soft)      |
| `outbound.rejected`  | Message rejected by remote server   |
| `outbound.spam`      | Message flagged as spam             |
| `outbound.virus`     | Virus detected in message           |
| `outbound.dropped`   | Message dropped (policy/rate limit) |
| `outbound.opened`    | Recipient opened the email          |
| `outbound.clicked`   | Recipient clicked a link            |
| `outbound.complaint` | Spam complaint received (FBL)       |

### Inbound Events

<Info>
  These events notify you about inbound email activity. If you want to deliver the **actual email content** to your application via webhook, see [Inbound Webhooks](/inbound/webhooks/getting-started).
</Info>

| Event               | Description                       |
| ------------------- | --------------------------------- |
| `inbound.received`  | Message received at our servers   |
| `inbound.delivered` | Message delivered to your mailbox |
| `inbound.spam`      | Message marked as spam            |
| `inbound.blocked`   | Message blocked by policy         |

***

## Outbound Event Payloads

### outbound.queued

Triggered when a message enters the queue.

```json theme={null}
{
    "id": "evt_abc123",
    "service": "outbound",
    "type": "outbound.queued",
    "created_at": 1704825600,
    "data": {
        "uid": "message-uid",
        "from": "sender@example.com",
        "to": "recipient@example.com",
        "subject": "Hello World",
        "user": "api-user"
    }
}
```

### outbound.delivered

Triggered when a message is successfully delivered.

```json theme={null}
{
    "id": "evt_abc123",
    "service": "outbound",
    "type": "outbound.delivered",
    "created_at": 1704825600,
    "data": {
        "uid": "message-uid",
        "from": "sender@example.com",
        "to": "recipient@example.com",
        "subject": "Hello World",
        "mx": "aspmx.l.google.com",
        "host": "2404:6800:4003:c1a::1b",
        "ip": "2001:df4:2980:15::1",
        "response": "250 2.0.0 OK"
    }
}
```

### outbound.bounced

Triggered when a message bounces.

```json theme={null}
{
    "id": "evt_abc123",
    "service": "outbound",
    "type": "outbound.bounced",
    "created_at": 1704825600,
    "data": {
        "uid": "message-uid",
        "from": "sender@example.com",
        "to": "invalid@example.com",
        "bounce_type": "hard",
        "mx": "mx.example.com",
        "host": "192.0.2.1",
        "response": "550 User unknown"
    }
}
```

<Info>
  The `bounce_type` field indicates whether it was a `hard` bounce (permanent) or `soft` bounce (temporary).
</Info>

### outbound.rejected

Triggered when a message is rejected by the remote mail server.

```json theme={null}
{
    "id": "evt_abc123",
    "service": "outbound",
    "type": "outbound.rejected",
    "created_at": 1704825600,
    "data": {
        "uid": "message-uid",
        "from": "sender@example.com",
        "to": "blocked@example.com",
        "mx": "mx.example.com",
        "host": "192.0.2.1",
        "response": "550 5.7.1 Message rejected due to policy"
    }
}
```

### outbound.deferred

Triggered when a message is temporarily deferred by the remote mail server.

```json theme={null}
{
    "id": "evt_abc123",
    "service": "outbound",
    "type": "outbound.deferred",
    "created_at": 1704825600,
    "data": {
        "uid": "message-uid",
        "from": "sender@example.com",
        "to": "recipient@example.com",
        "mx": "mx.example.com",
        "host": "192.0.2.1",
        "response": "451 4.7.1 Try again later"
    }
}
```

### outbound.spam

Triggered when a message is flagged as spam before delivery.

```json theme={null}
{
    "id": "evt_abc123",
    "service": "outbound",
    "type": "outbound.spam",
    "created_at": 1704825600,
    "data": {
        "uid": "message-uid",
        "from": "sender@example.com",
        "to": "recipient@example.com",
        "subject": "Buy now!!!",
        "score": 15.3,
        "rules": "URIBL_BLOCKED,HTML_IMAGE_RATIO_02"
    }
}
```

### outbound.virus

Triggered when a virus is detected in a message.

```json theme={null}
{
    "id": "evt_abc123",
    "service": "outbound",
    "type": "outbound.virus",
    "created_at": 1704825600,
    "data": {
        "uid": "message-uid",
        "from": "sender@example.com",
        "to": "recipient@example.com",
        "subject": "Document attached",
        "response": "Virus detected: Eicar-Test-Signature"
    }
}
```

### outbound.dropped

Triggered when a message is dropped due to policy or rate limiting.

```json theme={null}
{
    "id": "evt_8ab158a4-071a-4199-b33c-8e8258cad7ec",
    "service": "outbound",
    "type": "outbound.dropped",
    "created_at": 1778636654,
    "data": {
        "entity_type": "from",
        "entity_value": "test-block@planitbc.com",
        "reason": "test block, manual webhook fire",
        "user": "deannewtest"
    }
}
```

### outbound.opened

Triggered when a recipient opens an email (requires [open tracking](/outbound/open-tracking) enabled).

```json theme={null}
{
    "id": "evt_abc123",
    "service": "outbound",
    "type": "outbound.opened",
    "created_at": 1704825600,
    "data": {
        "uid": "message-uid",
        "country": "AU",
        "email_client": "Gmail",
        "user_agent": "Mozilla/5.0..."
    }
}
```

### outbound.clicked

Triggered when a recipient clicks a link (requires [click tracking](/outbound/click-tracking) enabled).

```json theme={null}
{
    "id": "evt_abc123",
    "service": "outbound",
    "type": "outbound.clicked",
    "created_at": 1704825600,
    "data": {
        "uid": "message-uid",
        "url": "https://example.com/promo",
        "country": "AU",
        "user_agent": "Mozilla/5.0..."
    }
}
```

### outbound.complaint

Triggered when a spam complaint is received via feedback loop (FBL).

```json theme={null}
{
    "id": "evt_abc123",
    "service": "outbound",
    "type": "outbound.complaint",
    "created_at": 1704825600,
    "data": {
        "uid": "message-uid",
        "from": "sender@example.com",
        "to": "recipient@example.com"
    }
}
```

<Warning>
  Spam complaints can negatively impact your sender reputation. Monitor these closely and remove recipients who complain from your mailing lists.
</Warning>

***

## Inbound Event Payloads

### inbound.received

Triggered when a message is first received at our servers.

```json theme={null}
{
    "id": "evt_def456",
    "service": "inbound",
    "type": "inbound.received",
    "created_at": 1704825600,
    "data": {
        "uid": "message-uid",
        "from": "external@sender.com",
        "to": "user@yourdomain.com",
        "subject": "Hello",
        "domain": "yourdomain.com",
        "host": "mail.sender.com",
        "ip": "203.0.113.1"
    }
}
```

### inbound.delivered

Triggered when a message is successfully delivered to your mailbox.

```json theme={null}
{
    "id": "evt_def456",
    "service": "inbound",
    "type": "inbound.delivered",
    "created_at": 1704825600,
    "data": {
        "uid": "message-uid",
        "from": "external@sender.com",
        "to": "user@yourdomain.com",
        "subject": "Hello",
        "domain": "yourdomain.com",
        "response": "250 OK"
    }
}
```

### inbound.spam

Triggered when a message is marked as spam.

```json theme={null}
{
    "id": "evt_def456",
    "service": "inbound",
    "type": "inbound.spam",
    "created_at": 1704825600,
    "data": {
        "uid": "message-uid",
        "from": "spammer@bad.com",
        "to": "user@yourdomain.com",
        "subject": "You won!!!",
        "domain": "yourdomain.com",
        "spam_score": 12.5,
        "spam_report": "URIBL_BLOCKED,BAYES_99"
    }
}
```

### inbound.blocked

Triggered when a message is blocked by policy.

```json theme={null}
{
    "id": "evt_def456",
    "service": "inbound",
    "type": "inbound.blocked",
    "created_at": 1704825600,
    "data": {
        "uid": "message-uid",
        "from": "blocked@bad.com",
        "to": "user@yourdomain.com",
        "domain": "yourdomain.com",
        "response": "550 5.7.1 Sender blocked by policy"
    }
}
```

***

## Common Payload Fields

All webhook payloads share these common fields:

| Field        | Type    | Description                                 |
| ------------ | ------- | ------------------------------------------- |
| `id`         | string  | Unique event identifier (format: `evt_xxx`) |
| `service`    | string  | Either `outbound` or `inbound`              |
| `type`       | string  | The event type                              |
| `created_at` | integer | Unix timestamp when the event occurred      |
| `data`       | object  | Event-specific data                         |

### Data Object Fields

| Field      | Events            | Description               |
| ---------- | ----------------- | ------------------------- |
| `uid`      | All               | Unique message identifier |
| `from`     | Most              | Sender email address      |
| `to`       | Most              | Recipient email address   |
| `subject`  | Some              | Email subject line        |
| `domain`   | Inbound           | Recipient domain          |
| `response` | Delivery events   | Server response message   |
| `mx`       | Outbound delivery | Mail exchanger used       |
| `host`     | Delivery events   | Server hostname or IP     |
| `ip`       | Some              | IP address                |
