Documentation

Everything you need to wire up a monitor in under two minutes.

1. The idea

Your scheduled job sends an HTTP request ("ping") to a unique URL every time it runs. Pulsewatch expects that ping on a schedule you define. If it doesn't arrive within the period + grace window, the monitor goes down and you get alerted. The next ping flips it back to up.

2. Endpoints

SignalURLMeaning
Successpulsewatch-production-be33.up.railway.app/ping/<token>Job completed OK. Resets the clock.
Startpulsewatch-production-be33.up.railway.app/ping/<token>/startJob began (optional — measures duration).
Failpulsewatch-production-be33.up.railway.app/ping/<token>/failJob reported a failure. Alerts immediately.

Both GET and POST work. A 200 means we recorded it.

3. Examples

Cron (only ping on success):

0 3 * * * /path/backup.sh && \
curl -fsS pulsewatch-production-be33.up.railway.app/ping/TOKEN

Shell script (report start, success, or failure):

curl -fsS pulsewatch-production-be33.up.railway.app/ping/TOKEN/start
if ./job.sh; then
  curl -fsS pulsewatch-production-be33.up.railway.app/ping/TOKEN
else
  curl -fsS pulsewatch-production-be33.up.railway.app/ping/TOKEN/fail
fi

Python:

import urllib.request
urllib.request.urlopen("pulsewatch-production-be33.up.railway.app/ping/TOKEN", timeout=10)

Node.js:

await fetch("pulsewatch-production-be33.up.railway.app/ping/TOKEN")

GitHub Actions (last step):

- run: curl -fsS pulsewatch-production-be33.up.railway.app/ping/TOKEN

Kubernetes CronJob:

command: ["/bin/sh","-c"]
args: ["mytask && wget -q -O- pulsewatch-production-be33.up.railway.app/ping/TOKEN"]

4. Choosing period & grace

Period = how often you expect a ping (e.g. a job that runs hourly → 3600s). Grace = how late is acceptable before we alarm (e.g. a backup that sometimes takes 8 min → 600s grace). We alert when now > last_ping + period + grace.

5. Alerts

You get an email (and Slack message, if you add a webhook to the monitor) on two events only: when a job goes down, and when it recovers. Use the Send test alert button on any monitor to confirm your channels work.