Skip to main content

Delivery behavior

Rewrite considers a delivery successful when your endpoint returns any 2xx response. Retries happen when the endpoint:
  • returns a non-2xx status
  • times out
  • fails at the network layer
The current webhook request timeout is 5 seconds.

Retry schedule

The backend currently uses 5 total attempts: After the last attempt, delivery is permanently failed.

When retries stop

Retries stop when:
  • your endpoint returns 2xx
  • the fifth attempt fails
  • the webhook is deleted or set inactive before the next delivery

Idempotency expectations

Webhook delivery is at-least-once. Your handler should:
  • store processed event ids
  • ignore duplicates safely
  • make downstream writes idempotent

Delivery logs

Use:
  • GET /webhooks/{id}/deliveries to list attempts for a specific webhook
  • GET /deliveries to browse webhook deliveries at project scope
  • GET /logs/{id} to inspect a single delivery log or request log by id
Current retention comes from the project subscription tier:
  • Starter/default: 3 days
  • Pro: 14 days
  • Business: 16 days
  • Enterprise: 1 month