Skip to main content

How retries work

A delivery attempt fails when DispatchQ gets a non-2xx response, network error, or timeout. If attempts remain, the job returns to pending with next_retry_at.

Backoff formula

backoff_seconds = min(2^attempt * 10, 3600)
attempt is 1-based after each failed attempt.

Backoff table

Failed attemptDelay before next try
120s
240s
380s
4160s
5320s
capped at 3600s

max_attempts

  • Set per job (1 to 100, default 3).
  • Once attempts are exhausted, job becomes failed.

Failure callbacks

If callback_url is set, DispatchQ sends a failure callback with status: failed and last_error when the job reaches terminal failure.

Monitoring retries

Use job reads/listing fields:
  • retries_remaining: attempts left
  • next_retry_in_seconds: countdown to next attempt
  • last_error: most recent failure reason