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.

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
- 01
Silence becomes a signal
The failure nobody catches is the job that never started. A heartbeat turns a missing ping into an alert.
- 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.
- 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.
- 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
- 01
Create a heartbeat
Set how often you expect a ping. Tune the grace window and alert cool-down if you want to.
- 02
Ping from your job
Call the secret URL when the job succeeds, or the same URL with /fail appended when it does not.
- 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.
- 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.


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.
Go deeper