Skip to content

Delivery health & logs

BehaviourToday
Timeout10 seconds. Answer 2xx first, then process
RedirectsPublic HTTP/HTTPS destinations are supported, up to 21 redirects. Every destination is validated
Automatic suspensionDisabled during the compatibility rollout. Failed deliveries remain visible in logs
Retriesmatch.*, fact.* and summary.*: up to 6 attempts with 30 seconds of retry delays. Other events: up to 3 attempts with 1 minute of retry delays
Orderingmatch.*, fact.* and summary.* for one match are sent in order, one at a time. A retried delivery can arrive after a newer event. Across matches there is no guarantee
DeliveryAt least once. A duplicate is normal, a lost event needs every attempt to fail
IdempotencyUse (entity, data.id, date) as the deduplication key

Redirects must remain on public HTTP/HTTPS destinations. Private-network destinations are rejected. Use 307 or 308 to preserve the POST method and body. Cross-host redirects do not retain Basic Auth credentials.

LIGR retries a delivery when your endpoint sends no answer, or answers 408, 429 or any 5xx. LIGR does not retry a 2xx, or any other 4xx. A 4xx means the request itself is wrong for your endpoint, and a repeat carries the same bytes.

The schedule depends on the event. match.*, fact.* and summary.* events are delivered in order per match, one at a time, so a failing endpoint must not hold a match for long. Other events, team.* and competition.*, have no order to keep and wait longer.

AttemptMatch events: wait before itOther events: wait before it
1NoneNone
2None15 seconds
32 seconds45 seconds
44 seconds—
58 seconds—
616 seconds—

The waits add up to 30 seconds for a match event and 1 minute for any other event. Each attempt also waits up to 10 seconds for your answer. An event that fails every attempt is lost. Retries cover a restart or a deploy on your side, not an outage. After a longer outage, read the entities you track once from the REST API and continue from the webhooks.

Five rules follow from retries.

  • Delivery is at least once. A retry after a lost answer, or a worker that restarts mid-delivery, sends an event you already processed. Answer 2xx and skip it.
  • A retry is the same event. date is the same on every attempt of one event, so (entity, data.id, date) still deduplicates it.
  • A retry carries the entity as it is at that moment. The payload is read again for every attempt. Treat every delivery as the latest state of the entity, not as a diff.
  • A retry can arrive out of order. A retry goes to the back of the match’s queue, so events for the same match keep flowing while it waits. Compare date, or updatedAt on the entity, and ignore an older delivery.
  • One event counts once towards health. Each attempt is one row in the log. Only the final failed attempt of an event adds one consecutive failure. One lost event cannot move an endpoint to failing on its own.

The dashboard keeps the newest 50 attempts per webhook. Open Developers → Webhooks, open the webhook, and select Event Logs. Each row is one attempt. It shows the status, the response body, the payload and the recorded health.

Status in the logMeaning
200–299Your endpoint accepted the delivery
300–599The request ended without a successful 2xx response
0Your endpoint sent no response. It timed out, refused the connection or failed DNS
-500LIGR failed before it sent the request

LIGR records the result of every delivery and shows one health state per webhook. A broken endpoint remains visible as degraded or failing; failures do not automatically suspend delivery during this rollout. LIGR will email affected customers with an effective date before enabling stricter delivery enforcement.

StateMeaningWhat to do
unknownNo delivery attempted yetChange something in a subscribed competition
healthyThe last delivery succeededNothing
degraded1 to 4 consecutive failures, or the last result was a failureRead your endpoint logs. Deliveries continue
failing5 or more consecutive failuresInvestigate the failures. Deliveries continue
suspendedDelivery was already suspendedFix the endpoint, then select Re-enable in the dashboard. LIGR keeps the history
  1. Answer 2xx in under 10 seconds. Queue the work.
  2. Return 2xx for an event you already processed. A duplicate is not an error.
  3. Alert on your own 5xx rate. LIGR does not alert you.