The problem, restated

Once your automation runs on a schedule, the way it will most likely fail is by not running at all. No error, no output, no alert — because a job that does not run cannot report anything, including its own absence.

The heartbeat pattern

Two pieces, and they must be separate:

The beat. At the end of a genuinely successful run, your automation records a timestamp somewhere durable — touch a file, write a row, update a line. The word “genuinely” is doing real work: only write the beat when the outcome you defined in section 1 is actually true. A run that did nothing because of an error must not beat.

The watcher. Something else entirely looks at that timestamp and complains when it is older than it should be. If your job runs nightly, complain at 25 hours. The watcher can be a second scheduled job, a monitoring service, or a free dead-man's-switch service that emails you when it stops hearing from you.

Why they must be separate

If the watcher lives inside the automation, it dies with it. The moment you most need to be told is exactly the moment the thing that would tell you is not running. This is not a subtle point but it is skipped constantly.

What to do with the alert

Send it somewhere you cannot filter. An email that joins nine other automated emails will be ignored within a fortnight. A push notification, a text, or a message in a channel you actually read is worth far more.

And keep the message useful. “Backup has not reported success since Tuesday 02:14” tells you what happened, when it stopped, and what to look at. “ERROR: job failed” tells you almost nothing.

Check the schedule itself

One more thing, and it catches a whole family of bugs: after you set up the schedule, ask the system to tell you when the next run will actually be. Do not trust “enabled”. I have found jobs marked enabled whose next run time was effectively never — a scheduling quirk meant they could not fire again, and nothing complained, because there was no failed run to notice. An enabled job with no valid next run is the single most common form of the silence bug.

Last modified: Monday, 17 August 2026, 1:10 PM