Cronitor's pitch is that the two monitoring questions most projects actually have β "did my scheduled job run?" and "is my URL up?" β belong in one tool. That's right, and it's why people like it. This page is the same two answers as two curls: a heartbeat (your cron job pings us; silence triggers the alert) and a URL monitor (we ping your endpoint from the edge every 30 minutes). Webhook on down, webhook on recovery, public status page and README badge for each. No signup anywhere in the loop.
Facts from their own pricing page, September 2026: the free "Hacker" plan is $0 forever with 5 monitors, email and Slack alerts, and a basic status page (no SMS, no premium integrations). Paid is refreshingly fair β usage-based at $2/month per monitor and $5/month per user, with no base fee and no minimums, so one monitor past the free tier costs dollars, not a plan jump. If you want a commercial dashboard covering cron jobs, uptime checks and status pages for a team, Cronitor is a solid pick.
The wall this page removes is at the very front: you need to sign up before you have a monitor, and the free tier stops at 5. If you're in a terminal, a CI step, or you're a script or agent arming a watchdog for yourself, the curl below works right now β and the sixth one doesn't cost anything either.
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"}'
period_minutes is how often the job is supposed to run; notify is a Slack incoming webhook, a Discord webhook, or any HTTPS endpoint. The response includes a secret ping_url β append it to the job so it only fires on success:
# crontab: run backup at 03:00, check in only on success
0 3 * * * /usr/local/bin/backup.sh && curl -fsS -m 10 https://mockbird.mockbird.workers.dev/ping/p-XXXX
If no ping arrives within period_minutes + grace (defaults to half the period; override with grace_minutes), your webhook gets one service.down β "missed its check-in" β and one service.up when pings resume. Creation counts as the first ping, and a confirmation delivery hits your webhook immediately so you know the channel works. The full walkthrough (systemd timers, GitHub Actions, what the response contains) is in the cron-job monitoring guide.
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"}'
Checked from Cloudflare's edge every 30 minutes; two consecutive failed checks (debounce β no blip spam) trigger one down alert, and recovery triggers one up alert. The create response also performs a live check right now, so this doubles as a one-curl "is my site reachable from outside?" probe. Details, payload formats and the HMAC signature-verification snippet: uptime-monitoring guide.
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.
Every heartbeat and every monitor gets a public, unguessable-URL status page (/status/hb-β¦ or /status/mon-β¦), a live README badge (β¦/badge.svg) and an Atom feed of down/up events. The ping URL and management secret are separate capabilities from the page URL β embedding the badge in a public README exposes neither the ability to fake a check-in nor the ability to delete the monitor.
Facts checked September 2026 against each vendor's own pricing/FAQ pages β verify current numbers yourself:
| Free tier | Pick it when | |
|---|---|---|
| Cronitor | 5 monitors free forever (email + Slack alerts, basic status page, no SMS); paid is usage-based, $2/mo per monitor + $5/mo per user, no minimums | You want cron + uptime + status pages in one commercial dashboard for a team, with fair pay-as-you-grow pricing. |
| healthchecks.io | 20 checks, 100 log entries each; open source, self-hostable; ~1-min granularity; Business free for OSS/nonprofits | You're monitoring a fleet of cron jobs and want a dashboard, history and email β the deserved default for pure cron monitoring. |
| Dead Man's Snitch | 1 free snitch, account required; integrations from $19/mo | You have exactly one job and like their smart-alert tooling (our page on it). |
| Mockbird | Heartbeats: 5 live per IP (deleting frees the slot), periods 30 minβ7 days. URL monitors: 3 live per IP, 30-min checks. Webhook alerts + status page/badge/feed on both. No account. | You want the monitor armed this minute from the terminal you're already in β or a script/CI/agent is arming it for itself. |
Where the incumbents win, plainly: minute-level detection (our checks and evaluations run every 30 minutes β this is for human-schedule jobs and small services, not sub-minute liveness), email/SMS/push alert channels, cron-expression schedules with time zones, performance metrics and browsable history, teams, and years of production trust. We do: two curls, one webhook on down, one on recovery, public status artifacts, zero setup friction, no account.
# heartbeat: info + ping URL + recent evaluations Β· then disarm
curl "https://mockbird.mockbird.workers.dev/api/status/heartbeat/hb-XXXX?secret=YOUR_SECRET"
curl -X DELETE "https://mockbird.mockbird.workers.dev/api/status/heartbeat/hb-XXXX?secret=YOUR_SECRET"
# monitor: same shape
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/heartbeat and GET /api/status/monitor return full usage as JSON. We also run a public status tracker for 50+ popular mock/fake/placeholder APIs with the same webhook alerts.
period_minutes 30β10080, grace defaults to period/2 (5mβ24h), 5 live per IP (deleting frees the slot), 100 total; monitors β 3 live per IP, checks every 30 min. Small free capacity β if you hit a cap, try later. Best-effort webhook delivery; 5 consecutive failed deliveries auto-remove the monitor.