← All guides

UptimeRobot alternative β€” free webhook downtime alerts, no signup

UptimeRobot's free plan is the most generous headline number in uptime monitoring: 50 monitors, checked every 5 minutes, no credit card. If you want a dashboard watching production websites, it's the deserved default and this page will say so again below. What their free plan doesn't include is the alert plumbing most automation actually wants: webhook alerts sit on the Team plan (from €35–41/month), Slack alerts start on Solo (paid), and heartbeat/cron-job monitoring is paid-only. And everything begins with a dashboard signup.

This page is the other way around: one curl arms a monitor with a webhook that fires once on down and once on recovery β€” Slack and Discord formats auto-detected, everything else HMAC-signed JSON β€” plus a public status page, README badge and Atom feed. No account anywhere in the loop. Small free capacity, honestly stated below.

1. First, honestly: UptimeRobot is a good product

Facts from their own pricing page, September 2026 (they even publish a machine-readable pricing.md for AI agents β€” genuinely commendable): Free = 50 monitors at 5-minute intervals, HTTP/port/ping/keyword checks, 1 basic status page, and 5 alert integrations (Google Chat, Discord, Pushover, Pushbullet, Splunk). Their management API is included even on Free. Paid plans buy faster checks (60s/30s/15s), SSL and domain-expiry monitoring, heartbeats, maintenance windows β€” and the integrations most teams pipe alerts through: Slack from Solo (from €9–10/mo), webhooks/Zapier/PagerDuty from Team (from €35–41/mo). Verify current numbers yourself; pricing moves.

If you're monitoring a production website fleet and living in a dashboard, sign up there. The gap this page fills: you're in a terminal, a CI job, or you're a script or agent that wants a machine-readable alert contract right now β€” and you'd rather not put "get a webhook when it breaks" behind a team-tier subscription.

2. "Watch this URL" β€” one curl

curl -X POST https://mockbird.mockbird.workers.dev/api/status/monitor \
  -H 'content-type: application/json' \
  -d '{"url":"https://api.example.com/health","notify":"https://hooks.slack.com/services/T000/B000/XXXX"}'

We GET your URL every 30 minutes from Cloudflare's network (8s timeout, redirects followed, 2xx/3xx = up). The response contains everything: the current check result (your URL is probed immediately), a secret for managing the monitor, and three public artifacts β€”

No webhook handy? Both work webhook-less: omit notify and the create response includes a poll URL that returns the transitions since your last poll (plus the current state) — no endpoint to host. How poll mode works.

{
  "id": "mon-XXXX",
  "secret": "…",
  "current": { "ok": true, "http_status": 200, "ms": 87 },
  "checked_every_minutes": 30,
  "status_page":  "https://mockbird.mockbird.workers.dev/status/mon-XXXX",
  "badge_svg":    "https://mockbird.mockbird.workers.dev/status/mon-XXXX/badge.svg",
  "feed_atom":    "https://mockbird.mockbird.workers.dev/status/mon-XXXX/feed.xml"
}

The status page and badge are public but live at unguessable URLs and show the hostname only. Drop the badge in a README:

[![api.example.com status](https://mockbird.mockbird.workers.dev/status/mon-XXXX/badge.svg)](https://mockbird.mockbird.workers.dev/status/mon-XXXX)

3. The alert contract (their Team-plan feature)

notify takes a Slack incoming webhook, a Discord webhook, or any HTTPS endpoint β€” the format is sniffed from the host: hooks.slack.com gets {"text": …}, discord.com/api/webhooks gets {"content": …}, and anything else gets JSON signed with your monitor's secret (x-mockbird-signature: sha256=hex(hmac-sha256(secret, body)) β€” verify it like a Stripe webhook). A confirmation delivery hits your webhook at create time so you know the channel works before you rely on it.

Alerting is deliberately quiet: one POST when the URL goes down, one when it recovers, debounced β€” two consecutive checks must agree, so a single blip never pages you. No retries, best-effort delivery, and 5 consecutive failed deliveries auto-remove the monitor (a dead webhook can't rot forever).

4. Cron jobs: heartbeat monitoring (paid there, free here)

On UptimeRobot, heartbeat monitoring β€” "my job pings you; alert me when the pings stop" β€” starts on the Solo plan. Here it's the same one-curl pattern:

curl -X POST https://mockbird.mockbird.workers.dev/api/status/heartbeat \
  -H 'content-type: application/json' \
  -d '{"name":"nightly backup","period_minutes":1440,"notify":"https://hooks.slack.com/services/T000/B000/XXXX"}'

The response includes a secret ping URL; append && curl -fsS -m 10 <ping_url> to the cron job so it only checks in on success. Miss the period + grace, one service.down fires; resume, one service.up. Full walkthrough with crontab/systemd/GitHub Actions recipes: cron-job monitoring with one curl β€” and the two-curls-together story is the Cronitor page.

5. Dependency monitoring β€” their September '26 paid launch, running here already

UptimeRobot is launching "3rd party service monitoring" β€” alerts when services you depend on go down β€” in September 2026, on paid plans (1–5 services on Solo, 20 on Team, per their pricing page). We already run a public tracker of 50+ developer APIs (JSONPlaceholder, ReqRes, httpbin, DummyJSON, GitHub, npm and friends) at /status, and subscribing an alert to any of them is free and doesn't use a monitor slot:

curl -X POST https://mockbird.mockbird.workers.dev/api/status/watch \
  -H 'content-type: application/json' \
  -d '{"service":"reqres","url":"https://hooks.slack.com/services/T000/B000/XXXX"}'

Any id from /status.json works, or "*" for all of them. Same formats, same one-down-one-up contract.

6. Translation table

UptimeRobot conceptHere
HTTP(s) monitorPOST /api/status/monitor {"url": …, "notify": …} β€” no account, response includes current check
Alert contact / integrationnotify webhook β€” Slack/Discord formats auto-detected, else HMAC-signed JSON (webhooks are Team-plan there)
Heartbeat monitor (Solo+)POST /api/status/heartbeat β€” free, secret ping URL, dead man's switch
Status page/status/mon-XXXX β€” public, unguessable URL, hostname-only; badge.svg + Atom feed alongside
Dependency monitoring (Sept '26, paid)POST /api/status/watch against 52 already-tracked dev APIs β€” free, no slot
DashboardNone β€” GET /api/status/monitor/:id?secret=… returns info, 24h ok-rate and recent checks as JSON
Management APISame URLs you created with; both endpoints self-document on a bare GET

7. Honest comparison

Facts checked September 2026 against UptimeRobot's own pricing page β€” verify current numbers yourself:

Free tierPick it when
UptimeRobot50 monitors, 5-min checks, HTTP/port/ping/keyword, 1 basic status page, 5 integrations (no Slack, no webhooks), API access; Slack from Solo (€9–10/mo), webhooks/PagerDuty from Team (€35–41/mo), heartbeats paidYou're watching production websites and want a real dashboard, mobile app, history and many monitors β€” the generous default choice.
StatusCake3 monitors, 15-min checks, HTTP(S) only, email to 1 address; webhooks/Slack/integrations from $24.49/mo (details)Far fewer free monitors than UptimeRobot, but faster free checks than ours β€” and email is enough.
Site24x71-min checks (faster than anyone's free tier), email alerts, 1 status page; webhooks from ~$36/mo (details)Fastest free detection interval in the category β€” and email is enough.
OnlineOrNot3 monitors, 3-min checks, free Slack/Discord/Telegram alerts β€” rare at $0; raw webhooks from $15/mo (details)Your alert destination is a chat channel β€” the rare free tier that covers that.
Better Stack10 monitors + 10 heartbeats, 3-min checks, Slack + e-mail alerts, 1 status page (details)You want the most generous free package in the category and a signup is fine.
Hyperping20 monitors, 5-min checks from 18 regions, free Slack + Teams alerts + cron healthchecks; API paid-only (details)You want free chat alerts and multi-region checks in a polished dashboard.
Checkly10 monitors, 2-min checks, free Slack + signed-webhook alerts, 10k API + 1k Playwright runs/mo, MCP/CLI/Terraform free β€” account + API key required (details)An account is fine and you want the strongest free tier + Playwright synthetics.
MockbirdURL monitors: 3 live per IP (deleting frees the slot), 30 total, 30-min checks. Heartbeats: 5 live per IP. Webhook + Slack + Discord alerts, status page/badge/feed β€” all free, no account.You want the webhook alert armed this minute from a terminal, CI step, script or agent β€” and the alert channel matters more than the check frequency.

Where UptimeRobot wins, plainly: 50 monitors to our 30-total free capacity, 5-minute detection to our 30, port/ping/keyword checks (we only GET URLs), multi-location probes, SMS/voice/mobile push, incident history and retention, status page customization, and a decade of production trust at seven-million-monitor scale. We do: one curl, no signup, one webhook down + one up, HMAC-signed payloads, public status artifacts, and cron heartbeats β€” all at the price their free tier charges for none of it.

8. Managing monitors

# info + 24h ok-rate + recent checks Β· then stop
curl "https://mockbird.mockbird.workers.dev/api/status/monitor/mon-XXXX?secret=YOUR_SECRET"
curl -X DELETE "https://mockbird.mockbird.workers.dev/api/status/monitor/mon-XXXX?secret=YOUR_SECRET"

Both endpoints are self-documenting: GET /api/status/monitor and GET /api/status/heartbeat return full usage as JSON. The complete walkthrough of the monitor feature is the uptime monitor API guide.

Limits while free: monitors β€” 3 live per IP (deleting frees the slot), 30 total (small free capacity β€” if you hit the cap, try later), checks every 30 minutes; heartbeats β€” 5 live per IP, periods 30 min–7 days. Best-effort webhook delivery, no retries; 5 consecutive failed deliveries auto-remove the alert.
⚑ Mockbird's day job is instant mock REST/GraphQL APIs: this link creates a live, seeded e-commerce backend (products, orders, customers, reviews) in one click β€” real URL, full CRUD, no signup. Or import an OpenAPI spec, db.json, CSV, Postman collection, or HAR and mock your exact shapes.