What counts as delivered
- Your endpoint answers with any 2xx status within 10 seconds. The body of your answer is ignored.
- Anything else is a failed attempt: another status, no answer within 10 seconds, a connection or TLS error, or a host that resolves to a private address.
- Redirects are not followed. A
301,302,307or308is a failed attempt. Paste the address the redirect leads to instead.
The retry schedule
An event is tried up to 8 times. The wait before each retry triples, up to an hour:
If attempt 8 fails, Runcrate gives up on that event for that endpoint. The times are when an attempt becomes due; it can start a little later.
Every attempt sends the same event: the same
id and the same body. Each one is signed again, so t in Runcrate-Signature changes. Because a retry can arrive after your server already handled the event (for example when your answer was slower than 10 seconds), drop any event whose id you have already processed.
Each attempt carries a Runcrate-Delivery header. Use it to match a request in your own logs to a row in the delivery log.
Events are sent independently, so they can arrive out of order, especially around retries. Order them by created_at, not by arrival.
The delivery log
In Settings > Webhooks, select Deliveries, or View deliveries in an endpoint’s menu. Filter by:- Endpoint: one endpoint, or All endpoints.
- Event: one event type, or All events.
- Status:
Each row shows the event, the endpoint, the status, the HTTP status code, how long the attempt took, which attempt it was, and for a failure one sentence about what went wrong, such as “No answer within 10 seconds. Answer with a 2xx first and do slow work after.” Open a row to see:
- What was sent: the request body.
- What came back: the first 2 KB of your endpoint’s answer, with control characters removed (tabs and newlines are kept).
Redeliver
Open a delivery and select Redeliver to send that event to that endpoint again. Use it after you fix your endpoint, or to replay an event your server lost. A redelivery is the same event, with the sameid and body, signed with the endpoint’s current secret. It gets a new Runcrate-Delivery id, so you can tell it apart in your logs.
- Only owners and admins can redeliver.
- The endpoint must be on.
- While another delivery of the same event to that endpoint is still being tried (Sending or Retrying), Redeliver is refused (HTTP 409). Wait for it to finish.
- Each person can redeliver 10 times per 10 minutes, and a workspace 30 times per 10 minutes.
Automatic turn-off
Runcrate turns an endpoint off when either is true:- It has been failing for 3 days with no success, and with at least 10 failed attempts in that time. A run of failures ends after 12 hours with no failed attempt, so an endpoint that fails only now and then is not turned off.
- It has had 20 events in a row given up on (each failed all 8 attempts).
- Nothing more is sent to it. Its row shows Disabled: kept failing.
- Owners and admins get an email.
- A
webhook.disabledevent goes to your other endpoints that subscribe to it, so a broken endpoint can be reported somewhere that works.
Turning it back on
- Fix what the delivery log says is wrong.
- Select Send a test event from the endpoint’s menu and check that it lands.
- Switch the endpoint back on with the switch on its row.