← Back to blog

Generic webhook alerts are live — one feature, infinite integrations

Most monitoring tools ship integrations one at a time. A Slack integration. Then a PagerDuty integration. Then an Opsgenie integration. Each one is its own feature announcement, its own settings page, its own authentication dance. And if you use something that isn't on the list, you wait.

We took a different approach.

Today we shipped generic webhook alerts in Observare. It's a single alert channel type — you give us a URL, we POST a structured JSON payload to it every time one of your monitors fires. Down, recovered, flapping, SSL expiring, heartbeat missed — all of it, to any endpoint you control.

That one feature connects Observare to everything.

PagerDuty? Point the webhook at their Events API. Opsgenie? Same. Slack? Use an incoming webhook URL. Discord? Same pattern. n8n, Zapier, Make? They all accept webhook triggers. Your own internal alerting pipeline? Just give us the URL.

We didn't build ten integrations. We built one that works with all of them.

What the payload looks like

Every webhook alert arrives as a JSON POST with a structured payload:

{
  "event":        "monitor.down",
  "timestamp":    "2026-04-12T14:30:00.000Z",
  "monitor_name": "My Website",
  "monitor_type": "uptime",
  "subject":      "[DOWN] My Website — Observare",
  "message":      "[Observare] DOWN: My Website. timeout.",
  "details": {
    "url":           "https://example.com",
    "error_type":    "timeout",
    "error_message": "Request timed out after 30s",
    "started_at":    "2026-04-12T14:29:30.000Z"
  }
}

The event field tells you exactly what happened. 15 event types across all five monitor categories — uptime, SSL, port, cron heartbeat, and Stripe webhook signature failures. The details object carries event-specific data: recovery events include downtime duration, SSL events include days remaining and issuer, port events include the hostname and protocol.

The message field is a short human-readable summary you can forward directly to a chat channel or pager without any transformation.

Signing for security

If you set a signing secret on the channel, every request includes an X-Observare-Signature header — HMAC-SHA256 of the raw JSON body, same pattern as Stripe webhook signatures. Your receiver can verify that the payload genuinely came from Observare and wasn't spoofed.

Why this matters more than individual integrations

Individual integrations are maintenance liabilities. Each one has its own auth flow, its own API version, its own breaking changes, its own rate limits. Every time Slack ships a new API or PagerDuty changes their event format, the integration breaks and someone has to fix it.

A generic webhook puts you in control. You decide how alerts reach your stack. If you switch from PagerDuty to Opsgenie next month, you change the URL in Observare — you don't wait for us to build a new integration.

For a £5/month bundled monitoring tool, that's the right trade-off. We're not trying to replace your ops stack. We're trying to fit into it.

How to set it up

Head to Alert Channels in the dashboard, click Add Channel, pick Webhook, enter your URL and an optional signing secret. The channel is live immediately — no verification step, no waiting. Assign it to any monitor the same way you'd assign an email or SMS channel.

There's an info button on each webhook channel that shows you the exact payload format and all 15 event types, so you can wire up your receiver without guessing.

Webhook alerts are included in the standard £5/month subscription alongside email and SMS. No add-on, no per-webhook pricing, no event caps.

If you're interested in trying Observare, we're in early access right now — reach out via the contact page and we'll get you set up.

← Back to all posts