A job can report "I ran" however it's able to — a plain HTTP ping, a live WebSocket, a DNS lookup, an email, a webhook, even a file dropped on SFTP/S3. They all land in the same monitor, and silence on any of them is what pages you.
cron.watch fires a trigger the moment an expected check-in doesn't arrive. A Switch routes on severity, and each branch does the right thing — page the on-call engineer for production, or just nudge Slack for staging.
Many machines, one logical job. Several workers report into a single monitor, which stays healthy only while enough of them check in — so you catch a half-dead fleet, not just a fully dead one.
A check-in can carry numbers — rows processed, duration, queue depth. Route on them to catch the job that "succeeded" but ran 3× too long or processed 90% fewer rows than usual.
Make the missed run impossible to miss.
crontab.in shows you the schedule. cron.watch runs the automation — it watches every job and triggers exactly this kind of flow when one goes quiet, late, or wrong.