Domains
Open and click tracking
Turn on open and click tracking per domain, and receive email.opened and email.clicked events in logs and webhooks.
Sooner can record when a recipient opens an email and when they click a link in it. Tracking is configured per domain and is off by default.
What each setting does
| Setting | What Sooner does | Event |
|---|---|---|
open_tracking | Adds an invisible image to HTML emails. When the recipient's mail client loads it, Sooner records an open. | email.opened |
click_tracking | Rewrites links in the email so they pass through a redirect that records the click, then sends the recipient to your link. | email.clicked |
Tracking applies to every email you send from the domain. Open tracking only works in HTML emails, and it depends on the recipient's mail client loading images, so opens are not a precise count of readers.
Because click tracking rewrites links, the link a recipient sees in the email is not the same text as the one you wrote. Leave it off for emails where the link target must be exactly what you sent, such as security notices.
Turn tracking on or off
In the dashboard, open the domain and use the Tracking toggles.
With the API, set the fields when you create the domain or update it later with a full_access key:
curl -X PATCH https://api.sooner.dev/domains/jh7b2k4d9x1m5q8r3t6v0w2y \
-H "Authorization: Bearer $SOONER_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "open_tracking": true, "click_tracking": true }'{ "object": "domain", "id": "jh7b2k4d9x1m5q8r3t6v0w2y" }A change applies to emails sent after it. On the send path it can take up to about 30 seconds to be picked up.
Where tracking shows up
- Email log. Each open and click is added to the email's timeline in the dashboard, and the email's
last_eventbecomesopenedorclicked. The status itself does not change, so an opened email is stilldelivered. - Webhooks. Subscribe to
email.openedandemail.clicked. The event data includes the IP address and user agent, and the clicked link for clicks. See Event types.
{
"type": "email.clicked",
"created_at": "2026-11-14T10:42:11.000Z",
"data": {
"email_id": "01jcz8w3f2x9k4m7n6p5q2r1s0",
"from": "Acme <hello@mail.yourcompany.com>",
"to": ["ada@example.com"],
"subject": "Your order is confirmed",
"created_at": "2026-11-14T10:41:58.000Z",
"click": {
"link": "https://yourcompany.com/orders/1042",
"ipAddress": "203.0.113.10",
"userAgent": "Mozilla/5.0"
}
}
}