Webhooks
Overview
Section titled “Overview”A generic webhook sends an HTTP POST to any endpoint whenever a monitor’s
status changes. It’s the most flexible way to integrate OKStatus with a tool
that has no dedicated channel — and it’s available on every plan, Free
included.
- Go to Alerting → Channels → Add a channel → Webhook.
- Enter the destination URL.
- Optionally set a secret — it is sent back to you on every call so you can reject requests that don’t carry it.
- Click Test, then attach the channel to your monitors.
The URL must be publicly resolvable: an address that resolves to a private or reserved IP is refused, both when saving the channel and again at send time.
Payload
Section titled “Payload”{ "event": "monitor.down", "monitor": { "name": "Main website", "url": "https://example.com" }, "region": "fr-dc3", "timestamp": "2026-09-09T14:30:00.000Z"}The payload is deliberately small and stable. Anything more — HTTP code, latency, uptime — is one authenticated call away on the REST API, keyed by the monitor’s name or URL.
Available events
Section titled “Available events”event | Sent when |
|---|---|
monitor.down | The monitor is confirmed down |
monitor.degraded | Partial outage, slow response, or a redirect mismatch |
monitor.up | The monitor recovered |
monitor.paused | The monitor was paused |
There is no incident.* event: incidents are something you write, not something
the engine detects. Read or create them through the
Incidents API.
Security
Section titled “Security”If you set a secret on the channel, every request carries it verbatim in an
X-Webhook-Secret header. Compare it against your own copy and drop the
request when it doesn’t match.
A non-2xx response marks the notification as failed on the alert, visible as a ✗ next to the channel in the Alerts log. OKStatus does not retry the call.