Webhook timeout: why it happens and how to fix it
A timeout means your handler took too long and the provider stopped waiting. The fix is almost always to acknowledge fast and process async.
A webhook timeout means your endpoint did not return 200 before the provider’s deadline (often just a few seconds). The provider gives up, marks the delivery
failed, and retries later — even though your handler may have finished the work moments after.
Why it happens
- The handler does the real work inline — writing to the database, calling other APIs, sending email — before responding.
- A slow or hanging downstream dependency blocks the response.
- Cold starts on serverless platforms push the first response past the deadline.
The fix: acknowledge fast, process async
Do the minimum to accept the event — verify the signature, persist the raw payload — then return 2xx immediately and process the rest in a background job
or queue. The provider only needs to know you received it.
Confirm it in HookWatch
A timed-out delivery shows no response status (the connection was cut), with timing on each attempt. That timing tells a slow handler from a dead one. See how to debug a failed webhook and webhook debugging.
Keep reading
Start debugging your webhooks.
Point one endpoint at HookWatch, capture a failure, and replay it once it’s fixed. Free during beta.