Verification
My events all show `unattempted`
My events all show `unattempted`
My events show `failed`
My events show `failed`
wbhk.my rewrites the payload. A failed event is captured but never delivered or
signed.I'm verifying webhook.co's outbound signature myself and it won't match
I'm verifying webhook.co's outbound signature myself and it won't match
== instead of a constant-time compare. Verify over the exact bytes you
received and compare with crypto.timingSafeEqual / hmac.compare_digest. The full snippet is on
sign outbound webhooks.A provider that signs the URL (Square, Twilio, HubSpot) won't verify
A provider that signs the URL (Square, Twilio, HubSpot) won't verify
Delivery
A delivery is `blocked`
A delivery is `blocked`
blocked is terminal — it’s never retried. Point the destination at a publicly reachable HTTPS URL.Deliveries are `failed` or `dead`
Deliveries are `failed` or `dead`
failed is a retryable error (a non-2xx, a timeout); dead means the retry schedule exhausted all 8 attempts over ~32h. Read the error on the delivery with wbhk deliveries get <id>, fix the receiver, then replay the missed events.A destination stopped receiving entirely
A destination stopped receiving entirely
wbhk replay-destinations enable <id> once the receiver is fixed — owed deliveries resume on the next drain.My agent isn't waking on new webhooks
My agent isn't waking on new webhooks
triggers.wait is a short-poll, not a push — it returns immediately with whatever’s past your cursor. Keep calling it, threading nextCursor; while caughtUp is false, call again promptly. See trigger semantics.Ingestion
My provider says the URL returned 429
My provider says the URL returned 429
429 so a well-behaved sender holds the event and redelivers rather than dropping it — resume the endpoint and the redelivery lands. See ingest URLs.The provider's setup handshake is failing
The provider's setup handshake is failing
verify_token, a Braintree public key. Register the secret the provider
guide calls for, then retry the provider’s verification.`revealIngestUrl` returned null
`revealIngestUrl` returned null
Auth
I'm getting 403 FORBIDDEN
I'm getting 403 FORBIDDEN
whoami shows a key’s scopes.Still stuck?
Every error response carries arequestId in the x-request-id header — include it when you reach out, and see errors and status codes for the full taxonomy. For account, billing, and step-by-step help, the help center goes deeper, and get more help has the ways to reach us.