Uptime + response + heartbeat monitoring

Know what broke
before your users do.

Monitor websites, APIs, cron jobs, and workers. See uptime at a glance and catch failures that a simple 200 OK would miss.

Checks run from outside your service.

Illustrative example

Status at a glance

1 service degraded / 11 healthySelected monitors · illustrative subset
Checked 12s ago

myapp.com

HTTP monitor
Operational
Availability Up
Response check Passed
240 ms
Last 30 daysIllustrative example

API /health

HTTP monitor
Degraded
Availability Up
Response check Failed
980 ms

HTTP 200Expected: status = "ok"Received: status = "error"

Last 30 daysIllustrative example

Daily backup

Heartbeat monitor
Operational
Heartbeat Up
Last signal2m ago
recent signal
Last 30 daysIllustrative example
Up Degraded Down Unknown

Response validation

200 OK doesn't
always mean OK.

Availability tells you the endpoint answered. A response check tells you whether it answered with the thing your app needs.

response.json · exampleHTTP 200
{
  "status": "error",
  "database": {
    "connected": false
  }
}
Availability Up
Response check Failed
Expecteddatabase.connected = true
Receiveddatabase.connected = false
HTTP statusText containsJSON nested value equals

Heartbeat monitoring

Some failures never
return an error.

Cron jobs, workers, and backups can simply stop. Pulse watches for the signal that should have arrived.

  1. 01
    Create a heartbeatSet the interval your job should meet.
  2. 02
    Add one request to your jobSend a bearer-token POST when it finishes.
  3. 03
    Get alerted if the signal stopsPulse marks it down when the window closes.

Daily backup

Heartbeat · illustrative status
Operational
Heartbeat UpLast signal2m agoExpectedevery 24h
heartbeat.shexample snippet
curl --max-time 10 -X POST \
  -H "Authorization: Bearer $PULSE_SECRET" \
  https://example.com/api/ping/MONITOR_ID || true
Replace the URL, monitor ID, and $PULSE_SECRET with your values.

Discord alerts

When something breaks,
Discord knows.

Down and recovery alerts without a wall of configuration. Connect one channel and keep shipping.

#ops-alerts · example
API /health is downHTTP status: 200Expected: status = "ok"Received: status = "error"
#ops-alerts · example
API /health recoveredBack to expected response

Simple setup

Monitoring should take
minutes, not a weekend.

01
Website / APIPaste a URLDone
02
Cron / WorkerCreate heartbeatCopy snippetDone

Keep a quiet eye on it

Ship it. We'll
keep watch.

Start with your website, API, or background job.