---
title: "How to Get Alerted When Your Website Goes Down (Webhooks, Not Email)"
description: "Email alerts are slow, get filtered, and your code can't act on them. Here's how to get downtime alerts as a webhook you can route anywhere: Slack, SMS, your phone, or an AI agent."
pubDate: "2026-06-30"
canonical: "https://uptimemonitoring.com/blog/get-alerted-when-your-website-goes-down/"
---

*By Lucian, founder of Monitive*

Most uptime tools tell you a site is down by sending you an email. That is fine until you actually need it to work. Email is slow when it matters most, it lands in spam or a Promotions tab on exactly the wrong morning, and your code cannot do anything with it. You cannot route an email to your on-call channel, fan it out to SMS, or have a script react to it. You read it, then you go do the thing by hand.

A webhook fixes all of that. Instead of a message for a human inbox, you get an HTTP POST your systems can act on the instant a monitor changes state. That is the primary alert channel in UptimeMonitoring, and there is no email anywhere in the loop.

Here is how to use it, and how to get the same alert onto your phone, into Slack, or as an SMS without us ever touching email.

## The basic idea: one POST when state changes

Put a webhook on a monitor, and when the monitor flips from up to down (or recovers), we POST a small JSON body to your URL:

```json
{
  "event": "monitor.down",
  "monitor": { "id": 42, "name": "acme-api", "url": "https://api.acme.com" },
  "occurred_at": "2026-06-30T10:00:00Z"
}
```

Recovery sends `monitor.up`. A monitor that keeps bouncing sends `monitor.flapping`. Your endpoint decides what happens next: open an incident, page someone, post to a channel, restart a worker. It is your code, so it is your call.

Two things make this safe to build on:

**It is signed.** Every delivery carries an `X-UptimeMonitoring-Signature` header, an HMAC-SHA256 of the body using your per-webhook secret. Verify it before you trust the payload, so nobody can POST fake "you're down" alerts at your endpoint:

```js
import crypto from "node:crypto";

function verify(rawBody, signature, secret) {
  const expected = crypto
    .createHmac("sha256", secret)
    .update(rawBody)
    .digest("hex");
  return crypto.timingSafeEqual(
    Buffer.from(signature),
    Buffer.from(expected)
  );
}
```

**It retries.** If your endpoint is down or returns a non-2xx when the alert fires, we do not drop it. Delivery retries immediately, then at +5 minutes, then +10. Every attempt is recorded, and you can query the delivery log over the API (or via MCP) to answer "why didn't my webhook fire?" yourself, without opening a support ticket.

## Get it on Slack, Discord, your phone, or SMS

"No email" is not a missing feature, it is a composable one. We hand you the webhook. You choose where it goes, and most destinations are a five-minute recipe:

We publish copy-paste guides for the most common destinations, all built on our open-source [alerts-bridge](/docs/alert-bridge), a tiny webhook relay you deploy to Cloudflare Workers (free tier) in about five minutes:

- **Pushover (bypasses Do Not Disturb):** emergency-priority push that retries every 30 seconds until you acknowledge it. Step by step: [reliable uptime alerts with Pushover](/guides/reliable-alerts/).
- **ntfy:** free push, public or self-hosted, no account needed for public topics. Step by step: [wire Monitive webhooks to ntfy](/guides/reliable-alerts/ntfy-cloudflare/).
- **Slack or Discord:** point the webhook at an incoming-webhook URL, or run it through the same bridge to reshape the body into their message format.
- **SMS:** pipe the webhook through n8n (or any automation tool) into Twilio. Downtime now texts you.
- **GitHub Actions:** trigger a workflow on downtime, so an outage can kick off a rollback or a diagnostic job on its own.

One signal, routed wherever your team already lives. Browse all the [reliable-alerts guides](/guides/reliable-alerts/), and see the [webhook reference](/docs/webhooks) for the exact payload and signature details.

## No code? Two zero-config human channels

Not everything needs a receiver. If you just want to know "is anything down?" without writing a line:

**Browser push.** Click "Enable notifications" in the dashboard once, and you get instant native alerts on desktop and mobile when a monitor flips. No email, no app install, no PII. This is the fastest way for a human to get alerted ([browser push docs](/docs/push-notifications)).

**A feed you can bookmark.** Every account gets a shareable incident feed at `app.uptimemonitoring.com/feed/<token>`, a read-only page you can open on your phone. The same data is served as RSS at `api.uptimemonitoring.com/feed/<token>/rss`, so you can drop it into a Slack RSS integration, a phone RSS reader, IFTTT, or n8n. The token is rotatable from the dashboard if you ever need to revoke a link ([feeds docs](/docs/feeds)).

## Or skip alerts entirely and just ask

Sometimes you do not want to be notified, you want to check, right now, from where you are working. If your editor or agent speaks MCP (Claude, Cursor, ChatGPT), add UptimeMonitoring as an MCP server and ask in plain English:

```text
Is the production monitor healthy right now?
```

The agent calls `assert_monitor_healthy` and tells you. The same check works in a script with a plain `curl` against the API. Push when you want to react, pull when you want to look. Both come from the same monitor.

## The honest limits

We give you the webhook and the building blocks, not a giant integrations marketplace. If you want a one-click "official" Slack app, native SMS billed on your account, public status pages, or signed SLA PDFs, that is not this product, and a couple of those live in paid [Monitive](https://monitive.com) instead. What you get here is the raw, reliable signal and the freedom to route it anywhere, on a tier that is genuinely free.

## Start free

Sign up with your GitHub login (no email, no billing details), add a monitor on your production URL, and point a webhook wherever you want the alert to land. Fifty monitors free.

[Get your API key](https://app.uptimemonitoring.com/keys) and wire up your first alert.

*Prefer to gate deploys on uptime too? Here's [how to add a real health gate to your CI](/blog/post-deploy-health-gate-ci).*