Skip to content

What happens when webhook deliveries fail?

Requires Elite

Every delivery has 10 seconds; after that — or on network errors and non-2xx responses — it’s recorded as failed in the delivery log (status code or error text). There is currently no automatic retry: every event is delivered exactly once (at-most-once). You catch up on missed events via the log plus an API reconciliation; you repeat tests with “Send test”.

  1. Open the delivery log. Administration → Webhooks → select a webhook. The log shows the most recent deliveries with event, success, status code, and, if applicable, an error message (e.g., HTTP 500 or a connection error).

  2. Interpret the errors. HTTP 4xx/5xx = your endpoint responded, but not with 2xx (signature check? a bug? maintenance?). An error message with no status code = your endpoint wasn’t reachable at all (DNS, TLS, timeout after 10 s).

  3. Test again. After fixing the issue, trigger a signed ping event with “Send test” and check the new log entry.

  • Anatomy of a delivery. An event occurs → Notory determines the tenant’s active, subscribed webhooks → POST with signature, 10 s timeout → the result (success, status_code, error) is stored as a log entry. Only a 2xx response counts as a success.
  • At-most-once, no backoff. There is no automatic retry, no backoff queue, and no deactivation after a streak of failures — every delivery is a single attempt. Design your receiver accordingly: small, fast, highly available; do heavy work asynchronously behind it.
  • The trigger never suffers. Deliveries run after the actual action as a background task (best-effort). A dead receiver therefore never slows down or prevents the creation of an asset.
  • Recommended receiver strategy. Respond immediately with 204 (accept first, process later), process idempotently (e.g., keyed on data.id), and after an outage, reconcile the affected time range via the API instead of waiting for a repeat delivery.
  • Retention. The log shows the last 50 deliveries per webhook — for longer-term analysis, keep your own logs on the receiver side.