Webhook delivery failed
Webhook delivery failed
Symptom
In the admin UI’s webhook delivery log, a delivery shows Failed with the error webhook_delivery_failed. NovaVMS retries failed deliveries with exponential backoff (1m, 5m, 15m, 1h, 6h) and then gives up.
Likely causes
- Your endpoint returned a non-2xx response.
- Your endpoint took longer than 10 seconds to respond. NovaVMS closes the connection at the timeout.
- The TLS handshake failed — expired cert, unknown CA, or SNI mismatch.
- Your receiver’s signature-verification logic rejected the payload, so you returned a 4xx on purpose.
Fix
If your endpoint returned non-2xx
- Open the delivery log entry in the admin UI. The Response body field shows the first 1 KB your endpoint returned.
- Reproduce locally against the
X-NovaVMS-Signatureheader and body shown in the log. - Fix the handler. Return
200 OKwithin 10 seconds. Do the heavy work asynchronously in your own queue.
If the request timed out
NovaVMS waits 10 seconds for a response. If your handler is synchronous and slow:
- Return
202 Acceptedimmediately. - Enqueue the work to your own job queue.
- Process the payload out-of-band.
If TLS failed
- Confirm the cert chain is valid:
curl -vI https://your-endpoint/pathfrom a clean network. NovaVMS uses the system CA bundle — self-signed certs are rejected. - Check the cert has not expired.
- Confirm SNI is correctly configured if you host multiple domains on one IP.
If signature verification failed on your side
- Confirm you are using the shared secret from the webhook’s Signing tab in the admin UI, not the org’s API token.
- Confirm you are computing HMAC-SHA256 over the raw request body, not a re-serialised JSON version. See webhook signing.
- Rotate the secret if you suspect it was leaked.
Verify
- In the admin UI, open the failed delivery and click Replay.
- The replay shows Succeeded with a
200response. - The next live event also delivers successfully — check the top of the log.
If none of this worked
- Collect the
request_idfrom the delivery log entry and include it in a support ticket. - See also: API error code reference.