Webhooks fail to deliver when the endpoint is unreachable or slow, returns a non-2xx, fails signature setup, or the subscription is misconfigured. turgo retries with backoff; the delivery log shows each attempt and the response.
Check the delivery log
Settings → API → Webhooks → your endpoint → Deliveries. Each attempt shows the response code and body. A 4xx/5xx from your server, a timeout, or a connection error tells you exactly where the failure is.
Endpoint requirements
Your endpoint must be reachable over HTTPS, respond 2xx quickly (do heavy work async, ack fast), and handle retries idempotently. Slow endpoints time out and get retried, which can look like duplicates if you don't dedupe on event id.
Signature verification
If you're verifying signatures (see Webhook signature verification) and rejecting events, a mismatch means you're using the wrong signing secret or computing the signature over the wrong payload bytes. Verify against the raw body, not a re-serialized version.
Retries and recovery
turgo retries failed deliveries with exponential backoff (see Retry behavior). Fix the endpoint and pending retries will succeed; for events already exhausted, you can replay from the delivery log. Confirm the subscription is enabled and listening for the right event types.