Customize the HTTP Response of a Webhook Endpoint
Change the HTTP status and JSON body a custom OpenWebhook endpoint returns so you can test provider retries, errors, and accepted responses.
Most webhook testers always answer 200 with a fixed body. That is enough to prove the provider can reach you. It is not enough when you need to see what the provider does after a 401, 409, or 500.
OpenWebhook Pro custom endpoints default to:
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{"ok":true}
You can change both the status and the body, then reset them.
When a custom response matters
Providers treat the HTTP status as the delivery result:
2xx— accepted; they usually stop retrying.4xx— often treated as a permanent client error (behavior varies).5xxor timeouts — typically retried with backoff.
If you are implementing idempotency or a dead-letter queue, you need the provider to actually retry. Point the webhook at a custom URL whose response you control, then watch the retry schedule in the provider dashboard.
Set status and body
- Open the custom endpoint in the dashboard.
- In Reply to webhook senders, set a status between
200and599. - Enter a JSON body. Auto-format pretty-prints it and confirms it parses.
- Save. Reset to default restores
200and{"ok":true}.
The body must be valid JSON. Empty text and plain strings are rejected. Statuses 204, 205, and 304 still send an empty body to the sender even if JSON is stored.
Example for an unauthorized signature:
{
"error": "invalid_signature"
}
with status 401. Example for an accepted async job:
{
"accepted": true,
"id": "job_123"
}
with status 202.
How to verify
curl -i -X POST \
'https://hooks.openwebhook.co/YOUR_SLUG/test' \
-H 'content-type: application/json' \
--data '{"probe":true}'
You should see your status and formatted JSON in the HTTP response, and the original request in the live inspector.
Free UUIDv6 inspector URLs always return the default 200 / {"ok":true}. Custom responses exist only on Pro slugs.