Home
Pricing
Platform Blog About Contact FAQ
Sign in Start free
Cron Job Monitoring

Know the second
a job goes silent.

Heartbeat & dead-man's-switch monitoring for every scheduled task — cron, ETL pipelines, backups, and queue workers. If a run is late, missed, or exits non-zero, your team finds out before the data does.

Free tier included No credit card 2-minute setup
app.siteqwality.com / heartbeats / nightly-backup
nightly-backup HealthyLIVE
LAST RUN02:01 UTC
DURATION4m 38s
EXIT CODE0
Mon278ms
Tue281ms
Wed275ms
Thu282ms
Fri279ms
What you get

Monitoring for the jobs that never make a request.

Uptime checks work by making HTTP requests. Scheduled jobs work the other way round — they call home when they succeed. Site Qwality gives each job a unique ping URL; silence means something went wrong.

Schedule-aware alerting

Tell us when a job is supposed to run. If the ping doesn't arrive within the grace period, an incident opens automatically.

Grace period per monitor

Add a configurable buffer after the scheduled time before alerting — accounts for queue depth variance without missing real failures.

Exit code and duration capture

Pipe your job's exit code and run duration to the ping URL. Alert on non-zero exits or runs that exceed an expected ceiling.

Missed-run and late-run alerts

Separate alert types for jobs that never start versus jobs that start but don't finish — so triage starts with the right context.

One-line integration for any stack

A plain HTTPS GET or POST to a URL with no SDK required. Works from bash, Python, Node, Ruby, Go — anywhere you can make a request.

Run history and duration trends

A timeline of every ping, duration, and exit code so you can spot drifting run times before they become missed windows.

01 · Dead-man's switch pattern

No ping means
something broke.

Traditional monitoring checks that your service responds. Cron monitoring inverts that — your job signals success on every run. A missed signal is itself the alert. There's no polling, no log scraping, no agent to maintain.

  • Each monitor gets a unique ping URL your job calls at completion
  • Silence within the grace period triggers an immediate incident
  • Separate alerts for late starts, missed runs, and non-zero exits
app.siteqwality.com / heartbeats / daily-report-etl
daily-report-etl Missed runLIVE
EXPECTED06:00 UTC
LAST SEENyesterday
GRACE PERIOD15m
Mon142ms
Tue139ms
Wed145ms
Thu141ms
Frimissed
02 · One-line integration

Add a ping.
That's the whole job.

No SDK, no daemon, no config file. Copy the ping URL from your dashboard and append a curl call to your existing script. The exit-code and duration parameters are optional — add them when you want richer alerts.

  • Works from any language or shell that can make an HTTP request
  • Optional ?exit=\$? and ?duration= parameters for richer alerts
  • Supports POST with a JSON body for structured run metadata
wrap any script#!/bin/bash
set -euo pipefail

# your job
python /opt/etl/run.py
EXIT=$?

# ping Site Qwality
curl -fsS "https://ping.siteqwality.com/<token>?exit=${EXIT}"
✓ ping received · run logged
1

line of code to integrate any scheduled job

<1m

typical time from missed ping to alert delivery

run history retained for trend analysis

$0

free tier — start without a credit card

FAQ

Questions, answered.

Each monitor gets a unique ping URL. Your job calls that URL when it completes successfully. If the ping doesn't arrive within the expected window plus grace period, Site Qwality opens an incident and alerts your team.

Set a grace period — a buffer window after the scheduled time before an alert fires. For jobs with variable runtime, you can also set a maximum duration threshold so you hear about runs that are taking too long.

Yes. Append ?exit=\$? to the ping URL to record the exit code, and ?duration= to record elapsed seconds. Non-zero exits trigger their own alert type so you know whether a job never ran or ran and failed.

No. The integration is a single HTTPS request — a curl command, a fetch() call, or equivalent in any language. No daemon, no agent, no code dependency to maintain.

Yes — schedules can be set to any interval from every minute upward. The expected schedule uses standard cron syntax so you can express any cadence precisely.

Ready?

Start watching in under a minute.

Every product starts free — uptime, cron, synthetic, logs, RUM, incidents, and status pages. No credit card required.