Skip to content

Webhook Retries

Ttoolab retries webhook deliveries when your endpoint does not return a successful response.

| Setting | Value | | :------ | :---- | | Maximum attempts | 5 | | Delivery timeout | 30 seconds | | Auto-pause threshold | 10 consecutive failures |

After a failed attempt, Ttoolab schedules the next retry with exponential backoff:

| Attempt | Delay before retry | | :------ | :----------------- | | 1 | Immediate | | 2 | 1 minute | | 3 | 5 minutes | | 4 | 15 minutes | | 5 | 1 hour |

After 5 failed attempts, the delivery status is set to failed and no further retries occur for that event.

Your endpoint should:

  • Respond within 30 seconds
  • Return any 2xx HTTP status code to acknowledge success
  • Return non-2xx to trigger a retry

Example successful response:

HTTP/1.1 200 OK
Content-Type: application/json
{"received": true}

| Status | Meaning | | :----- | :------ | | pending | Queued for first delivery | | retrying | Failed, scheduled for retry | | success | Delivered successfully | | failed | All attempts exhausted or webhook disabled |

If a webhook accumulates 10 consecutive failures across deliveries, Ttoolab automatically disables it (enabled = false). Re-enable it in the dashboard after fixing your endpoint.

Connection errors, DNS failures, and request timeouts (after 30s) are treated as failures and trigger retries.

  • Respond quickly with 200 and process the payload asynchronously.
  • Use idempotency keys (X-Ttoolab-Event-Id) to handle duplicate deliveries safely.
  • Monitor your webhook endpoint uptime.
  • Review failed deliveries in the Ttoolab dashboard.