Features · Monitoring · Heartbeats
Monitoring · Heartbeats

The cron didn't run.
Now you know.

Each cron, backup job or scheduled task gets a slug URL. It pings on success; we alert when the ping doesn't come. Late and dead are different events — late is yellow, dead is red.

cron pings · last 24h
nightly-backup ok · 2m ago
sitemap-rebuild ok · 14m ago
invoice-run late · expected 09:00
log-rotate ok · 3h ago
cache-warm dead · no ping 26h
— Why this matters

A silent cron is the worst kind of cron.

01

A failed cron makes no noise.

Unlike a crashed service, a job that never ran produces no metric and no log. You find out months later, usually because something downstream broke.

02

"Did it run?" needs a definite answer.

A schedule the check knows about turns that into yes or no, rather than an inference from side effects.

03

Late and dead are different events.

A backup twenty minutes late might be a slow disk. A backup that has not pinged in 24 hours is a problem. They alert differently.

— What's included

How a check is defined.

A slug URL
POST or GET with start, success or fail. One line at the end of your script.
Interval mode
Expect a ping every N seconds, minutes or hours.
Cron mode
Weekday and time rows compiled into a cron expression, so "weekdays at 09:00" is expressed as itself.
Timezone aware
Per check, defaulting to UTC — because "09:00" means a different moment depending on where the job thinks it lives.
Grace period
Shared by both modes, for the job that is always a minute late and always fine.
Three states
Healthy, late, dead.
Discovered from crontabs
The agent finds existing cron jobs and they can be linked to a check rather than re-entered.
Registrable from scripts
Through the CLI or MCP, with self-minted keys, so a job can create its own check.
— How it works

The job tells you it ran.

1

The job pings a slug

A URL per check, hit at the end of the run. No SDK, no API key — the slug is the authentication.

2

A window decides

Interval or cron schedule, plus a grace period, define when the ping was due and how much lateness is tolerable.

3

Late and dead separate

Late is a warning while the job may still finish. Dead is a page. Conflating them is why cron alerts get muted.

— Works with

Connected capabilities

— FAQ

Questions, answered honestly.

How many heartbeats can I have? +
50 on Free, 500 on Starter, 5000 on Pro, unlimited on Enterprise.
What if the network drops the ping? +
You can configure retries in your cron wrapper; the platform also accepts late pings within a grace window without resetting the timer.
Is the slug URL secret? +
It's long and random; treat it like a webhook secret. You can rotate from settings.

Make every scheduled job auditable.

Heartbeats are part of every plan.

Get early access Back to Monitoring