# Look up message events

> Find out what happened to your messages by recipient or event type, from the last 24 hours to the last 90 days.

Source: https://www.coritan.com/docs/mail/smtp-relay/events/

In the dashboard:

- /dashboard/mail/…/events: https://www.coritan.com/dashboard/mail

The **Events** tab of an SMTP Relay service lists what happened to the messages it sent: each one we queued, delivered, deferred or bounced, each complaint, and each message or recipient the relay refused. Use it to answer a question such as "did my receipt reach alex@example.com?", up to 90 days back.

To have events sent to your application as they happen, add a [webhook](/docs/mail/smtp-relay/webhooks/).

## Before you begin

- An SMTP Relay service that has sent mail. Events appear a short time after each step of a delivery.

## Look up events

1. In the dashboard, go to [**Email**](https://www.coritan.com/dashboard/mail), open the SMTP Relay service, then the **Events** tab.
2. In **Event**, choose the kind of event to list, or leave **All events**. [Event categories](#event-categories) describes each one.
3. In **Window**, choose how far back to look: **Last 24 hours**, **Last 3 days**, **Last 7 days**, **Last 30 days** or **Last 90 days**. The tab opens on **Last 7 days**.
4. To see the events for one recipient, enter the whole address in **Recipient**, such as `alex@example.com`, and select **Filter**. Part of an address finds nothing. **Clear** removes the recipient filter.

Select **Refresh** to load events that arrived since you opened the tab.

## Result

The **Delivery events** card lists the matching events, newest first:

**Recipient**
: The recipient, with the sender under it.

**Event**
: The event's category.

**Response**
: What the receiving server replied. When there is no reply, the server we connected to, or the detailed event type. Hover over it to see the detailed event type.

**When**
: How long ago the event happened. Hover over it to see the date and time.

The list holds up to 200 events. When it is full, a note under it says `Showing the latest 200. Narrow the window or filter by recipient to see older events.` The count above the list is the number of events shown, so it stops at 200 too.

## Event categories

| `category` | What happened |
| --- | --- |
| `accepted` | We queued the message for delivery. |
| `delivered` | The receiving server took the message. |
| `deferred` | The receiving server refused the message for now, or a sending limit held it back. We try again later. |
| `bounced` | The message was not delivered and we will not try again. We add the recipient to the [suppression list](/docs/mail/smtp-relay/suppressions/). |
| `complaint` | A report about the message reached us: the recipient marked it as spam, or a mailbox provider reported it as fraud or as failing authentication. We add the recipient to the suppression list. |
| `rejected` | The relay refused the message, or one of its recipients, when your application submitted it over SMTP. The reply your application got says why. |

The **Event** column and the **Event** filter write each category with a capital letter. [Receive delivery events with webhooks](/docs/mail/smtp-relay/webhooks/#events) lists the detailed event types behind each category.

Rows marked **Other** (`other` or `null` in the API) are steps of a delivery that have no category of their own, such as the end of a delivery attempt. The **Event** filter cannot select them.

The **Event** filter also offers `suppressed` and `report`, and both normally find nothing:

- We record no `suppressed` event. A message to a suppressed address appears as `rejected` when the relay refused the address over SMTP, and not at all when the send API left it out.
- DMARC and TLS reports about your domains are kept apart from events. The dashboard does not list them, and the API returns them with the [reputation report](/docs/mail/smtp-relay/deliverability/#dmarc-and-tls-reports).

## Troubleshooting

**No events in this window**
: Nothing matches the filters. Choose a longer **Window**, check the whole address in **Recipient**, or select **Clear**. A message sent in the last minute or so may not have its events yet.

A message you sent is not listed
: When the relay refused the whole message before it was queued, your application got the refusal as an SMTP reply or an API error, and the list may hold a `rejected` event or nothing. [Send over SMTP with credentials](/docs/mail/smtp-relay/credentials/#troubleshooting) and [Send email over HTTPS](/docs/mail/smtp-relay/send-with-the-api/#troubleshooting) explain each refusal.

A recipient has `accepted` but nothing after it
: The message is still in the queue, or the receiving server has not answered yet. A `deferred` event means we are trying again. Check again later, and look at **Response** on the latest event.

## Related

- [Receive delivery events with webhooks](/docs/mail/smtp-relay/webhooks/)
- [Manage the suppression list](/docs/mail/smtp-relay/suppressions/)
- [Events API reference](/docs/api/reference/client/mail/smtp-relay/#op-get-api-v1-client-smtp-relay-service-id-events)

## With the API

```bash
curl "https://api.coritan.com/api/v1/client/smtp-relay/4812/events?category=bounced&hours=168&limit=50" \
  -H "Authorization: Bearer $CORITAN_TOKEN"
```

`category`
: Optional. One of `accepted`, `delivered`, `deferred`, `bounced`, `complaint`, `rejected` and `report`. Any other value answers an empty list.

`recipient`
: Optional. The whole recipient address. Case does not matter.

`hours`
: How far back to look, 1–2160 hours (90 days). The default is `24`.

`limit`
: The most events to return, 1–500. The default is `100`.

A value for `hours` or `limit` outside its range answers `422`. The answer lists the newest events first:

```json
{
  "items": [
    {
      "id": 90415,
      "event_type": "delivery.failed",
      "category": "bounced",
      "queue_id": "7d2c91a04e",
      "message_id": "<175890432171.2481.9311874401294517206@example.com>",
      "sender": "receipts@example.com",
      "recipient": "alex@example.com",
      "remote_host": "mx.example.net",
      "response": "550 5.1.1 <alex@example.com>: Recipient address rejected: User unknown",
      "local_ip": "203.0.113.25",
      "node_id": 3,
      "occurred_at": "2026-09-16T10:52:08"
    }
  ],
  "total": 1
}
```

`id`
: The event's id, the same one a webhook request carries.

`event_type`
: The detailed event type, such as `delivery.failed`.

`category`
: The category from [Event categories](#event-categories), or `other` or `null` for a step that has none.

`queue_id`
: Our id for the message in the delivery queue, the same on every event about that message.

`message_id`
: The message's `Message-ID` header.

`sender` and `recipient`
: The sender and recipient addresses, in lower case. An event about the whole message, such as `accepted`, names only its first recipient.

`remote_host`
: The receiving server we connected to.

`response`
: The receiving server's reply or the reason for the event, up to 2,000 characters.

`local_ip`
: The address the message left our servers from.

`node_id`
: Our id for the mail server that handled the event. Use it only to tell servers apart.

`occurred_at`
: When the event happened, in UTC, with no time zone suffix.

`total`
: The number of events in this answer, which is never more than `limit`. It does not count the events the limit left out.

Any field except `id`, `event_type` and `occurred_at` is `null` when the event does not carry it.

### On a Mail Hosting service

Mail Hosting has no **Events** tab, but the same operation works under `/client/mail/{service_id}/events` and lists the events we record for mail the service's mailboxes send. The **Recent activity** card on its **Overview** tab shows the latest eight events from the last seven days. Some bounces reach the sending mailbox only as an `Undelivered Mail Returned to Sender` message and are not listed.

## API

- `GET /api/v1/client/smtp-relay/{service_id}/events`: List events (https://www.coritan.com/docs/api/reference/client/mail/smtp-relay/#op-get-api-v1-client-smtp-relay-service-id-events)
- `GET /api/v1/client/mail/{service_id}/events`: List events (https://www.coritan.com/docs/api/reference/client/mail/mail/#op-get-api-v1-client-mail-service-id-events)
