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 From address 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 Authorization header 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 localhost URL 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.