Core Concepts
Heartbeats

Heartbeats

Alerts tell you when something happens. Heartbeats tell you when something stops happening — a nightly backup that didn't run, a sync job that silently died, a cron that never fired.

Your job checks in after every successful run. If a check-in doesn't arrive within the expected interval (plus a grace period), FlowAlert raises the alarm like any other alert.

Setting one up

  1. Dashboard → Heartbeats → New heartbeat — name it, set how often it should check in ("expected every 24 hours") and a grace period.
  2. Copy the monitor's check-in URL and ping it at the end of every successful run:
# End of your backup script / cron job — GET or POST both work
curl -fsS https://api.flowalert.io/v1/heartbeats/YOUR_TOKEN/ping > /dev/null

Or drop the ready-made line from the dashboard straight into crontab. No API key needed — the URL's token is the authentication.

⚠️

Ping only on success. If the job fails, don't check in — silence is exactly what FlowAlert is listening for.

WordPress site? The FlowAlert WordPress plugin can ping a heartbeat for you — enable Site Heartbeat in its settings and the plugin creates this monitor automatically (30-minute interval tuned for WP-Cron, which only runs on traffic). The whole site becomes the monitored job; no crontab needed.

What the states mean

StateMeaning
Waiting for the first pingCreated, never checked in — wire the URL into your job
UpChecked in on time
DownNo check-in within interval + grace — a heartbeat.missed event fired
PausedMonitoring suspended (maintenance, seasonal jobs)

Routing missed check-ins

A silent monitor fires a heartbeat.missed event; when it recovers, heartbeat.recovered. They route like any other event — add a rule for heartbeat.* so they reach the right person. The dashboard warns you if heartbeats exist but nothing routes them.

Missed-check-in alerts default to High priority with acknowledgement required — a dead backup is exactly the kind of thing someone should own.

Site-linked heartbeats: verified before they page you

WP-Cron — which powers the WordPress plugin's heartbeat — only runs when someone visits the site. A quiet night can starve the heartbeat while the site is perfectly healthy. To keep that from paging anyone, a monitor linked to a site (Dashboard → Sites) gets an extra step before any alert: FlowAlert probes the site over HTTP first.

  • Site unreachable → the alert fires immediately, enriched with the probe result. This is the real fire.
  • Site still answers → no page. The monitor waits quietly, re-probing every few minutes. Only if the silence outlasts the quiet tolerance (3× the interval + grace, at least 30 minutes) does a heartbeat.missed fire — worded to say the site serves HTTP but WordPress hasn't checked in, which usually means WP-Cron is starved or PHP is broken behind a cache. Any real check-in resets the clock.

Monitors without a linked site behave exactly as before. The dashboard reflects the split: the Heartbeats page groups Site check-ins (site-linked, usually auto-created by the plugin) separately from Job monitors (backups, crons, syncs) once you have both.

Active uptime checks

The reverse direction also exists: enable Uptime check on a site (Dashboard → Sites) and FlowAlert probes it over HTTP every few minutes, no plugin or traffic required — this works for any site, WordPress or not. Three consecutive failed probes fire a site.down event; the first success afterwards fires site.recovered. Both route like any other event (a site.* rule catches them) and, like heartbeat alerts, they are never swallowed by an exhausted monthly quota. Plans cap how many sites can have the uptime check enabled at once: 1 on Free, 5 on Pro, 50 on Agency (archiving a site switches its check off and frees the slot). Heartbeat monitors have their own caps — 1 on Free, 10 on Pro, 100 on Agency.

The two signals are complementary: the uptime check answers "does it serve HTTP?" with no traffic dependence, while the heartbeat catches what a 200 can't — PHP dead behind a cache, broken cron, a suspended account still serving cached pages. A site with both linked is genuinely well-watched.