Your cron job’s been dead since Tuesday.
No alert. No email. Nothing.
Most monitoring tools tell you something pinged. We tell you when it didn’t — within 60 seconds. One HTTP call. Python SDK and Bash CLI today; Node, Go, Ruby when they’re actually finished, not when marketing says so.
No credit cardFree forever for 5 monitorsSetup in 60 seconds
The problem
Cron jobs fail silently. That's the problem.
A failed exit code can be ignored. A job that never ran has nothing to ignore. Most monitoring tools watch for errors — yours can't watch for absence.
The job ran. It told you it broke.
Exit code 1, an exception, a timeout — your script reported failure on the way out. Send a FAILURE check-in with whatever JSON metadata you want (exit code, duration, error string) and CronBeacon stores it alongside the run.
metadata: {
"exit_code": 137,
"error": "OOM killed",
"duration_ms": 4200
}The job didn't run. There's nothing to report.
The container died. The cron daemon was disabled. The deploy clobbered the schedule. There's no log line — there's no line. CronBeacon notices the silence within your grace window and pages you anyway.
Other tools tell you something's wrong. CronBeacon tells you what went wrong.
Works with your stack
Anything that can hit an HTTPS endpoint can talk to CronBeacon. These are the runtimes we have docs and recipes for.
Three steps. About sixty seconds.
Create a monitor, add one line to your cron, get alerted when something's wrong. The third step is the only one we do for you.
Create a monitor
Name it, give it a schedule in cron syntax (or pick a friendly preset), and set a grace window. You get a bearer token to authenticate check-ins.
Add one line to your cron
Append a curl to your existing job. POST to the ingestion endpoint with your bearer token; the outcome travels in the JSON body.
# before 0 2 * * * /usr/local/bin/backup.sh # after — POST a SUCCESS check-in if the job exits 0 0 2 * * * /usr/local/bin/backup.sh && curl -fsS -X POST \ https://cronbeacon.dev/api/v1/ingestion/check-in \ -H "Authorization: Bearer $CB_TOKEN" \ -d '{"outcome":"SUCCESS"}' # on failure, post FAILURE so we know it ran but broke || curl -fsS -X POST \ https://cronbeacon.dev/api/v1/ingestion/check-in \ -H "Authorization: Bearer $CB_TOKEN" \ -d '{"outcome":"FAILURE"}'
Prefer an SDK? Python today, Node + Go + Ruby Q3 2026.
Get alerted the moment something's wrong
One channel for missing, one for failed, none for noise. Alerts are merged into incidents — one outage, one ping, one resolution.
The failures every other tool politely ignores.
Detection
Know the difference between silent and broken.
Failed jobs talk. Missing jobs stay silent. CronBeacon listens to both.
Failed check-ins arrive as a FAILURE outcome with whatever JSON metadata your job decides to send. Missing check-ins arrive as the absence of any check-in within your grace window. Same incident view, two completely different signals — and you can route them to two completely different channels.
- Exit-code-aware failure detection
- Grace-window-based absence detection
- Per-channel routing for Failed vs Missing
Incidents
One outage, one incident. Not 47 missing pings.
When your server goes down, you get one incident alert, not a flood.
If your every-minute health check goes silent for four hours, that's one incident with 240 missed pings — not 240 alerts. We open an incident on the first miss, keep it open while the silence continues, and close it the moment the next ping lands.
- Incidents bracket missed pings instead of multiplying them
- Auto-close on first successful ping after silence
- One alert per incident, not per ping
Alerting
Alerts that respect your time.
Per-monitor grace periods and short delivery delays so a self-recovering blip doesn't wake you up.
Every alert is scheduled with a brief delay before it actually goes out. When the worker is about to send, it re-checks whether the incident is still open. If the next run already succeeded and closed it, the alert is cancelled before it reaches your inbox — and you'll see it cancelled in the timeline.
- Per-monitor grace periods
- Auto-cancellation if the job recovers before delivery
- One alert per incident — no flood when a job is silent for hours
The honest table our competitors won’t publish.
Honest comparison. We listed the things we're worse at too. Updated May 2026.
| CronBeacon | Cronitor | Healthchecks.io | Dead Man's Snitch | |
|---|---|---|---|---|
| Free tier monitors | 5 | 5 | 20 | 1 |
| Paid tier (entry) | $19/mo · 50 monitors | $10/mo · 5 monitors | $5/mo · 20 monitors | $5/mo · 3 monitors |
| Distinguishes Missing vs Failed | missing only | missing only | ||
| Incident-level tracking | partial | |||
| Custom JSON metadata per check-in | ||||
| Open-source SDK | Python · MIT Node, Go, Ruby — Q3 2026 | BSD API + integrations | ||
| Smart alert delays | auto-cancels if job recovers | |||
| Typical setup time | ~60s | ~2 min | ~60s | ~30s |
Pricing. No “Contact us” button.
Same product on every tier. Higher tiers buy you more monitors, longer history, and more alert channels.
- 5 monitors
- Email alerts
- 7-day check-in history
- Missing-vs-Failed detection
- Incident timeline & auto-resolution
- Job metadata (JSON payload)
- 50 monitors
- Email alerts
- Slack & webhook alertscoming soon
- 90-day check-in history
- Missing-vs-Failed detection
- Incident timeline & auto-resolution
- Job metadata (JSON payload)
- Priority email support
- Unlimited monitors
- Email alerts
- Slack & webhook alertscoming soon
- 365-day check-in history
- Missing-vs-Failed detection
- Incident timeline & auto-resolution
- Job metadata (JSON payload)
- Dedicated support
Every tier includes the core CronBeacon experience: missing detection, failure tracking, incidents, and metadata. Cancel anytime — no email asking why.
Frequently asked.
How is CronBeacon different from Cronitor / Healthchecks.io?
How does the Missing-vs-Failed distinction actually work?
Do I need an SDK or is curl enough?
How do alerts get merged into incidents?
Do you cancel an alert if the job recovers before delivery?
What metadata can I attach to a check-in?
Which alert channels are supported?
Can I self-host CronBeacon?
Still letting your customers QA your cron jobs? Bold strategy.
First ping takes 60 secondsNo card neededCancel anytime