Retry Logic

Retry Logic Overview

If the Encompass Platform is unable to deliver a notification to the registered webhook callback or the callback fails to acknowledge the notification, the Encompass Platform will make other attempts to deliver the notification.
The following situations are considered a failed delivery attempt:
• HTTP status outside the range 200-499.
• A request timeout (30 seconds). Note that if a request time-out occurs, the next retry will occur at the specified interval after the timeout. For example, if the retry interval is 20 seconds and a request times out, the start of the next request will be 35 seconds after the start of the request that timed-out.
• Any connection error such as connection timeout, endpoint unreachable, bad SSL certificate, etc.

📘

HTTP response status within range of 200-499 will not be retried.

Default Retry Logic
By default, the Encompass Platform implements a linear retry policy that will attempt delivery up to three times with a delay of 20 seconds between each retry. If the event is not delivered after three attempts, the notification is discarded.

Retry Logic with Exponential Backoff
The Encompass Platform also supports an exponential back-off policy that increases the resend interval for each failure. This policy allows for a longer retry period while not attempting to deliver the request constantly. When exponential back-off is applied to a subscription, any failed events will automatically retry for 8 hours with an exponential back-off interval.

The table below shows the interval between retry attempts:

Retry AttemptSeconds Since Original Webhook EventTime Since Original Webhook Event
13000:00:30
26000:01:00
312000:02:00
424000:04:00
548000:08:00
696000:16:00
7192000:32:00
8360001:00:00
9720002:00:00
101080003:00:00
111440004:00:00
121800005:00:00
132160006:00:00
142520007:00:00
152880008:00:00

Implement Exponential Back-Off for Webhook Subscriptions

The delivery policy for a webhook subscription is determined by the Subscription API deliveryPolicy parameter.

"deliveryPolicy":{"backoff":"linear | exponential"}

The deliveryPolicy parameter is optional. To implement exponential back-off for a webhook subscription, set the deliveryPolicy back-off parameter to “exponential”. If deliveryPolicy is not provided as input, the default retry logic, "linear", is used.

curl --location --request POST 'https://<API_SERVER>/platform/v1/events/documentOrder' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <Token>' \
--data-raw '{
    { "endpoint": "<clientEndPoint>", "resource": "Loan", "events": ["create", "change", "update" ], "filters":{ "attributes":["/applications/0/borrower/firstName"] }, "deliveryPolicy":{"backoff":"exponential"} }
}'