CronCanary DocsPricingCompareStart free

Know the instant a cron job goes silent

CronCanary is a dead man's switch for scheduled tasks. Your job pings a URL on every run — if a ping is late or never arrives, we alert you. It catches the failures your job's own error handling never can: the daemon that never fired, the host that went offline, the job that hung.

No credit card. Email · Slack · Discord · Telegram · webhook alerts on every plan.

# add one line to the end of your crontab job: 0 4 * * * /usr/local/bin/backup.sh && curl -fsS https://croncanary-ping.sleeezydesigns.workers.dev/your-check-uuid # miss the 4am run? CronCanary alerts you within ~1 minute of the grace window.
Live CronCanary status badge for our own scanner heartbeat This badge is live — it's our own scanner's heartbeat check, pinged every minute. Every check gets one to embed in a README.
1

Add one line

Append a curl to your cron job, or ping from any language. /start, /fail, and exit codes are optional extra signal.

2

We watch the clock

Each check knows exactly when the next ping is due — simple periods or real cron expressions with full timezone + DST handling, plus a grace window for normal jitter.

3

Silence becomes an alert

No ping past the grace period? Every channel on the check fires within about a minute — and paid plans keep re-alerting until it recovers.

🔔

Inverted monitoring

Alert on the absence of a signal — the only way to catch a job that never ran at all.

🗓️

Simple or cron schedules

Expect a ping every N seconds, or match a real cron expression with full IANA timezone + DST handling.

⏱️

Grace periods

Tolerate normal jitter. Only alert when a job is genuinely late — no flapping.

🚦

Start / fail / exit codes

Signal /start to measure duration and catch hung jobs, /fail for instant alerts, or pipe a shell exit code.

📡

Five free channels

Email, Slack, Discord, Telegram, and generic webhooks — all included, even on the free plan.

🟢

Public status badges

Drop a live status badge in your README. One ping URL, zero dashboards to share.


Simple, honest pricing

Every plan has every alert channel. Paid tiers raise the check count and log retention, and re-alert until a down check recovers.

Free

$0/mo
  • 20 checks
  • 30-day log retention
  • All 5 alert channels
  • Public status badges
Get started

Pro

$19/mo
or $190/yr — 2 months free
  • 250 checks
  • 365-day log retention
  • Repeat alerts until recovery
  • Priority support
Upgrade

14-day money-back guarantee · cancel anytime from your billing page · details


Works with everything that runs on a schedule


Frequently asked questions

What is a dead man's switch for cron jobs?

Instead of watching for errors, it watches for silence. Your job sends an HTTP ping on every successful run; if the ping is late or never arrives, CronCanary alerts you. That inversion catches failures error handling never can: the daemon that never fired, the host that went offline, the job that hung.

Is the free plan really free?

Yes. 20 checks, all five alert channels (email, Slack, Discord, Telegram, webhook), public status badges, and 30-day log history — no credit card, no trial clock. Paid plans raise the check count and log retention and add repeat alerts until recovery.

How is CronCanary different from Healthchecks.io?

The biggest difference is the free plan: CronCanary includes every alert channel on it, so you never pay just to get Slack or Telegram alerts. Paid tiers start at $5/mo (or $50/yr) with 75 checks, 90-day log retention, and repeat alerts that keep firing until a down check recovers. Full breakdown: CronCanary vs Healthchecks.

Does CronCanary see my job's code or data?

No. CronCanary never connects to your servers — your job makes an outbound HTTP request to its ping URL. We store only what that request carries: a timestamp, the signal type (success, start, fail, or an exit code), and an optional short log body you choose to send.

Can I cancel or get a refund?

Cancel any time from the billing page; access continues until the end of the paid period. Every paid plan has a 14-day money-back guarantee — email [email protected] within 14 days of a charge and we refund that billing period.