EUComply

Uptime Alerts to Discord, Telegram or Slack — Free Setup Guide (2026)

Updated August 2026 · 8 min read

Most uptime monitors want a monthly subscription before they'll send you a single notification. But if you already use Discord, Telegram or Slack, your team's alert channel is sitting right there — and getting downtime alerts into it costs exactly nothing.

This guide shows three ways to do it, from zero-setup SaaS free tiers to a self-hosted approach that never phones home. By the end your sites will be reporting outages straight into the chat tool your team already has open.

TL;DR: Every method below ends with a webhook or bot token posting an HTTP request. If a service charges $10+/month purely for that, you're paying for their dashboard — not the alerting.

Method 1: Discord webhooks

Discord is the fastest because it needs no bot registration:

  1. In your server: Server Settings → Integrations → Webhooks → New Webhook
  2. Pick the channel, copy the URL (looks like https://discord.com/api/webhooks/…)
  3. Test it:
curl -X POST -H "Content-Type: application/json" \
  -d '{"content":" https://example.com is DOWN (HTTP 503)"}' \
  "$DISCORD_WEBHOOK_URL"

Rate limits are generous (~30 messages/min per webhook), which is far more than any honest monitor needs.

Method 2: Telegram bots

Telegram needs a one-time bot setup, then it's just as simple:

  1. Message @BotFather, run /newbot, save the token
  2. Add the bot to your group, send one message, then get the chat ID via https://api.telegram.org/bot<TOKEN>/getUpdates
  3. Post alerts:
curl -s "https://api.telegram.org/bot$TG_TOKEN/sendMessage" \
  -d chat_id="$CHAT_ID" \
  -d text=" example.com is DOWN (HTTP 503)"

Method 3: Slack incoming webhooks

Slack requires creating a Slack App once:

  1. Go to api.slack.com/apps → Create New App → From scratch
  2. Enable Incoming Webhooks, add one to your target channel
  3. Post with the same JSON shape as Discord:
curl -X POST -H "Content-Type: application/json" \
  -d '{"text":" https://example.com is DOWN"}' \
  "$SLACK_WEBHOOK_URL"

The missing piece: something that detects the outage

The webhooks above only send when something calls them. You need a checker on a schedule. Your options:

OptionCostEffortCatch
SaaS free tier (UptimeRobot etc.)$05 min5-min check interval, limited monitors, upsells
cron + curl on your own machine/server$020 minYou maintain the loop and state yourself
GitHub Actions cron$015 minCron is best-effort, can drift minutes
Desktop app (DeskUptime)$19 one-time2 minYour machine must be awake

A minimal self-hosted loop looks like this:

# check.sh — run from cron every 5 minutes
URLS="https://example.com https://shop.example.com"
for url in $URLS; do
  code=$(curl -s -o /dev/null -w "%{http_code}" --max-time 15 "$url")
  if [ "$code" != "200" ]; then
    curl -s -X POST -H "Content-Type: application/json" \
      -d "{\"content\":\" $url DOWN (HTTP $code)\"}" "$DISCORD_WEBHOOK_URL"
  fi
done

It works, but note what it doesn't do: no recovery notifications ("back up again"), no alert deduplication (you'll get pinged every 5 minutes during an outage), and no history. Each of those is another 50 lines of bash — this is where most people decide a $19 tool beats maintaining a script.

Doing it without writing anything

DeskUptime is a desktop app built around exactly this pattern: it checks your URLs on an interval and posts to Discord, Telegram-compatible webhooks or any generic webhook endpoint when something breaks — including recovery notices, so you also get the message when the site comes back.

Skip the bash script

DeskUptime monitors unlimited URLs from your own machine. No subscription, no data leaves your network.

Get DeskUptime — $19 once
Or compare free tools first →

Common gotchas

  • False positives. A single timeout isn't an outage. Alert after 2–3 consecutive failures from different intervals.
  • Alert fatigue. If your monitor pings on every blip, people mute the channel — then miss the real outage. Only page humans for sustained failures.
  • Monitoring from the same network as the server. If your Wi-Fi dies, both the site and the checker vanish together. A desktop app on a different connection (or GitHub Actions) gives you a second vantage point.
  • Status-page-only checks. Checking /health instead of a real page can miss broken frontends that still return 200.

FAQ

Is Discord really free for uptime alerts?

Yes. Webhooks are free with normal rate limits. The cost is that Discord doesn't check anything itself — you supply the checker.

Can I get alerts without a server?

Yes — either GitHub Actions cron jobs (free for public repos, generous limits privately) or a desktop app like DeskUptime that runs while your machine is on.

Why pay $19 instead of using a free SaaS?

Free tiers typically cap at 5-minute intervals and a handful of monitors, and they own your monitoring history. A one-time purchase removes the monthly decision entirely — the math favors it once you'd otherwise pay for two months of SaaS.