Retries and redelivery
yggy delivers each event to your endpoint over HTTPS and retries failures on a fixed schedule. This page covers what your endpoint should answer, how retries and auto-disable work, the delivery guarantees you get, and how to send test events and redeliver. To receive events, set up an endpoint first.
Respond, retries and auto-disable
Section titled “Respond, retries and auto-disable”- Answer with any
2xxstatus within 10 seconds. yggy reads at most 4 KB of your response and ignores it. Do slow work after you answer. - Redirects count as failures and are not followed.
- yggy tries each delivery up to 8 times. After the first attempt it waits about 1 minute, 5 minutes, 15 minutes, 1 hour, 3 hours, 6 hours and 12 hours, so the last attempt comes about 22 hours after the event. Each wait varies by up to 10%.
- Answering
410 Gonestops that delivery and disables the endpoint. - If a delivery fails after the endpoint has been failing for more than 3 days, yggy disables the endpoint and cancels its waiting deliveries. An endpoint that gets few events can therefore fail for longer than 3 days before it is disabled. Developers → Webhooks shows the failures; enable the endpoint again once it works.
Delivery guarantees
Section titled “Delivery guarantees”- At least once. The same event can arrive more than once, for example after a retry or a redelivery. Use the envelope
id(oryggy-event-id) to ignore duplicates. - No ordering. Events can arrive in a different order than they happened. Use
created_atand read the current state from the API when order matters. graph.entities_changedcan repeat ids from an earlier event; see Graph changes.
Test and redeliver
Section titled “Test and redeliver”- Send test event sends a
webhook.testevent with emptydatato the endpoint, whatever events it subscribes to. You can send 10 per minute per endpoint. A disabled endpoint must be enabled first. - Redeliver on a delivery sends the same payload again with a fresh signature. It is available once the original delivery has finished; while that delivery is still waiting, retrying or sending, redeliver is refused with a
409and you can try again after it finishes. You can redeliver 10 times per minute per endpoint. Delivery history is kept for 30 days. - Test events and redeliveries also share a limit of 60 per minute for the whole organization. Over any of these limits the API answers
429with the codeRATE_LIMITED; wait a minute and try again.
On self-hosted installations without a queue service, retries can start up to a minute later than the schedule above.