Heartbeats

Have a job ping a URL each time it runs. When the pings stop, or the job reports a failure, you get an alert by ntfy or webhook, and another when it's back. No account: you get a ping URL and a private link to manage it.

New check

Send alerts to

Durations like 90s, 15m, 1h, 1d (1 minute to 31 days). Without a reminder you get one alert per outage; with one, the down alert repeats that often (15 minutes or more) until the check is back, at most daily after the first day, for up to 30 days. A bare ntfy topic goes to ntfy.sh; give a full URL for your own server. Webhooks get a JSON POST (check, status, message, reason, period, grace, last_ping, at); Discord and Slack webhook URLs get formatted messages in their own style.

Pinging

curl -fsS -m 10 --retry 3 ipq.sh/hb/IDit ran
curl -fsS -m 10 ipq.sh/hb/ID/startit started (alerts if it never finishes)
curl -fsS -m 10 ipq.sh/hb/ID/failit failed: alert now
curl -fsS -m 10 ipq.sh/hb/ID/$?pass the exit code: 0 is a success

Use https:// in real jobs: the ID is the secret. From a terminal: curl -d period=1h -d grace=15m -d ntfy=my-backups ipq.sh/heartbeat. Nothing about whoever pings is stored, only when and what kind. Checks silent for 30 days (7 if never pinged) are deleted, with one last alert.

Lost your manage link?

A one-time link goes to the check's alerts (its ntfy topic or webhook), so only whoever gets those can use it. Opening it gives you a new manage link; the old one stops working.