Documentation

Everything you need to monitor your cron jobs and scheduled tasks.

Quick Start

Get started with MissedBeat in under 5 minutes. Monitor your first cron job with just a few simple steps.

1. Create Your Account

Sign up for a free account. No credit card required for the free tier which includes 2 monitors.

Sign Up Free →

2. Create a Monitor

In your dashboard, click "Create Monitor" and configure your job settings:

Name:A descriptive name like "Daily Database Backup"
Interval:How often your job runs (e.g., 24 hours, 1 hour, 5 minutes)
Grace Period:Extra buffer time before alerting (default: 5 minutes)

3. Get Your Ping URL

After creating a monitor, you'll receive a unique HTTPS ping URL:

https://missedbeat.dev/ping/abc123def456

4. Add to Your Cron Job

Update your cron job to ping MissedBeat when it completes successfully. The && operator ensures the ping only happens if your script succeeds.

0 2 * * * /path/to/backup.sh && curl -m 10 https://missedbeat.dev/ping/abc123def456

Integration Examples

MissedBeat works with any scheduled task that can make an HTTP request. Here are examples for popular platforms and languages.

Bash Script

#!/bin/bash
# Your backup script
/usr/bin/backup.sh

# Ping MissedBeat on success
curl -m 10 --retry 3 https://missedbeat.dev/ping/YOUR_PING_ID

Python

import requests

def run_job():
    # Your job logic here
    process_data()

    # Ping MissedBeat on success
    requests.get("https://missedbeat.dev/ping/YOUR_PING_ID", timeout=10)

Node.js

const https = require('https');

async function runJob() {
  // Your job logic here
  await processData();

  // Ping MissedBeat on success
  https.get('https://missedbeat.dev/ping/YOUR_PING_ID');
}

GitHub Actions

name: Daily Backup
on:
  schedule:
    - cron: '0 2 * * *'

jobs:
  backup:
    runs-on: ubuntu-latest
    steps:
      - name: Run backup
        run: ./backup.sh

      - name: Ping MissedBeat
        run: curl -m 10 https://missedbeat.dev/ping/YOUR_PING_ID

Docker / Kubernetes CronJob

apiVersion: batch/v1
kind: CronJob
metadata:
  name: backup-job
spec:
  schedule: "0 2 * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: backup
            image: backup:latest
            command:
            - /bin/sh
            - -c
            - |
              /app/backup.sh && \
              curl -m 10 https://missedbeat.dev/ping/YOUR_PING_ID

Alert Configuration

Configure how you want to be notified when your monitors detect failures.

Email Alerts

Available on all plans. Alerts are sent to your account email when a monitor misses a ping. You can add additional email addresses in your account settings.

Slack Integration

Available on Starter plan and above. Configure Slack webhooks in your monitor settings:

  1. 1.Create an incoming webhook in your Slack workspace
  2. 2.Copy the webhook URL
  3. 3.Paste it into your monitor's alert settings

Discord Integration

Available on Starter plan and above. Create a Discord webhook and add it to your monitor settings.

Webhook Alerts

Available on Pro plan and above. Send alerts to any HTTP endpoint for custom integrations with PagerDuty, Opsgenie, or your own systems.

Webhook Payload Example:

{
  "monitor_id": "abc123",
  "monitor_name": "Daily Backup",
  "status": "down",
  "last_ping": "2026-03-20T02: 00: 15Z",
  "expected_ping": "2026-03-21T02: 00: 00Z",
  "message": "Monitor has not checked in for 25 hours"
}

API Reference

Simple HTTP endpoints to ping your monitors. No authentication required for pinging.

GET/ping/:monitorId

Send a ping to confirm your job ran successfully.

Parameters:

monitorId- Your unique monitor identifier

Example:

curl https://missedbeat.dev/ping/abc123def456
POST/ping/:monitorId

Send a ping with optional metadata (log output, error messages, etc.).

Example:

curl -X POST https://missedbeat.dev/ping/abc123def456 \
  -H "Content-Type: application/json" \
  -d '{"status": "success", "duration": 42}'

Best Practices

Only Ping on Success

Use && to ensure the ping only happens if your script succeeds:

0 2 * * * /path/to/job.sh && curl https://missedbeat.dev/ping/YOUR_ID

Set Appropriate Grace Periods

Add a grace period to account for normal variations in job runtime. For example, if your job usually takes 5-10 minutes, set a 15-minute grace period to avoid false alarms.

Use Timeouts

Add timeouts to prevent your ping from hanging if MissedBeat is slow to respond:

curl -m 10 --retry 3 https://missedbeat.dev/ping/YOUR_ID

Monitor Critical Jobs

Focus on monitoring jobs where silent failures could cause data loss or service degradation:

  • Database backups
  • Data synchronization
  • SSL certificate renewals
  • Report generation

Troubleshooting

Monitor shows "Down" but job is running

Check 1: Verify the ping URL is correct in your cron job

Check 2: Ensure your job is actually completing successfully (check logs)

Check 3: Verify network connectivity from your server to missedbeat.dev

Check 4: Increase the grace period if your job runtime varies

Not receiving alert emails

Check 1: Verify your email address is correct in account settings

Check 2: Check spam/junk folder

Check 3: Add noreply@missedbeat.dev to your contacts

Ping returns error

404 Not Found: Monitor ID is incorrect or monitor was deleted

429 Too Many Requests: You're pinging too frequently (rate limit)

500 Server Error: Temporary issue - retry with backoff

Need more help?

Can't find what you're looking for? We're here to help.

Contact Support