Crontap Heartbeats

The alert for the cron job that never ran.

Heartbeats turn monitoring around: your job pings Crontap after it runs. If the ping does not arrive in time, you get an alert.

The Crontap heartbeats page. The headline reads “The alert for the cron job that never ran” above a timeline of five-minute slots, three of them filled green.
crontap.com/heartbeats

What it is

A dead man's switch for anything that runs on a schedule

Uptime monitoring asks whether your URL responds. That means nothing for work with no URL: a nightly backup, a data import, a cleanup task in someone else's scheduler. If that job stops running, nothing goes down. Nothing happens at all.

A heartbeat turns the check around. Crontap gives you a secret URL and your job calls it when it finishes. You say how often to expect a ping and how much lateness is normal. Grace defaults to 20% of the period, with a five minute minimum.

Miss the deadline and the heartbeat goes from up to late to down, and you get an email. Your job can also report its own failure by calling the same URL with /fail on the end, which alerts straight away. When the next good ping lands, you get a recovery notice.

Adding a heartbeat is one extra line at the end of a job, so it works with schedulers you do not control. Anything that can make an HTTP request can report in: crontab, a CI workflow, a container, a Lambda.

Why it is built this way

The ideas behind it

  1. 01

    Silence becomes a signal

    The failure nobody catches is the job that never started. A heartbeat turns a missing ping into an alert.

  2. 02

    Period plus grace

    Say how often you expect a ping and how late is still fine. Late is visible but quiet. Past grace is an alert.

  3. 03

    Two kinds of bad news

    A missing ping means the job never ran. A ping to /fail means it ran and failed. Crontap tells them apart.

  4. 04

    One line to adopt

    Add a curl to the end of an existing job. No agent, no SDK, no change to where or how the job runs.

Flow

How it works

  1. 01

    Create a heartbeat

    Set how often you expect a ping. Tune the grace window and alert cool-down if you want to.

  2. 02

    Ping from your job

    Call the secret URL when the job succeeds, or the same URL with /fail appended when it does not.

  3. 03

    Crontap watches the clock

    A check runs every minute. Past the period, the heartbeat is late. Past the grace window, it is down and alerts go out.

  4. 04

    Recovery and history

    The next good ping restores the heartbeat and sends a recovery notice. Ninety days of events feed a reliability percentage.

Specifics

What you get

  • A secret ping URL per heartbeat: call it on success, append /fail to report failure
  • Accepts GET, HEAD and POST, so curl, a browser or any language works
  • Attach a short message to any ping in the query string or request body
  • Period plus grace: grace defaults to 20% of the period, with a five minute minimum
  • Four visible states: pending, up, late and down. Late is a warning, not a page.
  • Alerts for a missed ping, an explicit failure and a recovery, by email and an optional JSON webhook
  • Rotate the secret URL without losing the heartbeat's history
  • 90 days of raw events, permanent daily rollups, and a reliability percentage
  • Copy-paste setup snippets for crontab, GitHub Actions, Node, Python, Docker and more

Scope

Version one tracks whether a job finished, not how long it took. There is no /start endpoint yet. You describe what to expect as a period plus grace, not as a cron expression.

Screens

What it looks like

A closer look at Crontap Heartbeats.

The setup section of the Crontap heartbeats page, headed “Add it to your job in one line”. A code block shows a crontab wrapper script that curls the ping URL, or the /fail URL, based on the job's exit status.
Add it to your job in one line
Three cards on the Crontap heartbeats page headed “Which one do I need?”, comparing what schedules, uptime monitors and heartbeats each catch and when to use them.
Schedules, uptime or heartbeats

From crontap.com/heartbeats

“The alert for the cron job that never ran.”

Give every cron job a secret ping URL. Crontap detects misses within one minute after grace, then queues email and webhook notifications. /fail and 90-day history.