Webhook Channel
Webhook Alert Channel
The webhook channel lets LoadFocus send an HTTP POST with a JSON body to any URL you control whenever a monitored check changes state. It is the most flexible alert channel: anything that accepts an inbound JSON webhook — PagerDuty Events API, Opsgenie, Zapier, n8n, Make, or your own service — can receive LoadFocus alerts.
Creating a webhook channel
- Go to Alert Settings and click + New Alert Channel.
- Choose Webhook.
- Give it a name (shown in the channel list) and paste the HTTPS URL that should receive the POST.
- Click Save Configuration, then enable the channel on any check and pick which events it should receive with the per-channel routing pills.
When LoadFocus calls your webhook
LoadFocus POSTs to your URL on these events:
| Event | event value | When it fires |
|---|---|---|
| Check failed | check.failed | A check transitions into the failed state (assertion failed, error, or timeout). |
| Check recovered | check.recovered | A previously-failed check passes again. |
| Check degraded | check.degraded | Response time crosses the degraded threshold without failing. |
| SSL expiry | ssl.expiry | 14, 7 and 3 days before a monitored HTTPS certificate expires, and on the expiry day. |
| Test | test | You click the Test button next to the channel. |
Which of these reach a given channel is controlled by the Fail / Recover / Degraded / SSL pills under that channel on the check's edit page. All events are enabled by default.
Payload
The POST body is application/json:
{"source": "loadfocus","event": "check.failed","check": {"id": "75be9e45e858177eea4a18bbdc765472","name": "Designerbox","url": "https://designerbox.ai"},"status": "failed","location": "us-east-1","timestamp": "2026-06-07T12:00:00.000Z"}
Field reference:
- source — always
loadfocus. Use it to recognise the sender. - event — one of
check.failed,check.recovered,check.degraded,ssl.expiry,test. - check.id / check.name / check.url — the monitor that triggered the alert.
- status — the check status at send time (
failed,passed,degraded, or null for SSL/test). - location — the AWS region the check ran from.
- timestamp — ISO-8601 UTC time of the event.
SSL expiry events add a details object:
{"source": "loadfocus","event": "ssl.expiry","check": { "id": "...", "name": "...", "url": "https://..." },"status": null,"location": null,"timestamp": "2026-06-07T12:00:00.000Z","details": { "daysRemaining": 7, "validTo": "Aug 29 23:59:59 2026 GMT" }}
Security and requirements
- HTTPS only. Webhook URLs must start with
https://. PlainhttpURLs are rejected. - Private addresses are blocked. To prevent server-side request forgery, LoadFocus resolves your hostname and refuses to call private, loopback, link-local or carrier-grade-NAT addresses (for example
10.0.0.0/8,127.0.0.1,169.254.0.0/16,192.168.0.0/16). Your endpoint must be reachable on the public internet. - No redirects. LoadFocus does not follow HTTP redirects on webhook calls — point the channel at the final URL.
- Timeout. Each call times out after 10 seconds. There is no automatic retry, so your receiver should accept and queue the payload quickly.
- Verify it works. Use the Test button to send a
testevent before relying on the channel. A free service like webhook.site is handy for inspecting the exact payload.
Integration examples
- PagerDuty — point the channel at your Events API v2 integration URL and route only
check.failedto it (turn off the Recover/Degraded/SSL pills) so it opens incidents on failure. - Opsgenie — use an inbound API integration URL; map
check.failedto alert-create andcheck.recoveredto alert-close in Opsgenie. - Zapier / Make / n8n — start a workflow from a "Catch Hook" trigger and branch on the
eventfield to post to chat, create tickets, or update a status page. - Your own service — accept the POST, check
source === "loadfocus", and act onevent.
Related
- Alert Channels — overview of all channel types and per-channel event routing.