Uptime Alerts to Discord, Telegram or Slack — Free Setup Guide (2026)
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.
Method 1: Discord webhooks
Discord is the fastest because it needs no bot registration:
- In your server: Server Settings → Integrations → Webhooks → New Webhook
- Pick the channel, copy the URL (looks like
https://discord.com/api/webhooks/…) - 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:
- Message @BotFather, run
/newbot, save the token - Add the bot to your group, send one message, then get the chat ID via
https://api.telegram.org/bot<TOKEN>/getUpdates - 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:
- Go to api.slack.com/apps → Create New App → From scratch
- Enable Incoming Webhooks, add one to your target channel
- 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:
| Option | Cost | Effort | Catch |
|---|---|---|---|
| SaaS free tier (UptimeRobot etc.) | $0 | 5 min | 5-min check interval, limited monitors, upsells |
| cron + curl on your own machine/server | $0 | 20 min | You maintain the loop and state yourself |
| GitHub Actions cron | $0 | 15 min | Cron is best-effort, can drift minutes |
| Desktop app (DeskUptime) | $19 one-time | 2 min | Your 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 onceOr 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
/healthinstead 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.