Understanding Retries

FirmHook automatically retries failed webhook deliveries so you don't have to build retry logic into your infrastructure.


How retries work

When FirmHook forwards an event to your endpoint and the delivery fails, it schedules another attempt using exponential backoff:

AttemptDelay
1 (initial)Immediate
2~30 seconds
3~5 minutes
4~30 minutes
5~2 hours

A delivery is considered failed if:

  • Your endpoint returns a non-2xx HTTP status code
  • Your endpoint does not respond within the configured timeout (default 30 seconds)
  • The connection is refused or times out at the network level

A delivery is considered successful if your endpoint returns any 2xx status code.


Retry limits

Each endpoint has a Max retries setting (0–5, default 5). Once all attempts are exhausted, the event chain for that endpoint is marked dead.

You can change the retry limit per endpoint at any time in Endpoints → Edit.


Event and chain statuses

FirmHook tracks status at two levels:

Event status — the aggregate across all matched endpoints:

StatusMeaning
pendingNot yet processed
processingAt least one delivery in progress
deliveredAll endpoint chains succeeded
partialSome chains succeeded, some failed or dead
deadAll chains exhausted with no successful delivery

Chain status — per-endpoint delivery outcome:

StatusMeaning
pendingQueued, not yet attempted
deliveredEndpoint returned 2xx
retryingA previous attempt failed; next attempt scheduled
deadAll attempts exhausted without success

Viewing retry history

Click any event in the Events list to open the event detail page. Each matched endpoint has a timeline showing every delivery attempt: timestamp, HTTP status, response body, and — when available — an AI-generated explanation of the failure.


Manual replay

You can manually re-deliver any event from the event detail page:

  • Replay all — re-delivers to all matched endpoints
  • Replay failed — re-delivers only to endpoints with a dead or failed chain

Replays create new delivery attempts and are counted against your plan's event quota.


Disabling retries

Set Max retries to 0 on an endpoint to disable automatic retries entirely. FirmHook will attempt delivery once and mark the chain dead on failure with no further attempts.


What's next?