01Endpoint management error codes
| Code | HTTP | Meaning |
|---|
| Forbidden | 403 | The session does not own this store, or the store is inactive/paused. |
| invalid_request | 400 | Invalid input: the name (1–100 chars), the URL shape (HTTPS on 443/8443, max 2048 chars), an unknown event type, an empty subscription, or an attempt to subscribe to ping. |
| endpoint_limit | 409 | The store reached its 10-endpoint limit — pause or delete one. |
| name_taken | 409 | The name is already used within the same store — pick another. |
| rate_limited | 429 | The replay budget (1000/hour) or the test-event budget (10/hour) is exhausted — wait and continue. |
| — | 401 | No dashboard session or it expired — sign in again. |
02Attempt outcomes and fixes
| Outcome | Meaning | Fix |
|---|
| SUCCESS | Your server responded 2xx — the delivery settled. | Nothing to do. |
| NON_2XX | Your server responded with a non-2xx status (3xx after the redirect chain counts too). | Make the receiver respond 2xx as soon as it accepts the request. |
| TIMEOUT | No complete response within 10 seconds. | Respond fast; do the heavy work in the background. |
| TRANSPORT_ERROR | The connection itself failed: DNS, TLS handshake, connection refused or reset. | Check the host is up, its certificate valid, and it is publicly reachable. |
| BLOCKED_URL | The endpoint URL breaks the rules: not HTTPS, a disallowed port, or user:pass@. | Fix the URL in the endpoint settings. |
| BLOCKED_HOST | The hostname resolved to an internal or reserved address. | Use a real public host. |
| REDIRECT_BLOCKED | More than 3 redirect hops, or a hop failed validation. | Point the endpoint at the final URL directly. |
| OVERSIZED_RESPONSE | Your response body exceeded the 64 KB drain cap. | Respond with a short body — the platform never reads it anyway. |
| ABANDONED | A delivery worker abandoned the attempt before reporting its result. | Informational in the attempt history — check the delivery for its current state. |
03Common symptoms and quick fixes
- No deliveries at all? Check the endpoint is active and subscribed to the event type that actually fired, that the event happened after the subscription, and that it appears in the events screen. Events are delivered within seconds — only judge after a full minute of silence.
- Signature always failing? The most common cause is re-serializing JSON before verifying — verify on the raw body first. Also confirm the right secret (this endpoint's whsec_) and your server clock accuracy.
- Many PENDING deliveries? Normal — either awaiting their next attempt per the exponential backoff, or holding a short claim lease that expires within minutes.
- No deliveries for older events? Events are generated only while an active subscribed endpoint exists — there is no backfill.
- An old item missing from the screens? Its retention window passed (14 days for events, 30 for deliveries).
- Want to inspect a payload without waiting for a real event? The "Send test event" button delivers a fully spec-compliant ping within about a minute.
COMPLETE YOUR INTEGRATION