Output Monitoring

Your cron job didn't fail.
It lied.

It ran. It exited 0. It pinged on time. And it exported nothing, backed up nothing, synced nothing. Most tools call that a success. DeadManCheck checks whether your job actually produced valid results.

Start free → See quickstart
Standard monitoring
✓ ETL job ran at 03:00
✓ Exit code 0
✓ Ping received
Rows exported: 0  ·  upstream API returned empty
Alert sent: no
DeadManCheck
✓ ETL job ran at 03:00
✓ Exit code 0
✓ Ping received
rows_exported: 0  ·  assertion: rows > 0
⚠ Assertion failed — alert sent

The false success problem

Standard monitoring asks: did the job run? If yes, everything is fine. But that's the wrong question.

The right question is: did the job do what it was supposed to do?

Backup job ran but copied 0 files
Source directory was empty due to a misconfigured path. Exit 0. Ping sent. No backup taken.
ETL job completed but exported 0 rows
Upstream API returned an empty response due to an auth token expiry. The job handled it gracefully — and silently wrote nothing.
Sync job returned 200 but output was empty JSON
API returned {} instead of a populated payload. The script didn't error — it just synced nothing.
Nightly report ran but produced invalid output
A downstream schema change caused the report to generate malformed data — no errors thrown, no alert sent.

How DeadManCheck checks if your job actually worked

1. Send JSON output with your ping

# Bash
ROWS=$(run-etl-job.sh)
curl -s -X POST \
https://deadmancheck.io/ping/token/end \
-H "Content-Type: application/json" \
-d "{\"rows\": $ROWS}"
# Python
result = run_etl()
requests.post(
"https://deadmancheck.io/ping/token/end",
json={"rows": result.count,
"status": result.status}
)

2. Define assertions in the dashboard

Example assertions
rows > 0
status == "ok"
files_written >= 1
error_count == 0
If any assertion fails
Alert sent immediately — even though the job exited 0 and pinged on time.

Available on Developer and higher plans.

Why exit code 0 isn't enough

Exit codes communicate whether a process ran successfully — not whether it produced the right output. Most scheduled jobs are designed to handle empty responses, missing files, or API errors gracefully — which means they'll exit 0 even when nothing useful happened.

Exit code tells you
  • • The process started
  • • It didn't crash
  • • No unhandled exception
Exit code doesn't tell you
  • • How many rows were processed
  • • Whether output was valid
  • • Whether anything was written
  • • Whether downstream systems got data
Checking results tells you
  • • Exactly what your job produced
  • • Whether it meets your expectations
  • • Whether to trust the result

Monitor cron jobs that succeed but do nothing

If you're searching for cron job succeeded but did nothing, job ran but returned empty data, or how to validate cron job output — DeadManCheck is built for exactly this.

The problem has a name now: false success. Your job exits 0, your monitoring dashboard stays green, and your data pipeline silently stops working. It's the failure mode that standard monitoring tools were never designed to catch — because they only ask "did it run?", not "did it work?".

DeadManCheck introduces a new check: send your job's output as JSON with the ping, set rules on what valid output looks like, and get alerted the moment your job produces nothing useful.

DeadManCheck is the only cron monitoring tool that does this

Output monitoring is a new category. No other tool has it.

Healthchecks.io and Cronitor both monitor whether jobs run and whether they run on time. Neither can tell you what the job produced. If your backup copied 0 files or your ETL exported 0 rows, they stay green. DeadManCheck doesn't.

Capability DeadManCheck Healthchecks.io Cronitor
Missing ping alert
Duration monitoring ✓ automatic Manual grace period Manual only
Output assertions unique
JSON output validation
Open source

Related guides

Feature
Monitor long-running cron jobs
Alert when jobs take longer than expected
Overview
Cron job monitoring
All three failure modes explained
Compare
vs Healthchecks.io
Output assertions vs ping-only monitoring

Stop trusting exit code 0

Job result checks are available on the Developer plan. Start with the free plan and upgrade when you need them.

Start free →

Or self-host for free on GitHub