Quick Start Guide

Get started with DeadManPing in 2 minutes. Monitor your cron jobs with a simple curl command.

Important: What DeadManPing Does

DeadManPing doesn't run your jobs. It only observes the results.

Your cron runs your jobs. Your scripts execute your logic. DeadManPing only observes if the ping arrived, when it arrived, and what payload it contained.

Keep your cron. Keep your scripts. Just add one curl line at the end of your existing script.

1. Create a Monitor

After signing up, create your first monitor. Give it a name and set how often your job should run.

2. Get Your Ping URL

Each monitor gets a unique URL. Copy it and add it to your cron job or script.

https://deadmanping.com/ping/your-monitor-slug

3. Add to Your Existing Script

Important: The curl command must be inside your script, not in the cron line, because only in the script do you have access to variables from execution results (e.g., count, file size, duration).

Here are examples for different scenarios:

Basic Bash Script

#!/bin/bash
# Your existing backup script here
./backup.sh
# Add this one line at the end
curl -X POST "https://deadmanping.com/ping/your-monitor-slug" \
-H "Content-Type: application/json" \
-d '{`"success": true}'

Bash Script with Data from Execution

#!/bin/bash
users_synced=$(./sync_users_logic.sh)
if [ $? -eq 0 ]; then
curl -X POST "https://deadmanping.com/ping/your-monitor-slug" \
-H "Content-Type: application/json" \
-d "{\"success\": true, \"count\": $users_synced}"
else
curl -X POST "https://deadmanping.com/ping/your-monitor-slug" \
-H "Content-Type: application/json" \
-d '{`"success": false}'
fi

Crontab Entry

Just call your script. The curl is inside the script.

0 3 * * * /path/to/backup.sh

Python Script

import requests
# Your existing script logic here
records_synced = sync_users()
# Add this one line at the end
requests.post(
"https://deadmanping.com/ping/your-monitor-slug",
json={"success": True, "count": records_synced}
)

Node.js Script

const https = require('https');
// Your existing script logic here
const recordsSynced = await syncUsers();
// Add this one line at the end
const payload = JSON.stringify({"success": true, "count": recordsSynced});
const req = https.request('https://deadmanping.com/ping/your-monitor-slug', {
method: 'POST',
headers: {'Content-Type': 'application/json'}
});
req.write(payload);
req.end();

What Can You Monitor?

DeadManPing can monitor different types of verification with data from your script execution:

File Verification

Check if backup file exists and size (GB)

if [ -f "$BACKUP_FILE" ]; then
  FILE_SIZE_GB=$(du -h "$BACKUP_FILE" | ...)
  curl ... -d "{\"file_exists\": true, \"size_gb\": $FILE_SIZE_GB}"
fi

Count Verification

How many records/items were processed

RECORDS_PROCESSED=$(./sync.sh | grep -c "synced")
curl ... -d "{\"count\": $RECORDS_PROCESSED}"

Duration Verification

How long script execution took

START_TIME=$(date +%s)
./generate_report.sh
DURATION=$((END_TIME - START_TIME))
curl ... -d "{\"duration_seconds\": $DURATION}"

Status Verification

Success/failure with context

if ./backup.sh; then
  curl ... -d "{\"success\": true, \"backup_size\": \"$SIZE\"}"
else
  curl ... -d "{\"success\": false, \"error\": \"$ERROR\"}"
fi

Threshold Verification

Numeric values (more/less than X)

FILES_DELETED=$(./cleanup.sh | wc -l)
curl ... -d "{\"files_deleted\": $FILES_DELETED}"
# In dashboard: files_deleted >= 10 → OK, < 10 → WARN

4. Report Failures

If your job fails, you can report it by adding ?s=fail to the URL:

curl -X POST "https://deadmanping.com/ping/your-monitor-slug?s=fail&m=Database+connection+error"

5. Set Up Alerts

Configure email, Slack, or Discord webhooks in your settings. You'll get instant notifications when:

  • Your job doesn't ping within the expected time window
  • Your job reports a failure status
  • Your job recovers after being down

FAQ

Do I need to migrate my cron jobs?

No. Keep your cron. Keep your scripts. Just add one curl line at the end of your existing script.

Does DeadManPing run my jobs?

No. Your cron runs your jobs. DeadManPing only observes the results. DeadManPing doesn't touch execution.

Why must curl be inside the script, not in the cron line?

Because only inside the script do you have access to variables from execution results (e.g., count, file size, duration). Data must come from execution, not be hardcoded.

What if my job runs less frequently than 5 minutes?

The free tier has a minimum interval of 5 minutes. Upgrade to Starter or Pro plan for longer intervals.

Can I monitor jobs that run on different servers?

Yes! As long as the server can make HTTP requests, you can ping from anywhere.

What happens if I exceed my monitor limit?

You'll need to upgrade your plan to create more monitors. Existing monitors will continue to work.