Enabling Message Logs: Debugging Your Email Webhooks
When a webhook fires and nothing arrives at your endpoint, you need to know why. Message Logs give you per-delivery metadata โ HTTP status, duration, sender, subject โ without storing the content of your emails.
Logging is opt-in and configured per webhook. It is off by default.
Enabling logs on a webhook
Open the webhook's edit page and expand the Message Logs section. Two options appear:
| Setting | Options | Default |
|---|---|---|
| Enable logs | on / off | off |
| Retention | 1 day, 7 days, 30 days | 7 days |
Pick the shortest retention window that covers your typical debugging cycle. Log entries are automatically removed once they reach the retention age.
Click Save โ logging takes effect immediately for the next delivery.
The log list
Once logging is enabled, navigate to the webhook's Logs tab to see a table of recent deliveries. Each row shows:
| Column | What it tells you |
|---|---|
| Time | When the email arrived |
| From | The sender's address |
| Subject | The email subject line (capped at 512 characters) |
| Attempts | How many delivery attempts were made |
| Status | A colour-coded badge summarising the outcome |
Status badges
| Badge | Colour | Meaning |
|---|---|---|
Pending |
Blue | Delivery is in progress |
2xx |
Green | Your endpoint responded with a success status |
4xx |
Amber | Your endpoint returned a client-error status (e.g. 401, 404) |
5xx / Error |
Red | Your endpoint returned a server-error status, or the network request failed entirely |
A network-level failure (DNS timeout, connection refused, TLS error) shows the error description in place of an HTTP status code.
Filtering the log list
Two filters help you zero in on the entries you care about:
- Status filter โ show only deliveries with a particular outcome: 2xx, 4xx, 5xx/network error, failed, or pending.
- Sender filter โ type any part of an email address; the list narrows to rows whose
Fromaddress contains that string.
Combine both filters to find, for example, every failed delivery from a particular sender.
The log detail view
Click any row to open the full delivery record:
| Field | Description |
|---|---|
| Received | Exact timestamp the email arrived |
| From / To | Sender and your @email-webhook.com address |
| Subject | Email subject |
| Body size | Size of the plain-text body, in bytes / KB / MB |
| Attachments | Count and total size of attached files |
| Status | HTTP status code and text, or the network error message |
| Final state | delivered, failed, or pending |
| Attempts | Delivery attempt count |
| Duration | Round-trip time for the HTTP request, in milliseconds |
This gives you enough to answer most debugging questions without touching the email content itself.
Common failure patterns
4xx status (client error) Your endpoint received the request and rejected it. The most frequent causes:
- The URL path is wrong (404)
- The custom
Authorizationheader is missing or has an incorrect value (401 / 403) - Your application's router isn't handling the HTTP method you configured on the webhook (405)
5xx / network error The request could not complete successfully. Check:
- Is the server running and reachable from the public internet? (A local
localhostURL will always fail.) - Did the application crash or time out before responding?
- Is the TLS certificate valid?
Attempts > 1 Email-webhook makes a single delivery attempt per email. If you see a higher attempt count it means the same email address received multiple distinct emails โ not that a failed delivery was retried automatically.
Deleting logs
To remove log data for a webhook, use the Delete logs action on the webhook's settings page. This removes all log entries for that webhook at once โ there is no per-entry deletion.
Privacy model
Message Logs store only metadata. The bodies of your emails, attachment content, and your endpoint's HTTP response body are never stored โ only the fields listed in the detail view above. This means you can leave logging enabled indefinitely on a shared or staging environment without accumulating sensitive content. For the full picture of what the service stores, see Privacy and Data Retention.
Next steps
- If a delivery fails and you need to re-trigger it, send the original email again โ there is no replay function in the logs UI.
- To lock down your endpoint so that only email-webhook can call it, see How to Authenticate Your Webhook Endpoint.
- To restrict which senders can trigger a webhook at all, see the From email filter on the webhook settings page.