Cron job monitoring that tells you when a job goes quiet

Your backup, worker, or scheduled script pings a URL when it finishes. If the ping does not arrive on time, UptimeIO alerts you.

Why scheduled jobs fail silently

A website that goes down is easy to notice, because a check can request the page and see the failure. A cron job is different. When a nightly backup stops running, nothing is listening, nothing returns an error, and nobody is paged. You find out weeks later, when you need the backup.

Heartbeat monitoring turns the check around. Instead of UptimeIO calling your service, your job calls UptimeIO. The absence of a call is the signal, so a job that crashed, never started, or ran on a server that was shut down all produce the same alert.

How heartbeat monitoring works

  1. Create a heartbeat monitor

    Choose the Heartbeat type, name the monitor, and set how often the job should run and how much lateness to tolerate.

  2. Copy the ping URL

    UptimeIO generates a unique heartbeat URL for the monitor. The token in the URL identifies the job.

  3. Ping it from your job

    Request the URL when the job finishes successfully, using GET or POST. Ping only after success, so a failing job stops pinging.

  4. Get alerted when a ping is missing

    If no ping arrives within the expected interval plus the grace period, an incident opens and your alert channels are notified.

What you configure

Each heartbeat monitor has two timing settings. Together they decide when a missing ping becomes an incident.

  • Expected interval: how often your job runs, from 1 minute to 24 hours. The shortest interval is 5 minutes on Free and 1 minute on Pro and Scale.
  • Grace period: extra time allowed after the interval, from 1 second to 1 hour, so a slow run does not raise a false alert.
  • Optional metadata: a POST ping can carry a small JSON object, such as how long the job took.
  • No probe locations: UptimeIO waits for your job, so there is nothing to choose.
0 2 * * * /opt/scripts/backup.sh && curl -fsS -m 10 --retry 3 https://heartbeat.uptimeio.com/heartbeat/YOUR_HEARTBEAT_TOKEN
Example: a nightly backup with a 24-hour interval and a 30-minute grace period

What alerts you get

With a 1-hour interval and a 5-minute grace period, an incident opens after 65 minutes without a ping. Overdue monitors are checked every 30 seconds. The incident resolves after 3 consecutive on-time pings, which avoids a false recovery from an unstable job.

  • Email, Slack, Telegram, Pushover, and webhooks, on every plan
  • Webhook requests can be signed with HMAC-SHA256
  • There is no SMS or phone-call alerting

Which plans include it

Heartbeat and cron monitoring is available on every plan. Free includes 50 monitors with 5-minute checks. Pro includes 100 monitors and Scale includes 300, both with 30-second checks.

Heartbeat URLs are rate limited to 3 pings per 30 seconds, and a Free plan URL accepts 1 ping per 120 seconds. Treat the URL as a secret, because anyone who has it can send pings and hide a real failure.

Frequently asked questions

What is cron job monitoring?

Cron job monitoring checks that a scheduled task actually runs. The job sends a request to a unique URL each time it finishes, and the monitoring service alerts you when an expected request does not arrive.

What is the difference between heartbeat monitoring and uptime monitoring?

An uptime monitor sends a request to your service and checks the response. A heartbeat monitor works the other way: your job sends a request to UptimeIO, and UptimeIO alerts you when it stops arriving. Heartbeats suit jobs that have no public address to check.

How do I add a heartbeat ping to a cron job?

Add a curl request to the heartbeat URL after your command, joined with &&, so it runs only when the command succeeds. For example: 0 2 * * * /opt/scripts/backup.sh && curl -fsS https://heartbeat.uptimeio.com/heartbeat/YOUR_HEARTBEAT_TOKEN.

How long before I am alerted about a missed run?

An incident opens when no ping arrives within the expected interval plus the grace period. With an interval of 1 hour and a grace period of 5 minutes, that is 65 minutes of silence.

Is heartbeat monitoring available on the Free plan?

Yes. Heartbeat and cron monitoring is available on every plan. On Free the shortest expected interval is 5 minutes, and on Pro and Scale it is 1 minute.

Does UptimeIO send SMS alerts for missed heartbeats?

No. Alerts go to email, Slack, Telegram, Pushover, or webhooks. There is no SMS or phone-call alerting.

Related

Start monitoring in a few minutes

Start monitoring free

Free plan · 50 monitors · No credit card required