Webhook Notification Retry Rules
Last updated
Was this helpful?
When a webhook notification fails to deliver, the system will automatically retry based on the following rules.
Retries use an exponential backoff strategy. The delay between each retry attempt increases as follows:
1
Immediate
2
1 minute
3
2 minutes
4
5 minutes
5
10 minutes
6
15 minutes
7
30 minutes
8
1 hour
9
6 hours
10+
1 day
The maximum number of retry attempts is controlled by the system setting System.webhookAttempts. This applies to all subscriptions, including those with "Do Not Unsubscribe" enabled. When the maximum is reached, the individual notification stops retrying, but the subscription remains active for new notifications.
Notifications that fail with the following HTTP status codes are never retried, as these indicate permanent errors that will not resolve on their own:
400
Bad Request
401
Unauthorized
403
Forbidden
404
Not Found
405
Method Not Allowed
413
Payload Too Large
422
Unprocessable Entity
All other errors are retried, including:
Connection timeouts (endpoint unreachable)
Server errors (5xx)
Rate limiting (429)
Request timeouts (408)
Conflicts (409)
If a notification fails for a subscription during a retry cycle, all remaining pending notifications for that same subscription are skipped in that cycle. This prevents the system from repeatedly hitting a known failing endpoint. Skipped notifications are not counted as attempts — they will be picked up in the next cycle.
Webhook HTTP calls use configurable timeouts to prevent indefinite blocking:
CTIMEOUT
Connect timeout — maximum time to establish a connection
15 seconds
RTIMEOUT
Read timeout — maximum time to wait for a response
60 seconds
These can be configured via System Preferences.
If a retry cycle takes longer than the timer interval, the next cycle will not start until the current one finishes. This prevents multiple retry cycles from running simultaneously.
Last updated
Was this helpful?
Was this helpful?