Skip to content
Oh Dear

Silent miss on inherited cron

Scheduled task monitoring.

When a nightly backup, report or import stops running, the client finds the gap before you do. Cron job and scheduled task monitoring by heartbeat: give each job an Oh Dear ping URL to request when it runs, and get told when that request is late or never arrives.

10-day free trial · No credit card required · Every feature included

Heartbeat ping Late or missed after grace
  • Bitmovin
  • HBO Nordic
  • Obsidian
  • Laravel
  • Fathom Analytics
  • PHP 8
  • Stanford University
  • Takeaway.com
  • IGN
  • VRT NWS
  • spatie

The failure nobody sees

The job failed and nobody on your side knew.

An HTTP check will not catch this. The homepage can be up while the 02:17 job is dead. This check asks a much narrower question: did the job check in?

An agency does not live inside every client's crontab. You inherit jobs from a previous vendor, a CMS plugin, a forgotten Windows server, a framework scheduler someone left half-documented. The site still answers. The certificate is still valid. The backup job last checked in nine days ago.

Nobody on your side knew. The client found the missing dump, or finance found the report that never sent, or a customer asked why yesterday's orders never landed.

Cron jobs miss runs far more often than teams expect. We measured how often across the tasks Oh Dear watches over a 30-day window and published the number, alongside the rest of our uptime telemetry.

You set the schedule and how late is still acceptable. If the ping does not arrive inside that window, the people who can fix it hear about it before the client has to.

Ash Allen
Oh Dear gives me confidence that all my sites and scheduled tasks are running. I use it on all my Laravel projects!

Ash Allen, Laravel developer

The site was up the whole time. That is exactly the failure this check exists for.

Three different questions

What this check sees, and what it does not.

A host can answer every ping while the nightly backup never started. An app can report healthy JSON while a scheduled import missed its window entirely.

This check

Heartbeat

The job requests its own URL when it runs. The question is whether that request arrived on time.

A different check

Ping monitoring

Ping monitoring is ICMP: did the host answer. A box can answer while the job never started.

What it checks

  • A request to the URL unique to that task, every time it runs.
  • A miss: the request never arrived inside the schedule plus grace.
  • A late check-in: the request arrived, but after the window you allowed.
  • An outright failure the job reports itself, without waiting for the grace period to pass.
  • Optional runtime detail sent with the ping: duration, memory, exit code and a failure message.

What it does not

  • Whether the backup restores, the report held the right rows, or the import matched your rules.
  • HTTP(S) reachability of a public URL: website uptime monitoring.
  • Whether the host answers at all: ping monitoring.
  • What the application reports about itself: application health monitoring.
  • Certificates, DNS records and broken pages, which are each their own check.

A heartbeat proves the script reached its last line. It cannot prove the work in the middle was correct, and no heartbeat check anywhere can.

Operational ownership

Send the miss to the person who owns the fix.

A missed heartbeat is useless if it lands in a shared inbox nobody reads at 02:17. The person who can restart client A's Windows task is not the person on call for client B's scheduler, so each task routes to its own people.

Repeat alerts for the same silent task are throttled rather than resent every minute, and the alert names the task so somebody can act on it. Slack will not rerun the job from that message.

Slack
Email
Webhook
Explore notifications and routing

No feature tiers

Every check.
Every plan.

Scheduled task monitoring is included on every plan. You pay for the number of things you monitor, not per check.

Start with everything on.

Watch the crontab next to the uptime, certificate and DNS checks on the same client site.


  • Scheduled task monitoring included
  • Every feature on every plan
  • Plans scale by monitored site count
  • No credit card required
Start a free trial

10-day free trial. No credit card.

For the technically curious

How the heartbeat actually works.

Oh Dear gives each task a URL of its own. The job requests it. Everything else follows from whether that request turns up.

  • The ping. Each task gets a unique URL. Requesting it means the run finished. In a crontab that is a curl appended to the line you already have, which is the entire integration.
  • Start and finish. Request the /starting variant at the top of the script and the plain URL at the end, and Oh Dear knows how long the run took as well as that it happened.
  • Failing on purpose. Request the /failed variant, or send a non-zero exit_code, and the task is marked failed immediately rather than waiting for a ping that is never coming.
  • The schedule. Either a plain interval in minutes, or a real cron expression together with the timezone the server runs in. Use the second one for anything that does not run at a flat frequency.
  • Grace. How late a check-in may be before the run counts as missed. New tasks start at five minutes, and you can raise it as far as a job that genuinely varies needs.
  • Runtime detail. A POST can carry runtime in seconds, memory in bytes, an exit_code and a failure_message. That is the difference between knowing a job missed and knowing it ran for forty minutes and died.
  • Any scheduler. There is nothing to install and no agent. Linux cron, Windows Task Scheduler, queue workers, framework schedulers and one-off scripts all work, because all any of them has to do is request a URL.

Want all the technical details?

Before the first check

Questions about scheduled task monitoring.

What the heartbeat proves, how you describe the schedule, and where this check ends.

What is scheduled task monitoring?

It is a heartbeat check. Your job requests a URL unique to it every time it runs, and Oh Dear alerts you when that request does not arrive on the schedule you set. A received ping means the job reached the end of its script, not that the work it did was correct.

How do I set it up?

Add a scheduled task in Oh Dear, tell it when the job is supposed to run, then have the job request its ping URL as its last step. In a crontab that is one curl appended to the line you already have. Anything that can make an HTTP request works, including Windows Task Scheduler, a queue worker, or a framework scheduler.

How do I describe the schedule?

Either as a plain interval, meaning the job should check in at least every so many minutes, or as a real cron expression with the server timezone it runs in. The second form is what you want when a job runs at 02:17 on weekdays rather than simply "every day".

What is the grace period for?

It is the lateness you are willing to tolerate before Oh Dear calls the run missed. New tasks start at five minutes. A backup that usually finishes in ninety seconds but occasionally takes six should not page anyone, and the grace period is how you say so.

Can the job tell Oh Dear it failed?

Yes, and it is worth doing. Request the /failed variant of the ping URL, or send a non-zero exit_code, and the task is marked failed straight away rather than waiting for a ping that will never come.

Can I send extra detail with the ping?

Yes. A POST can carry how long the run took, how much memory it used, the exit code, and a failure message. That is what turns "the backup missed" into "the backup ran for 40 minutes and died on exit code 137", which is usually the whole diagnosis.

How is this different from uptime monitoring?

Website uptime monitoring asks whether a public URL responds. This asks whether a job checked in. The homepage can be up all night while the 02:17 job has been dead for a week, which is exactly the failure this check exists for.

Does it check that the backup is any good?

No, and no heartbeat check can. Oh Dear knows the ping arrived, arrived late, or never arrived. Whether the dump restores, the report held the right rows, or the import matched your business rules is outside what this can see.

Is scheduled task monitoring included in every plan?

Yes. Every feature is on every plan. You pay for the number of things you monitor, not per check.

See all other FAQ items

Get started

Start monitoring the jobs nobody is watching.

Add a task in under a minute. Every feature on. No credit card.