# Webhook deliveries are failing

## Symptom

Your system receives no (or no longer all) webhook events. The delivery log shows failed deliveries, or the endpoint was paused automatically.

Setup basics live under [Set up webhooks](/help/howto/webhooks); the technical reference including signature verification under [Webhook reference](/api/webhooks).

---

## Step 1: Read the delivery log

Open **Settings > Webhooks** and then the endpoint's detail page. The delivery log shows the status, your server's HTTP response code and an excerpt of the response for each delivery. This reveals almost every cause:

- **Timeout or connection error:** your server was unreachable or answered too slowly.
- **HTTP 4xx:** your server rejects the request. Often a failed signature check (step 3), a wrong path (404) or authentication blocking the webhook (401/403).
- **HTTP 5xx:** your server accepts the request but crashes during processing.

---

## Step 2: Check the endpoint

Your endpoint must be reachable over **HTTPS**, accept POST requests and **answer quickly with a 2xx status**. Best practice: accept the event immediately, acknowledge with 2xx and do the actual processing afterwards in the background. Long processing before the response leads to timeouts that count as failures.

Use the **test event** on the detail page to check reachability and signature without waiting for a real event.

---

## Step 3: Fix signature errors

If your server rejects deliveries because of an invalid signature, the stored secret does not match the endpoint. Typical triggers: the secret was not (fully) copied when the endpoint was created, an old secret after a rotation, or the receiver verifies against a modified instead of the raw request body.

How to get back to a clean state:

<Steps>
  <Step title="Rotate the secret">
    On the endpoint detail page you can rotate the signing secret. The new secret (format `whsec_...`) is shown exactly once.
  </Step>
  <Step title="Update the receiver">
    Store the new secret in your receiver's configuration and make sure verification runs over the unmodified request body.
  </Step>
  <Step title="Send a test event">
    A test event confirms that verification passes again.
  </Step>
</Steps>

Details on the signature scheme (Standard Webhooks, HMAC-SHA256): [Webhook reference](/api/webhooks).

---

## Retries and automatic pause

You do not have to rescue failed deliveries immediately:

- After a failure the platform retries the delivery automatically on a fixed schedule with growing intervals (after 1 minute, then 5, 30, 120 and finally 720 minutes).
- If **15 deliveries fail in a row**, the endpoint is paused automatically so your log does not fill up endlessly. Fix the cause and re-enable the endpoint on the detail page.
- You can manually **redeliver** individual deliveries on the detail page, for example after your server is back up.

---

## Known causes

| Cause | Symptom | Solution |
|---|---|---|
| Server unreachable | Timeout/connection error in the log | Check reachability and firewall |
| Processing before the response | Sporadic timeouts | Acknowledge with 2xx first, then process |
| Wrong secret | 4xx, receiver reports signature error | Rotate the secret and store it again |
| Verifying a modified body | Signature error despite correct secret | Verify the raw request body |
| Endpoint paused | No new deliveries | Fix the cause, re-enable the endpoint |
| Missing permission | Webhook management not visible | Ask an admin for access |

Managing webhooks requires the corresponding permission (owner and admins by default).
