# How to Set Up Webhook Alerts for Website Downtime

> Learn how to connect your uptime monitor to any service using webhooks. Route downtime alerts to Slack, Discord, PagerDuty, or your own backend with a simple HTTP endpoint.

*Source: https://monitoristic.com/blog/how-to-set-up-webhook-alerts-for-downtime*

---

[Telegram alerts](/blog/how-to-set-up-telegram-alerts-for-downtime) are the fastest way to get personal downtime notifications on your phone. But what if you need alerts in a team Slack channel? Or you want to log every incident to a database? Or trigger an automated response when your site goes down?

That's what webhooks are for.

A webhook is a simple concept: when something happens (your site goes down), your monitoring tool sends an HTTP POST request to a URL you specify. What happens at that URL is up to you. It could be a Slack channel, a Discord server, a PagerDuty integration, or your own custom backend.

Here's how to set it up.

## What You Need

- An uptime monitoring tool that supports webhooks ([Monitoristic](https://monitoristic.com) includes webhooks on all plans)
- A destination URL — either from a service like Slack/Discord, or your own HTTP endpoint

That's it. No SDKs, no libraries, no API keys to manage.

## Step 1: Get Your Webhook URL

Where your alerts end up depends on what you're connecting to.

### Slack

1. Open your Slack workspace and go to the channel where you want alerts
2. Go to **Settings & administration > Manage apps > Incoming Webhooks**
3. Click **Add New Webhook to Workspace**
4. Select the channel and authorize
5. Copy the webhook URL — it looks like `https://hooks.slack.com/services/T.../B.../xxx`

### Discord

1. Open your Discord server and go to the channel settings
2. Navigate to **Integrations > Webhooks**
3. Click **New Webhook**
4. Name it something like "Uptime Alerts" and copy the URL
5. Append `/slack` to the URL to use Slack-compatible formatting — Discord supports this natively

### Your Own Endpoint

If you're routing to a custom backend, you need an HTTP endpoint that:

- Accepts POST requests
- Parses JSON from the request body
- Returns a 2xx status code to confirm receipt

A minimal example in Node.js:

```javascript
app.post('/webhook/downtime', (req, res) => {
  const { monitor, status, timestamp } = req.body;
  // Log it, notify your team, trigger a runbook
  console.log(`${monitor} is ${status} at ${timestamp}`);
  res.sendStatus(200);
});
```

## Step 2: Add the Webhook to Your Monitor

In [Monitoristic](https://monitoristic.com), go to your dashboard and navigate to **Notification Channels > Add Webhook**:

1. **Name**: Give it a label you'll recognize — "Slack #engineering" or "PagerDuty Prod"
2. **URL**: Paste the webhook URL from Step 1
3. **Headers** (optional): Add custom headers if your endpoint requires authentication, like `Authorization: Bearer your-token`

Save it, and the webhook is active. Every monitor you create can be connected to this notification channel.

For the full technical reference — payload structure, headers, timeout behavior — see the [webhook documentation](/docs/webhooks).

## Step 3: Understand the Payload

When a monitor triggers, the webhook sends a JSON payload with everything you need to act on the incident:

- **Monitor name and URL** — which site is affected
- **Status** — whether it's down or recovered
- **HTTP status code** — what the failed check returned (500, 503, timeout, etc.)
- **Timestamp** — exactly when the event occurred
- **Response time** — how long the check took before failing

This structured data is what makes webhooks powerful. Instead of a plain text message, you get machine-readable data you can parse, filter, and route however you want.

## Common Webhook Setups

### Team alerts in Slack or Discord

The most common setup. Route all downtime alerts to a dedicated channel so the whole team sees them. No one needs to check a dashboard — the alert comes to where the team already works.

### Escalation chains

Send webhooks to a service like PagerDuty or Opsgenie. They handle on-call routing, escalation rules, and acknowledgment tracking. Your monitoring tool detects the problem; the incident management tool makes sure the right person responds.

### Custom logging

Send every alert to your own API and log it to a database. Build your own incident history, generate monthly reports, or feed the data into an internal dashboard. Useful if you need audit trails or SLA compliance records.

### Automated responses

Trigger automated actions when a site goes down. Restart a service, spin up a failover, clear a cache, or roll back a deployment. The webhook is just the trigger — your automation layer handles the rest.

## Webhooks vs. Other Notification Methods

| | Webhooks | Telegram | Email |
|---|---|---|---|
| **Setup time** | 5 minutes | 2 minutes | 1 minute |
| **Best for** | Team workflows, integrations, automation | Personal mobile alerts | Low-urgency awareness |
| **Flexibility** | Route to any HTTP endpoint | Telegram only | Inbox only |
| **Machine-readable** | Yes (JSON) | No | No |
| **Custom automation** | Yes | No | No |

Most teams use a combination. [Telegram](/docs/telegram) for personal phone alerts when you're on call. Webhooks for the team channel and automated workflows. They complement each other.

## Tips for Reliable Webhook Alerting

**Test before you need it.** Don't wait for a real outage to find out your webhook URL has a typo. Most monitoring tools let you send a test notification — use it.

**Monitor your monitoring.** If your webhook endpoint is down when your site goes down, you won't get the alert. Route critical alerts to at least two channels — a webhook and Telegram, for example.

**Keep payloads small.** If you're building a custom endpoint, process the webhook data asynchronously. Accept the request, return 200 immediately, then handle the logic in the background. Slow responses can cause timeout issues.

**Use meaningful channel names.** When you have five webhook channels named "Webhook 1" through "Webhook 5," debugging which one stopped working is painful. Name them by destination: "Slack Ops," "PagerDuty Prod," "Custom Logger."

## Get Started

Webhooks turn your uptime monitor from a passive checker into an active part of your incident response workflow. Set one up in [Monitoristic](https://monitoristic.com) — it takes five minutes, and every plan includes unlimited webhook channels.

If you're looking for something simpler, start with [Telegram alerts](/blog/how-to-set-up-telegram-alerts-for-downtime). You can always add webhooks later as your workflow grows.
