Skip to content

Webhooks

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.

  1. Go to Alerting → Channels → Add a channel → Webhook.
  2. Enter the destination URL.
  3. Optionally set a secret — it is sent back to you on every call so you can reject requests that don’t carry it.
  4. 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.

{
"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.

eventSent when
monitor.downThe monitor is confirmed down
monitor.degradedPartial outage, slow response, or a redirect mismatch
monitor.upThe monitor recovered
monitor.pausedThe 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.

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.