---
title: email.opened
description: A tracked open. Requires open tracking on the domain.
sidebar:
  label: email.opened
  icon: eye
---

A tracked open. Requires open tracking on the [domain](/guides/domains#tracking-settings).

## Payload

| Prop | Type | Default | Description |
| - | - | - | - |
| `email_id` | `string` | - | eml_… |
| `thread_id` | `string` | - | The conversation. |
| `domain_id` | `string \| null` | - | The domain it was sent from, or null when sent through a mailbox. |
| `mailbox_id` | `string \| null` | - | The mailbox it was sent through, or null when sent from a domain. |
| `suppression_key` | `string \| null` | - | The list the send named, when it named one. |
| `user_agent` | `string \| null` | - | The client that loaded the pixel. |

## Handling it

:::warning
Opens are unreliable by construction. Privacy proxies prefetch tracking pixels, which reports opens that never happened, and clients that block images report none at all. Useful in aggregate; not evidence about an individual.
:::

Never branch application logic on a single open — "they haven't read it, resend" will misfire on both kinds of client. [`email.clicked`](/webhooks/events/email-clicked) is the signal worth acting on.
