Originally published at devtoolpicks.com
Your nightly database backup stopped running on August 12. You found out on September 4, when you needed it.
Nothing alerted you, because nothing errored. The job didn't throw an exception or exit non-zero. It just stopped being invoked, so there was no exception to catch, no log line to grep, and nothing for Sentry to report. Your error tracker was working perfectly the whole time. It was watching the wrong thing.
That's the gap cron monitoring fills, and it's the one piece of the stack most solo builders skip.
How Does a Dead Man's Switch Actually Work?
The model is inverted compared to every other monitor you run. Instead of something calling your app to check it's alive, your job calls out every time it finishes. The monitor holds a timer. If the ping doesn't arrive before the deadline plus a grace period, you get an alert.
That's it. One HTTP request appended to the end of your job, usually a curl at the end of the crontab line.
One rule matters more than any feature comparison. Never run the monitor on the same machine as the jobs. A server that dies takes both with it, and you learn nothing.
Quick Verdict
| Tool | Best for | Free tier | Rating |
|---|---|---|---|
| Healthchecks.io | The default pick | 20 jobs | 4.5/5 |
| Better Stack | Uptime and heartbeats together | 10 heartbeats + 10 monitors | 4.5/5 |
| Cronitor | Catching slow jobs, not just dead ones | 5 monitors | 4/5 |
| Dead Man's Snitch | One critical job, nothing more | 1 snitch | 3.5/5 |
| Oh Dear | Laravel shops who want everything in one | None, $17/mo | 4/5 |
| Hyperping | Cron plus status page on one bill | 20 monitors | 3.5/5 |
Healthchecks.io
The one I'd start with. The free Hobbyist plan monitors 20 jobs with 100 log entries each, which is more than most solo projects will ever schedule. Supporter is $5 a month for the same limits if you want to fund it. Business is $20 a month for 100 jobs, 1,000 log entries, 50 SMS credits and 20 phone call credits.
The real argument is the escape hatch. Healthchecks is BSD 3-clause open source and the hosted service runs the same code you can deploy yourself. Pricing risk is close to zero when you can walk with the software.
Who should skip it: anyone who wants one vendor for uptime, errors and heartbeats. This does one job.
Better Stack
The most generous free tier here by some distance. Ten monitors and ten heartbeats, checks as often as every 30 seconds, and unlimited SMS and phone call alerts without paying anything. Phone alerts on a free plan is unusual enough to be the deciding factor for a lot of people.
Scaling costs $25 a month per 50 extra monitors and $20 a month per 10 extra heartbeats, dropping to $21 and $17 on annual billing. Heartbeats get expensive faster than monitors do, so watch that ratio if you schedule a lot of small jobs.
It also shows up in our uptime monitoring roundup, which is the other half of this problem.
Who should skip it: anyone monitoring 40 jobs. The heartbeat pricing works against you at that point.
Cronitor
Cronitor is the one that knows your job ran slowly. It's schedule aware, so it tracks duration and can alert when a job that normally takes 40 seconds suddenly takes nine minutes. That's the failure that precedes the outage, and none of the pure heartbeat services see it.
Free Hacker gives you 5 monitors, one seat, and email and Slack only. Business is usage based at $2 per monitor plus $5 per user, so 20 monitors across 3 people works out at $55 a month, with 6 months of retention and all 11 alert integrations including SMS and on-call routing.
Who should skip it: anyone with a handful of jobs. At small scale you're paying for analytics you won't read.
Dead Man's Snitch
The oldest and simplest option, and it still does the job. Free covers exactly one snitch, which is enough if you have precisely one thing that must not die quietly. Little Birdy is $5 a month for 3, Private Eye is $19 for 100, Surveillance Van is $49 for 300 with smart alerts and error notices.
Every paid tier carries unlimited team members, which is a nicer stance than most.
Who should skip it: anyone comparing on features. The jump from 3 monitors to 100 with nothing in between is awkward if you land at 8.
Oh Dear
Scheduled task monitoring is included in every Oh Dear plan alongside uptime, SSL, broken links, DNS, performance, domain expiry and status pages. Nothing is gated to a higher tier. The only thing that changes as you pay more is how many sites you watch.
Solo is $17 a month for 2 sites, Solo Plus is $32 for 5, Freelance is $55 for 10, all with unlimited team members. It's built by people from the Laravel world and it shows in how the scheduled task integration fits a Laravel app.
Who should skip it: anyone with one site and one cron job. You're buying nine products to use one.
Hyperping
Hyperping folds heartbeat checks in beside uptime monitoring rather than selling them separately. The free plan covers 20 monitors at 5 minute checks with one status page. Essentials at $29 a month brings 50 monitors, 30 second checks and a status page on your own domain. Pro at $89 gets 100 monitors and three status pages. Annual billing gives you two months free.
The pricing page counts monitors, not cron jobs, so budget by total checks rather than by scheduled tasks. It's the tidiest option if you want monitoring and a public status page on one invoice.
Who should skip it: cron-first users. Paying $29 a month to get past a free tier built around uptime is poor value when Healthchecks watches 20 jobs for nothing.
What About Laravel's Scheduler?
If you're on Laravel you already have the wiring. The scheduler ships with pingOnSuccess and pingOnFailure, plus pingBefore and thenPing for the start and end of a task, and conditional variants of all four. Point them at a Healthchecks or Cronitor URL and you're done in one line per task.
Schedule::command('backup:run')
->dailyAt('02:00')
->pingOnSuccess($url)
->pingOnFailure($failureUrl);
No package needed. This is the cheapest observability win available to a Laravel app, and it pairs well with the queue side covered in our background job tools roundup.
How Should You Choose?
Count your jobs first, because that number decides almost everything.
Under 20 jobs and no budget: Healthchecks.io free. It's not a trial, it's a real tier, and the self-host option means you never get squeezed later.
Already paying for uptime monitoring: Better Stack, and consolidate. Ten free heartbeats bolted onto monitoring you already run is less work than a second vendor and a second login.
Jobs where timing matters, like a billing run or a nightly export with an SLA behind it: Cronitor. Duration tracking is worth real money when a job finishing late costs you something.
And whatever you pick, alerts belong somewhere you'll actually see them. An email alert at 3am is a log entry with extra steps. Route the ones that matter to SMS or a phone call, the same way you'd route error tracking alerts.
The Pick
Healthchecks.io for most people. Twenty free jobs covers a solo SaaS with room to spare, the interface stays out of the way, and BSD licensing means the pricing page can never hold you hostage.
Better Stack wins if you're already inside it for uptime. Cronitor wins when late is as bad as never.
The tool matters less than doing it at all. Every scheduled job you run right now is either monitored or it's a silent failure waiting for the worst possible day to reveal itself, and adding the ping takes about 30 seconds per job.
Top comments (0)