We want to make sure you receive all your webhook messages, even if there are temporary issues. That’s why we’ve set up a retry system to resend messages if they don’t get through the first time.

How it works

  1. First attempt:
    When we send a webhook message to your server, we expect an immediate response with a 200 status code. This indicates that you’ve successfully received the message. Your server should return the 200 status code first and then proceed to process the event. Avoid processing the event before returning the 200 response, as this can lead to timeouts and potential webhook deactivation.

  2. If we don’t get a 200 response due to:

    • Your server might be down.
    • There could be network issues.
    • Your server returns an error status code (400 or higher).
  3. Retrying the message:

    We’ll try sending the message three more times if we don’t get the right response. Timing between retries:

    • First retry: We’ll wait 15 seconds after the initial attempt before trying again.
    • Second retry: If needed, we’ll wait another 15 seconds before the third attempt.
    • Third retry: This will be our third and final attempt.
  4. Timeout: We’ll wait a final 15 seconds after the third retry. If we don’t receive a 200 response, the message will be marked as failed, and we’ll start sending the next event. Starting from the first attempt, your server has up to 1 minute to respond with a 200 status.

Failure limits before deactivation:

A webhook subscription will be deactivated if the total number of message delivery failures from subscription creation reaches a threshold depending on your plan tier.

  • Free Plan users: 1 failed message delivery
  • Paid Plan users: 100 failed message deliveries

What you can do

Ensure server availability:

  • Keep your server running smoothly to receive webhook messages without interruption.
  • Implement logging for incoming webhook requests and your server’s responses to help identify any issues quickly.

Design for idempotency:

Set up your webhook handler so it can safely process the same message multiple times without causing errors or unwanted effects. This way, if retries occur, they won’t negatively impact your system.