Skip to content
Heartbeat / cron job monitoring

Find out when a background job silently stops

Heartbeat monitoring — also called cron job monitoring — works in reverse: instead of StatusLoom checking your server, your job calls a unique URL each time it finishes. If that call does not arrive on schedule, StatusLoom emails you that the job has stopped.

What is heartbeat monitoring?

Some of the most important work an application does has no web page: the nightly database backup, the queue worker sending invoices, the script that renews certificates. When one of those stops, nothing is "down" — so an ordinary uptime check cannot notice.

A heartbeat check flips the direction. You tell StatusLoom how often the job runs; the job calls its ping URL every time it succeeds. A missing ping is the alarm.

When you need it

Real failures this catches — each one invisible to an ordinary uptime check.

  • The backup that failed for three weeks

    The disk filled up and the nightly backup started failing quietly. With a heartbeat, the first missed night is an email — not a discovery on the day you need to restore.

  • A queue worker that crashed

    Password-reset emails and invoices pile up unsent. Ping from a small scheduled job that runs through the queue, and a dead worker means a missed ping within minutes.

  • A scheduler nobody restarted

    After a server move, the cron entry was never re-added. Every scheduled task stopped at once — and the heartbeat is the one thing that notices.

  • Certificate renewal

    An auto-renewal job that stops failing loudly fails 90 days later, when the certificate expires. A heartbeat on the renewal job catches it on day one.

How it works

  1. Step 01

    Create a heartbeat monitor

    Give it a name, say how often the job runs — from every few minutes to once a week — and how much grace to allow for a slow run.

  2. Step 02

    Add one line to your job

    Call the ping URL at the end of the job, after the real work has succeeded. GET and POST both work.

  3. Step 03

    We watch the clock

    Each ping opens a fresh window of your interval plus grace. A new monitor never alerts before its first ping, so setting it up early is safe.

  4. Step 04

    A missed ping becomes one email

    When the window passes with no ping, we re-check a minute later and then alert — the same two-strike rule as every check. The next ping sends the recovery email.

A real failure, step by step

A nightly backup at 2:00 AM, expected every day with 30 minutes' grace.

  1. Mon 02:04

    Ping received

    Backup finished. Next ping due by Tue 02:34.

  2. Tue 02:00

    Backup fails — disk full

    The job exits before its ping. Nothing arrives.

  3. Tue 02:34

    Window passes

    First miss recorded, re-checked a minute later.

  4. Tue 02:35

    Outage declared

    Email: "Nightly DB backup" missed its check-in.

  5. Tue 09:12

    Recovered

    Space freed, backup re-run, ping arrives. One recovery email.

Adding the ping to a cron job

Put the ping after the job, joined with && so it only fires when the job succeeded. Your own URL is shown on the monitor page, with a copy button.

0 2 * * * /home/app/backup.sh && curl -fsS -m 10 --retry 3 "<your ping URL>" > /dev/null

What it does not do

Stated plainly, so nothing surprises you later.

  • It knows only that the job reported success. If the job "succeeds" but writes an empty backup, the ping still arrives — put the ping after a real check, such as testing the file is non-empty.
  • The ping URL is the credential. Anyone with it can mark the job as having run; keep it private, and regenerate it from the monitor page if it leaks — the old URL stops working at once.
  • The expected interval can be set from five minutes to one week, with a grace period from one minute to 24 hours.
  • Pings are limited to ten a minute per monitor, so a job stuck in a retry loop cannot flood your history.

Common questions

What is the difference between a heartbeat and an uptime check?
An uptime check is outbound: StatusLoom visits your site. A heartbeat is inbound: your job visits StatusLoom. Use heartbeats for work that has no URL — cron jobs, backups, queue workers and scripts.
How soon after a missed run am I alerted?
About a minute after the grace period ends. The first missed deadline is re-checked a minute later before an incident is opened, so a late scheduler tick does not page you.
Will I get an alert the moment I create the monitor?
No. A heartbeat has no deadline until its first ping arrives, and the page shows "waiting for the first ping" until then.
What happens if I pause the monitor while the job keeps running?
Pings to a paused monitor are accepted and ignored. When you resume, the job gets a full fresh window rather than an instant "missed".
Can I use it from Windows Task Scheduler or a CI pipeline?
Yes. Anything that can make an HTTP GET or POST request — curl, wget, PowerShell's Invoke-WebRequest, a few lines of any language — can send the ping.
Is cron job monitoring free?
Yes. A heartbeat monitor counts as one of the five monitors on the free plan.

Set up heartbeat monitoring in a minute.

Five monitors free, of any type. No card, no trial period.