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

# Email Events

> Inspect the delivery event history for an email message.

Dugble records delivery events as an email moves through the sending pipeline. Events are useful for troubleshooting delivery and understanding how the latest message status was reached.

## List message events

Retrieve events for a message with:

```http theme={null}
GET /emails/{message_id}/events
```

For example:

```bash theme={null}
curl "https://api.dugble.com/emails/$MESSAGE_ID/events?limit=50&offset=0" \
  -H "Authorization: Bearer $DUGBLE_API_KEY" \
  -H "Accept: application/json"
```

The response contains the events associated with that message.

## Pagination

Email events use offset pagination:

| Parameter | Description                                                                        |
| --------- | ---------------------------------------------------------------------------------- |
| `limit`   | Maximum events to return. Defaults to 100 when omitted, zero, or greater than 100. |
| `offset`  | Number of events to skip. Negative values are treated as 0.                        |

The event response does not include a `has_more` field. Advance `offset` by the number of events returned when you need the next page.

## Event data

An event can include a unique event ID, event type, occurrence time, provider, and optional code or message.

```json theme={null}
{
  "success": true,
  "data": {
    "object": "list",
    "data": [
      {
        "id": "49a3999c-0ce1-4ea6-ab68-afcd6dc2e794",
        "type": "delivered",
        "occurred_at": "2026-08-25T09:00:05Z",
        "provider": "ses"
      }
    ]
  }
}
```

## Events and message status

The email resource exposes `last_event` as the latest known state. Use the event list when you need the history behind that state.

For example, a message may move from `queued` to `processing`, then `submitted`, and finally `delivered`.

## Real-time processing

If your application needs to react automatically to delivery changes, use webhooks instead of continuously polling message events.

See [Webhooks](/docs/webhooks/introduction) for event delivery to your application.
