Webhook logs
Every delivery Webhooks Pro makes is persisted — successful ones, HTTP errors, network failures, and replays. The Webhook Logs page is where admins troubleshoot, replay failures, and audit what was sent.
If anything ever goes wrong with a webhook, this is where you go first.
When to use it
A receiver isn't getting deliveries → check whether they're being sent and how the receiver responded.
A delivery failed → expand the row, read the response, replay if appropriate.
An auditor asks "what did we send to that endpoint?" → search by webhook + date.
You changed a payload template → watch the next few deliveries to confirm the new shape renders correctly.
How it works
Every delivery attempt produces exactly one row, regardless of outcome. Replays produce additional rows linked back to the original via sourceLogId. Rows older than the configured retention window are deleted automatically by the daily prune.
The page at a glance
Stats bar (top)
Four counters, refreshed on every page load:
Counter | Means |
|---|---|
Total | Delivery rows currently retained. |
Success | 2xx + 3xx responses. |
Failed | 4xx + 5xx + Network Error. |
Avg Execution Time | Mean round-trip across visible logs. |
Skipped rows (license-blocked) are deliberately excluded — see the Limits section below.
Filters
Five controls + a date picker + a toggle. Full reference: Filter and search logs.
The table
One row per delivery attempt. Click any row (or its chevron) to expand a lazy-loaded detail panel with the full request and response. Full walkthrough: Inspect a delivery.
Replay
A Run again button on each eligible row, plus a bulk-action bar when you select multiple. Full reference: Replay a delivery (Run again).
Sub-pages
Status colour legend
Lozenge | Meaning |
|---|---|
Green 2xx | Success — receiver accepted the body. |
Blue 3xx | Redirect. |
Amber 4xx | Client error — usually wrong body, missing auth, or a config issue on the webhook side. |
Red 5xx | Server error — receiver-side. |
Red Network Error ( | No HTTP response — timeout, DNS failure, refused connection. |
Neutral Skipped — license … | Webhooks Pro intentionally did not attempt the request because the licence state doesn't allow delivery. |
The split lines up with the Run again button filter on Tenant settings → Webhooks — that setting controls which categories show the replay button.
What gets persisted
Stored | Not stored |
|---|---|
URL, HTTP method, query params, user-defined headers | System headers ( |
Request body (rendered) | The raw event before template render |
HTTP status code (or |
|
Response body and headers |
|
Network error message (when applicable) |
|
Initiator accountId, event type, execution time |
|
|
|
Bodies above a small threshold are gzipped before storage; the log viewer transparently decompresses for display.
Limits and gotchas
Skippedrows are excluded from Stats and from the per-webhook auto-disable failure counter. An installation-wide licence problem doesn't penalise individual webhooks. See Subscription states and SEN.Retention is tenant-wide, not per-webhook. Default 14 days. See Log retention.
JQL-rejected events leave no log row. If you expect a delivery and there's no row at all, your JQL likely didn't match. See JQL filter didn't match.
Coalesced events leave one row, not many. Debounce collapses bursts before they reach the log. See Debounce and coalescing.
Replays use current Jira state, not the snapshot from the original delivery. The replayed payload reflects the issue as it is now.
System headers aren't in the row detail. Only your own headers are persisted. The system headers Webhooks Pro adds (
X-Webhook-Event,X-Webhook-Timestamp,X-Webhook-Agent,Content-Typedefault) are deterministic and not stored.
Common diagnostic flows
Symptom | Where to start |
|---|---|
No row appears for an event you expected | JQL filter didn't match → check JQL → check webhook is enabled → check Events tab |
Status | Status code 0 and network errors |
HMAC signature rejected by receiver | HMAC signature mismatch on the receiver |
Receiver returns | Open the row → Body. Compare with what the receiver expects. Adjust template. |
Webhook auto-disabled | Re-enable an auto-disabled webhook |
For the broader playbook: Diagnose a failing delivery.
Related
Webhooks — what produces these deliveries.
Tenant settings → Run-again ranges, Auto-disable, Request timeout, Log retention.
Delivery queue — what's in flight (pre-delivery), as opposed to what's been delivered (logs).
Diagnose a failing delivery — full diagnostic walkthrough.
Subscription states and SEN — explains the Skipped lozenge.