Skip to main content
Junction attempts to deliver each webhook message based on a retry schedule with exponential backoff.

The schedule

Delivery Schedule

Each message is retried according to the following fixed schedule after a failed attempt:
  1. Immediately
  2. 5 seconds
  3. 5 minutes
  4. 30 minutes
  5. 2 hours
  6. 5 hours
  7. 10 hours
  8. After an additional 10 hours
Notes:
  • Retries always occur in the order listed above, with each period starting only after the previous attempt fails.
  • If an endpoint is removed or disabled, further delivery attempts to that endpoint will be stopped.
  • Example: If a message fails three times before eventually succeeding, it will be delivered roughly 35 minutes and 5 seconds after the initial attempt (Immediate + 5 seconds + 5 minutes + 30 minutes).

Indicating successful delivery

The way to indicate that a webhook has been processed is by returning a 2xx (status code 200-299) response to the webhook message within a reasonable time-frame (15s ). Any other status code, including 3xx redirects are treated as failures.

Failed delivery handling

After the conclusion of the above attempts the message will be marked as Failed for this endpoint, and you will get a webhook of type message.attempt.exhausted notifying you of this error.

Disabling failing endpoints

If all attempts to a specific endpoint fail for a period of 5 days, the endpoint will be disabled. The clock only starts after multiple deliveries failed within a 24 hour span, with at least 12 hours difference between the first and the last failure.

Manual retries

You can also use the webhook portal in the dashboard to manually retry each message at any time, or automatically retry (“Recover”) all failed messages starting from a given date.
I