Retries
How Notix retries a failed webhook call, and when it turns a webhook off.
When your endpoint does not answer with a 2xx status, Notix tries the call again. A short outage on your side does not lose events.
What counts as a failure
A call fails when your endpoint:
- answers with any status outside 200 to 299
- takes longer than 10 seconds to answer
- cannot be reached, or its hostname now points at a private address
- answers with a redirect (3xx). Notix does not follow webhook redirects, so use the final URL.
The retry schedule
Each call gets up to 6 attempts. The wait doubles after each failed attempt.
| Attempt | When |
|---|---|
| 1 | At once |
| 2 | About 5 seconds after attempt 1 |
| 3 | About 10 seconds after attempt 2 |
| 4 | About 20 seconds after attempt 3 |
| 5 | About 40 seconds after attempt 4 |
| 6 | About 80 seconds after attempt 5 |
A call that fails all 6 attempts is marked Failed, about two and a half minutes after its first try. A retry carries the header X-Notix-Retry: true, and the body's attempt field says which attempt it is. The event id stays the same on every attempt, so you can skip one you already handled.
When Notix turns a webhook off
If 30 calls in a row fail all their attempts, Notix turns the webhook off so it stops failing. Its status becomes AUTO_DISABLED. A successful delivery resets the count to zero.
While a webhook is paused or turned off, new events for it are not sent. Their calls show as Discarded in the delivery log.
To turn it back on, fix your endpoint, open the webhook, press Actions, then Re-enable. With the API, call Pause or resume a webhook with "status": "ACTIVE". Turning it back on also clears the failure count.


Send a call again
You can send a failed or discarded call again, with the same event data, to the webhook's saved URL. It starts a fresh set of 6 attempts.
- In the console: open the webhook, select the call in the delivery log, and press Retry.
- With the API: call Retry a webhook call. The answer is 202. A call that was delivered, or is still being delivered, answers 409
CONFLICT.
curl -X POST https://app.usenotix.dev/api/v1/webhooks/calls/call_8k2j4h1p/retry \
-H "Authorization: Bearer $NOTIX_API_KEY"
import { Notix } from "notix-js";
const notix = new Notix(process.env.NOTIX_API_KEY);
const { error } = await notix.webhookEndpoints.retryCall("call_8k2j4h1p");
if (error) throw new Error(error.message);
A team can retry 30 calls a minute through the API. Calls are kept for 30 days.
Find the failures
List webhook calls with status=FAILED lists the calls that ran out of attempts. Read one with Get a webhook call to see each attempt's status code, how long it took and the first 2 KB of your endpoint's answer.
curl "https://app.usenotix.dev/api/v1/webhooks/calls?status=FAILED" \
-H "Authorization: Bearer $NOTIX_API_KEY"