April 4, 2026 7 min read
Healthchecks.io vs Crontify: which cron monitor catches more failures?
Healthchecks.io is excellent at detecting missed runs. But when your job exits 0 and processes nothing, it stays silent. Here's how the two tools compare and when each one is the right choice.
Healthchecks.io is one of the most respected tools in the cron job monitoring space. It's open source, reliable, generously priced, and has earned genuine trust from developers over many years. If you're evaluating cron job monitoring tools, it will come up — and it should.
But there's a class of failure it wasn't designed to catch. Understanding that limitation is the fastest way to decide whether Healthchecks.io is the right tool for your situation, or whether you need something that goes further.
How Healthchecks.io works
Healthchecks.io uses the dead man's switch model. Each monitored job gets a unique ping URL. Your job sends an HTTP request to that URL when it completes. If the ping doesn't arrive within the expected window, Healthchecks.io sends an alert.
It also supports start pings — your job pings /start at the beginning and the success URL at the end. This enables hung job detection: if a start ping arrives but no completion ping follows within the grace time, the check transitions to a failed state and you get alerted.
This is the right model for monitoring whether your jobs are running. It's well-implemented, reliable, and requires almost no code changes to your existing jobs.
What Healthchecks.io doesn't do
Healthchecks.io cannot tell you whether your job did anything useful.
A sync job that processes zero records still completes and sends its ping. A backup job that creates an empty file still sends its ping. An email job that builds an empty recipient list and skips sending still sends its ping. In all of these cases, Healthchecks.io records the run as successful.
This is not a bug. It's a deliberate design: Healthchecks.io monitors execution, not outcomes. The tool does what it says on the tin. The problem is that execution and outcomes are not the same thing, and in production environments, the gap between them is where the most damaging failures hide.
Healthchecks.io does support a basic form of outcome monitoring via keyword matching — you can configure a check to look for specific strings like "SUCCESS" or "ERROR" in the ping body. But this is binary: a string either matches or it doesn't. It doesn't support numeric conditions (rows_processed < 100), threshold comparisons, or stacking multiple conditions per job.
How Crontify approaches the same problem
Crontify covers the same ground as Healthchecks.io — missed run detection, hung job detection, start/success/fail pings — and adds one capability that changes what monitoring can catch.
When your job calls success(), you attach a metadata object describing what the run actually did:
import { CrontifyMonitor } from '@crontify/sdk';
const monitor = new CrontifyMonitor({
apiKey: process.env.CRONTIFY_API_KEY!,
monitorId: 'your-monitor-id',
});
await monitor.success({
meta: {
rows_synced: result.count,
api_calls_made: result.apiCalls,
records_skipped: result.skipped,
}
});
You then define alert rules against that data in the dashboard:
rows_synced eq 0— alert when nothing was syncedapi_calls_made eq 0— alert when the upstream was never reachedrecords_skipped gt 500— alert when too much was skipped
The run is still logged as a success. Your uptime history is untouched. But when a rule fires, you get an immediate notification to Slack, email, Discord, or a webhook — telling you that something upstream broke before your users find out.
Feature comparison
| Feature | Healthchecks.io | Crontify |
|---|---|---|
| Missed run detection | ✓ | ✓ |
| Hung job detection | ✓ | ✓ |
| Alert on job output values | Limited (keyword match only) | ✓ (numeric rules: eq, lt, gt, ne) |
| Log attachment on failure | ✗ | ✓ (up to 10,000 chars) |
| Duration anomaly detection | ✗ | ✓ |
| Overlap detection | ✗ | ✓ |
| Recovery alerts | ✓ | ✓ |
| TypeScript/Node.js SDK | ✗ (third-party only) | ✓ (zero dependencies) |
| Self-hostable | ✓ (open source) | ✗ |
| Free tier monitors | 20 | 5 |
| Paid entry price | ~$20/month | $9/month |
| Email alerts | ✓ | ✓ |
| Slack alerts | ✓ | ✓ (Standard plan+) |
| Discord alerts | ✓ | ✓ (Standard plan+) |
| Webhook alerts | ✓ | ✓ (Pro plan+) |
Pricing
Healthchecks.io offers a free tier for up to 20 monitors — the most generous free tier in the category. Paid plans start at around $20/month for more monitors and team features.
Crontify offers a free tier for 5 monitors with no credit card required. Paid plans start at $9/month (Standard: 50 monitors), $29/month (Pro: 150 monitors), and $79/month (Premium: unlimited monitors).
Which one to choose
Choose Healthchecks.io if:
- You need to monitor more than 5 jobs for free and don't want to pay yet
- You want a self-hosted option under your own infrastructure
- Your monitoring needs are purely about whether jobs run on schedule — exit codes and heartbeat timing are sufficient
Choose Crontify if:
- Your jobs process data and a successful exit code isn't enough — you need to know whether records were actually synced, emails actually sent, files actually created
- You want to attach log output to failed runs and have it delivered directly in your Slack alert without logging into a separate system
- You've been burned by a job that exited 0 but did nothing useful for days before anyone noticed
- You want duration anomaly alerts when a job starts running significantly slower than its baseline
The honest summary
Healthchecks.io is excellent software. If it covers your needs, use it — it's well-built and well-maintained with a track record that speaks for itself.
The question is whether your monitoring needs end at "did the job run?" If they do, Healthchecks.io is likely the simpler. If you need visibility into what the job actually accomplished, you need a tool that was designed for that — and that's where Crontify comes in.
Crontify is free to get started — 5 monitors, no credit card required.
Start monitoring your scheduled jobs
Free plan includes 5 monitors. No credit card required. Up and running in under 5 minutes.
Get started free →More from the blog
April 4, 2026 7 min read
Dead Man's Snitch vs Healthchecks.io vs Crontify
Three focused cron job monitoring tools, three different philosophies. Here's an honest comparison of what each one catches, what each one misses, and which one fits your production needs.
Read more →
April 1, 2026 6 min read
Why your cron job is getting slower (and how to detect it automatically)
A job that used to take 2 minutes now takes 45. Nothing errored. Here's how duration anomaly detection works and why it's one of the most underrated signals in scheduled job monitoring.
Read more →