Dead man's switch monitoring explained: alert when an expected success signal never arrives. How the pattern works, where to place the heartbeat, and what it catches.
By H. Marcell, Freelance Software Developer
Updated July 17, 2026
H. Marcell is a freelance software developer who builds and runs web services and APIs, and writes about uptime monitoring, incident response, and status-page communication.
A dead man's switch flips the usual monitoring logic: instead of alerting when something reports an error, it alerts when something stops reporting success. This guide explains the pattern, why it is the right model for scheduled and background work, where to place the signal, and what failure modes it uniquely catches.
Error-based monitoring can only alert on failures it observes. But the most dangerous failures are the silent ones: the cron entry that got removed, the server that never booted, the job that hung before it could log anything. None of these produce an error to catch. A dead man's switch catches them all with one rule — "I expected to hear from you by now, and I did not" — which is exactly the class of failure that otherwise goes unnoticed for days.
The pattern is uniquely good at detecting: a job that was never scheduled or whose schedule was deleted; a worker or host that is down entirely; a job that hangs indefinitely without erroring; and an environment where the whole scheduler stopped. In each case there is no error, no log line, no exception — just silence where a success should have been. That silence is precisely what the switch is listening for.
Have the job request a Sandglass heartbeat URL after it successfully completes, and set the expected interval plus a grace buffer. If the signal does not arrive on time, Sandglass alerts you. Because the alarm is triggered by absence, it catches the failures that error-based monitoring cannot see — including the job never starting.
A heartbeat at job start only proves the job began; it will report "success" and then crash on the next line. Put the signal after the critical work so a failure in that work shows up as a missing heartbeat. Also size the grace period to the job's real variability, or normal jitter will page you.
Decide which failures in this topic actually reach customers before adding any monitoring.
Match each risk to a single HTTP, content, TCP, SSL certificate, or heartbeat check instead of stacking duplicates.
Give each alert one owner and one destination — email, a Slack webhook, or a generic webhook.
Revisit intervals, thresholds, and ownership once a real incident shows what was missing.