What Is a Heartbeat (Cron) Monitor and When to Use One

VigilDog Team · September 1, 2026 · 6 min read

Most monitoring answers the question 'is this thing up?' A heartbeat monitor answers a harder and often more important one: 'did this thing run when it was supposed to?' The difference matters because the failures that hurt most are the silent ones, the nightly backup that quietly stopped, the cron job that's been dead for a week, the queue worker nobody noticed had crashed. This guide explains what a heartbeat monitor is, how it works, and when reaching for one is the right call.

What a heartbeat monitor actually is

A heartbeat monitor, also called a dead man's switch or cron monitor, inverts the usual model. Instead of the monitoring system reaching out to check on your service, your service reaches out to the monitor on a schedule. Each successful run sends a small 'I'm alive' ping. The monitor's only job is to notice when an expected ping fails to arrive within its window, and to alert you when it doesn't.

That inversion is the whole point. An uptime check confirms a server answers a request right now. A heartbeat confirms that a specific piece of scheduled work actually executed. The absence of a signal is the alarm, which is exactly what you want for anything that's supposed to happen on a timer but has no user staring at it when it doesn't.

Why uptime checks miss silent failures

Consider a nightly database backup. The server it runs on is up all day, responds to every ping, and passes every uptime check, while the backup script itself has been failing silently for two weeks because a disk filled up or a credential expired. Your uptime dashboard is a wall of green. You find out the backup is broken at the worst possible moment: when you need to restore.

Uptime monitoring watches the host. It has no idea whether the work you care about ran. Batch jobs, backups, data pipelines, and scheduled tasks fail independently of the machine's health, and their failures produce no error a user will report, because there is no user. That blind spot is precisely the one a heartbeat fills. If this distinction is new to you, it's the same reasoning behind SSL monitoring versus uptime monitoring: watching the thing that actually matters, not just whether the door opens.

When to use one

Heartbeat monitors shine anywhere a task runs on a schedule with no human in the loop. The tell is simple: if the job stopped running tonight, how long until someone noticed? If the honest answer is 'days' or 'when something downstream broke,' it needs a heartbeat.

They're less useful for continuously running, user-facing services, those are better served by direct uptime and health checks, because you want to know the instant a request fails, not merely that a periodic signal went missing.

  • Cron jobs and scheduled tasks of every kind
  • Nightly or hourly backups and database dumps
  • ETL and data-pipeline runs
  • Queue and background workers that should process on an interval
  • Certificate-renewal and cleanup scripts
  • Any regularly scheduled report or export

How it works: expected interval and grace period

You configure a heartbeat with two numbers: how often you expect a ping (the period) and how much lateness is tolerable before it alarms (the grace period). A backup that runs at 2 a.m. and usually finishes in ten minutes might be set to expect a ping every 24 hours with a 30-minute grace. Ping on time and the monitor stays quiet; miss the window past the grace and it alerts.

The grace period is what keeps a heartbeat from crying wolf. Real jobs vary, a backup takes longer as data grows, a pipeline waits on an upstream feed. Set the grace too tight and you'll get false alarms; too loose and you'll learn about failures hours late. Tuning that window to your job's real-world variance is the single most important configuration decision.

Setting one up well

The mechanics are easy, usually a single HTTP request to a unique URL, but a few habits separate a heartbeat that helps from one that lies to you. Put the ping at the very end of your script, after the work succeeds, so a job that starts but fails partway through never reports success. If you can, signal start and finish separately, so a job that hangs forever is caught rather than looking like it simply hasn't pinged yet.

Then route the alert somewhere a human will actually see it out of hours, and resist the urge to monitor everything at once. A flood of low-value heartbeat alerts trains people to ignore them, which is worse than no monitoring at all. Start with the jobs whose silent failure would genuinely hurt, get their grace periods honest, and expand from there.

Heartbeats alongside outside-in monitoring

A heartbeat covers the work you run on a schedule. It's the natural complement to the checks that watch your public surface from the outside, domain expiry, SSL and TLS validity, DNS drift, and email authentication, because together they close both blind spots: the scheduled job that silently died, and the certificate or record that silently changed. Neither replaces the other.

That combined view is what VigilDog is built around: outside-in monitoring of the things that break quietly and cost you when they do, with alerts that reach the right person before a silent failure becomes a visible outage. See pricing if you want to fold scheduled-job and infrastructure monitoring into one place.

Questions

Frequently asked

How is a heartbeat monitor different from an uptime monitor?

An uptime monitor reaches out to check that a service responds. A heartbeat monitor waits for your job to check in on a schedule and alerts when the expected signal doesn't arrive, so it catches scheduled work that silently failed to run, which uptime checks can't see.

Where should I put the heartbeat ping in my script?

At the very end, after the work has succeeded. That way a job that starts but fails partway through never sends a false 'success' ping. Signaling start and finish separately is even better, since it also catches jobs that hang.

What happens if I set the grace period wrong?

Too tight and normal variance in run time triggers false alarms; too loose and you learn about real failures hours late. Base the grace period on your job's actual worst-case runtime rather than its average.

Catch the failures nobody's watching

VigilDog watches the things that break quietly, expiring certs, drifting DNS, silent scheduled jobs, and alerts the right person before a silent failure becomes an outage.

Your first domain is free forever · no card