HEARTBEAT MONITORING

Monitor anything with a simple heartbeat.

  • Send one HTTPS request when work completes.
  • Alert on missing beats or unexpected metric values.
  • Works for services, scripts, devices, and agents.
cronitor.io/llms.txt — agent quick start
app.cronitor.io / heartbeats — 6 sources 6/6 REPORTING
MISSED BEATS 0
SCAN 07:00
SOURCE / CADENCE
EXPECTED ACTIVITY
ON TIME
07:0007:1007:2007:3007:40
RECEIVED MISSED STOPPED
Disney
Johnson & Johnson
Reddit
Shutterstock
Genentech
Yelp
GOV.UK
Razer
Rakuten
AB InBev
Chime
Monzo
monday.com
GoodRx
Zendesk
Meesho
app.cronitor.io / heartbeats / new-sales HEALTHY
EXPECT every 60s GRACE 90s BEATS · 30D 18,442
NOW→ EXPECTED
LAST BEAT13:59:00
NEXT EXPECTED14:00:00
OVERDUE+00:00
THE EXPECTED BEAT

Know when expected activity stops

Some failures never send an error. A process can be killed, a scheduler can stop, or a device can lose power before it reports anything. Cronitor expects the next heartbeat and alerts you when it never arrives.

  • Alerts fire on absence — no exit code and no error required.
  • They arrive wherever your on-call rotation already lives.
METRICS · ASSERTIONS

Every beat can carry a number

Attach a metric to each heartbeat — records processed, loop iterations, duration, latency, tokens, or cost — and Cronitor tracks the values over time.

Cronitor checks timing and metric values separately. A job can keep sending beats on schedule while its throughput falls for hours; you can alert on the bad value even though the heartbeat arrived on time.

  • Metrics: count, error_count, duration, latency, length, tokens, actions, cost.
  • Assertions on any metric, evaluated on every beat.
app.cronitor.io / heartbeats / nightly-etl HEALTHY
EVERY 1h ASSERT metric.count > 1000
2.5k 1.5k 500
THRESHOLD
VALUE
HOUR
CADENCE
ON TIME
awaiting first beat
ASSERTION
PASSING
0 of 13 beats evaluated
BACKGROUND* * * * *

Some things can only be monitored from the inside

Uptime checks need something reachable: a hostname, port, or URL. But much of the software you depend on lives behind a private network. A queue worker, nightly script, remote sensor, or agent may have nothing you can request from the outside.

Those systems can still make one outbound HTTPS request when they finish a unit of work. You tell Cronitor how often to expect that heartbeat, and Cronitor watches the time between requests. Nothing needs to be exposed, forwarded, or allow-listed.

This catches failures that leave no error behind. A killed process cannot report its own failure. A stopped scheduler cannot run an error handler. A device without power cannot send a final message. In each case, the missing heartbeat is the signal.

WHAT A HEARTBEAT ISONE REQUEST · NOTHING TO INSTALL

A heartbeat is a single HTTPS request from your code to a URL we hand you. Send it when the work is done. Cronitor records the time, measures the gap against the cadence you declared, and starts a grace period the moment the next one is late.

$curl https://cronitor.link/p/<API-KEY>/new-sales
TRANSPORTone HTTPS request
CONFIGURED BYdashboard · API · YAML
ALERTS10+ integrations
RETENTION12 months
CHECK OR HEARTBEATWHICH WAY THE REQUEST GOES
A CHECK

Cronitor makes the request, on your schedule, from the regions you choose. It needs something reachable, and what it proves is that your endpoint answered correctly.

A HEARTBEAT

Your code makes the request, when the work is actually finished. It needs nothing reachable, and what it proves is that the work happened at all.

Most teams run both — a check on the endpoint customers hit, and a heartbeat from the worker behind it.

PRODUCT HIGHLIGHTS* * * * *

Everything you need for heartbeat monitoring, out of the box

Heartbeats work for things that do not have an endpoint to check — a mailing list, crawl map, webhook subscription, or fleet of devices you will never SSH into.

Monitor hosts

Know when an internal host or container stops reporting, without exposing it to an uptime check.

Monitor email campaigns

Add Cronitor as a subscriber to any important mailing list and know instantly if email stops flowing.

Monitor user activity

Send heartbeats on key system and application events and follow trends over time.

Monitor any scraper

Include heartbeats in crawl maps and be alerted if ingestion or scraping activity stops.

Monitor webhooks

Subscribe Cronitor to a webhook and get alerted when a third-party service stops sending events.

Monitor devices

Send heartbeats from internet-connected devices and see which ones have stopped reporting.

Monitor agents NEW

Every scheduled agent run can emit a heartbeat — know the moment your automations stop.

Live dashboards

See every heartbeat monitor and its current status on one live dashboard.

Scheduled reports

Daily, weekly and monthly reporting for your whole team, so everybody stays informed.

Configuration as code

Provision and version-control monitors with YAML and the Cronitor CLI.

Open source

Add monitoring to any codebase in minutes with one of our official, open source SDKs.

99.997%UPTIME LAST 12 MONTHS
100M+EVENTS PER DAY
10M+CHECKS PER DAY
100K+JOBS PER DAY
10K+ALERTS PER DAY
2014FOUNDED IN CALIFORNIA
ONE PLATFORM* * * * *

Keep every kind of monitor in one place

The worker that sends the beat, the cron job that schedules it, and the endpoint it writes to are three monitors in the same account — one dashboard, one alert pipeline, one status page. When a beat doesn't arrive, the alert goes out the same way it does for a failed check or a late job.

FROM THE FIELD* * * * *
FAQ

Have more questions?

01What is heartbeat monitoring?

Heartbeat monitoring is a dead man's switch for software: a system you care about sends a simple ping to its unique Cronitor URL on a regular interval, and Cronitor alerts you when the pings stop arriving. It works for anything that can make an outbound HTTP request — jobs, daemons, data pipelines, devices, and AI agents.

02How do I send a heartbeat to Cronitor?

A heartbeat is just a GET request to your monitor's unique ping URL, sent with curl, any HTTP client, or one of Cronitor's SDKs. No inbound network access or installed agent is required, so it works from locked-down hosts, containers, and edge devices.

03How is a heartbeat different from an uptime check?

An uptime check is active monitoring: Cronitor probes your endpoint from its global network. A heartbeat is passive: your system reports in to Cronitor. Heartbeats are the right choice when the thing you are monitoring has no reachable endpoint to probe, like a cron job, background worker, or an agent running inside a private network.

04How do I know when an AI agent stops running?

Add a Cronitor heartbeat ping to the agent's scheduled execution path. Cronitor expects that independent evidence at the configured interval and alerts you if it stops arriving, even when the agent, its gateway, or its host cannot report its own failure.

05What can an AI agent include in a heartbeat?

A bare ping is enough to prove the agent is alive. The same stateless request can include tokens, actions, and cost metrics so Cronitor can show activity and alert on no-op streaks, unusual token use, or cost spikes.

* * * * *

Monitoring for Developers