Appearance
Email Logs
The Email Logs page is the dispatch history for every outbound notification — emails, webhooks, and in-app messages. Use it when a customer says "I didn't get the invite email" or "the password reset never arrived."
Layout
- Header with title, description, and (in development mode) a Send Sample Emails button.
- Toolbar with channel filter, status filter, search, Clear, count, and a time-range toggle.
- Table of dispatches.
Toolbar
| Control | Behaviour |
|---|---|
| Channel | All / Email / Webhook / In-App. |
| Status | All / Sent / Pending / Failed / Bounced. |
| Search | Free text across subject, template slug, recipient IDP ID, channel, status, error message. |
| Clear | Resets all filters and the search. |
| Count | "N of M" — filtered vs. total. |
Columns
| Column | Notes |
|---|---|
| Channel | Email / Webhook / In-App badge. |
| Status | Sent / Pending / Failed / Bounced badge. |
| Template | Template slug in monospace (e.g. user_invite). |
| Subject | Email subject or event description, truncated. |
| Recipient | User avatar if an IDP ID is available; dash otherwise. |
| Error | Error message in red if the dispatch failed; dash otherwise. |
| Sent At | When dispatched. |
| Created | When the log entry was created. |
The table loads the most recent 200 records — there is no pagination.
Send Sample Emails
The Send Sample Emails button appears only when mock data is enabled in the deployment — it is intended for development and demo environments, where it triggers a batch of sample notifications so you can verify the templates render correctly.
In production, the button is not visible.
Typical investigations
- "User didn't receive their invite" — filter Template =
user_invite, search the recipient name. Ifstatusis Sent, the email went out — check spam folder. If Failed, look at the error. - "Webhook delivery failed" — filter Channel = Webhook, Status = Failed. The error column shows what went wrong.
- "In-app notification missing" — filter Channel = In-App. If absent, the notification was never enqueued.
Notes
- The table is a flat list with no row-click action; it is purely informational.
- Sent does not guarantee Delivered. Bounces show up in the Bounced status if the email provider reports them back.
- Error text is the raw error from the upstream provider. Long errors are truncated; copy-paste from the cell to read the full text.
- The page does not auto-refresh. Reload to see new entries.

