🪝

Uptrue + Signed Webhooks — Wire Alerts Into Anything

Receive every Uptrue alert as a JSON POST to your endpoint, signed with HMAC-SHA256. Pipe into PagerDuty, Opsgenie, your own incident management, or anywhere else.

Start Monitoring Free← All Integrations

How it works

When an incident opens or resolves, Uptrue POSTs a JSON payload to the webhook URL you configure. The body is signed with HMAC-SHA256 using a per-channel secret — your endpoint should verify the X-Uptrue-Signature header before trusting the payload.

The payload includes the incident metadata (id, title, status, severity, started_at, resolved_at) and the monitor metadata (id, name, type, target). Both incident-opened and incident-resolved events are sent to the same webhook URL with different event values, so a single endpoint can handle the full lifecycle.

Setup in 4 steps

  1. 1In Uptrue, open Dashboard → Alerts → New Channel, pick "Webhook" as the type.
  2. 2Paste your endpoint URL. Optionally provide a webhook secret — if set, every POST is signed with X-Uptrue-Signature: sha256=<hex>.
  3. 3Save the channel. The first test request fires immediately — verify your endpoint receives it and that signature verification passes.
  4. 4Attach the channel to one or more monitors. Both incident-opened and incident-resolved events are POSTed to the same URL.

What you get

  • JSON POST with full incident and monitor metadata
  • HMAC-SHA256 signature in X-Uptrue-Signature header (when secret is set)
  • User-Agent: Uptrue-Webhook/1.0 for easy filtering at your end
  • Both incident.created and incident.resolved events on the same URL
  • 10-second timeout — your endpoint should ack quickly and process async

Payload schema

POST /your-endpoint HTTP/1.1
Content-Type: application/json
User-Agent: Uptrue-Webhook/1.0
X-Uptrue-Signature: sha256=<hex digest of body>

{
  "event": "incident.created",
  "incident": {
    "id": "uuid",
    "title": "site.example.com is down",
    "status": "open",
    "severity": "critical",
    "started_at": "2026-05-03T12:34:56.000Z",
    "resolved_at": null
  },
  "monitor": {
    "id": "uuid",
    "name": "Production homepage",
    "type": "http",
    "target": "https://site.example.com"
  },
  "timestamp": "2026-05-03T12:34:58.123Z"
}
Ready to wire it up?
Lite plan from £1/month · Free 3-monitor plan also available
Get Started Free →

Monitors that fire Webhook alerts

Every Uptrue monitor type can send to Webhook. Some of the most common:

Want a one-off check first? Run our free Website Health Score or browse all free monitoring tools.

Got questions?

Frequently asked questions

Everything you need to know about Uptrue — no fluff.

Is the webhook integration free?
Webhook channels require a Lite plan or higher. The Free plan includes email alerts on 3 monitors. Lite (£1/month or £10/year) unlocks signed webhooks, Slack, Microsoft Teams, and Telegram.
Compute HMAC-SHA256 over the raw request body using the secret you set when creating the channel, hex-encode the digest, and compare it to the value in the header (after stripping the "sha256=" prefix). Use a constant-time comparison to defend against timing attacks. Most languages have a one-line implementation.
Yes. PagerDuty has a generic webhook integration; Opsgenie too. Map our event/incident/monitor fields to their expected schema (often a small Cloudflare Worker, Lambda, or n8n workflow does this in a few lines). Native PagerDuty/Opsgenie integrations are on the V1.5 roadmap.
Top-level: event ("incident.created" or "incident.resolved"), incident object, monitor object, timestamp. The full sample is shown above. The schema is stable — we will version it (v2 etc.) before making any breaking changes, with notice.
Uptrue applies a 10-second timeout. Your endpoint should accept the request quickly and process the work asynchronously — for example, queue the alert and return 200 immediately. A slow endpoint will record the dispatch as failed.
The alert is recorded as failed and the dispatch error is logged in your alerts table. Uptrue does not currently retry — pair the webhook with at least one other channel (email, Slack, Telegram) on critical infrastructure for redundancy.
Related Integrations
💬Slack👥Microsoft Teams✈️Telegram
🪝

Wire Webhook into your monitoring today

Free 3-monitor plan to start. Lite (£1/month) unlocks Webhook and every other channel.

Start Monitoring Free