Everything you need to wire up a monitor in under two minutes.
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.
| Signal | URL | Meaning |
|---|---|---|
| Success | pulsewatch-production-be33.up.railway.app/ping/<token> | Job completed OK. Resets the clock. |
| Start | pulsewatch-production-be33.up.railway.app/ping/<token>/start | Job began (optional — measures duration). |
| Fail | pulsewatch-production-be33.up.railway.app/ping/<token>/fail | Job reported a failure. Alerts immediately. |
Both GET and POST work. A 200 means we recorded it.
Cron (only ping on success):
Shell script (report start, success, or failure):
Python:
Node.js:
GitHub Actions (last step):
Kubernetes CronJob:
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.
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.