When a Jira Cloud webhook goes quiet, check four things in order: whether a dynamic webhook expired, whether your receiver failed long enough to be throttled, whether the endpoint meets Jira's requirements, and whether your filter excludes the event.
1. Did a dynamic webhook expire?
Atlassian documents that webhooks registered through the REST API for Connect and OAuth 2.0 apps expire 30 days after creation or after a refresh through the extend-life endpoint, and remain available for up to three months after expiry. If your automation registered a webhook once and never refreshed it, this is the most common cause. Fix: schedule a refresh well inside the 30 days and alert when a refresh fails.
2. Was your receiver failing?
Jira treats only a 200 response as success. It retries on 408, 409, 425, 429, 5xx, connection failures and timeouts, up to five times with randomized back-off of 5 to 15 minutes. If a recipient fails for 30 minutes, Jira limits it to one attempt per webhook until a delivery succeeds. A short outage or a slow deploy can therefore leave you with a gap. Fix: answer fast, queue work, and use the "get failed webhooks" operation to see what was not delivered.
3. Does the endpoint meet requirements?
- HTTPS only, with a certificate from a globally trusted authority.
- At most 5 redirects.
- Port 80 is not allowed. Allowed ports include 443 and 8443.
- Payloads over 25 MB are not delivered.
A certificate that expired overnight will stop delivery silently from your point of view.
4. Does your filter exclude the event?
JQL filtering applies to issue, issue property, worklog, comment and attachment events. Sprint and version events ignore JQL filters. Check the JQL against a sample issue. Also note the documented known issues, such as attachments added in the create dialog not triggering a separate attachment event, though they appear in the issue created payload.
Table of symptoms
| Symptom | Likely cause |
|---|---|
| Worked for about a month, then nothing | Dynamic webhook expired |
| Gap after your deploy | Receiver errors, retries exhausted |
| Never fires for certain issues | JQL filter |
| Never fires at all after a change | Certificate, port or redirect rule |
| Duplicates after recovery | Normal retry, dedupe on the webhook identifier header |
Make it harder to go silent
Add a heartbeat: if no event arrives within a window that is normal for your project, raise an internal alert. Also run a reconciliation poll as described in webhook or polling.
Quick check
How do I detect a duplicate Jira delivery?
Jira documents an identifier header that stays the same across retries. Store it and ignore repeats.
Why did my webhook work for a month and then stop?
If it was registered dynamically, it expires 30 days after creation or last refresh. Refresh it on a schedule.
Safeguard includes compliance and evidence automation, with a free scan at gold.safeguard.sh/scan.
Sources
- Atlassian, Jira Cloud webhooks
Last reviewed: 19 October 2026.