Quickstart
Ship your first Drumbeats monitor in under five minutes. Create a monitor, copy the Ping URL, wire it into your job, route alerts.
This guide takes you from zero to a working Drumbeats monitor in five minutes. By the end you have a monitor that watches a real job, a notification channel that alerts your team, and the test commands needed to verify the wiring.
Step 1 — Create a monitor in the dashboard
Open the dashboard and click New Monitor. Pick the type that matches what you are tracking:
- Cron — jobs on a fixed schedule (e.g.
0 2 *nightly backups). - Heartbeat — jobs that repeat every N minutes (e.g. a worker loop polling every 5 minutes).
- Event-driven — jobs that run on demand (e.g. queue workers, webhook handlers, one-off scripts).
- Uptime — public HTTP endpoints (e.g. API health checks). Drumbeats polls these on your behalf, no ping needed.
Name the monitor, set the schedule (for Cron / Heartbeat) and grace period, then save.

Step 2 — Copy your Ping URL
Open the monitor and copy the Ping URL from the URLs panel:
https://api.drumbeats.io/v1/ping/<your-monitor-id>https://api.drumbeats.io/v1/ping/<your-monitor-id>That URL is everything Drumbeats needs. There is no authentication on ping endpoints — possession of the URL is the secret.

Step 3 — Wire the ping into your job
Send a start ping when the job begins and a success or failure ping when it ends. Drumbeats correlates them by run_id (any unique string per execution) and stores both events on the same run record.
RUN_ID="job-$(date +%s)"
API="https://api.drumbeats.io/v1/ping/<monitor-id>"
curl -sf "$API/start?run_id=$RUN_ID"
/usr/bin/backup.sh
if [ $? -eq 0 ]; then
curl -sf "$API/success?run_id=$RUN_ID"
else
curl -sf "$API/failure?run_id=$RUN_ID"
fiRUN_ID="job-$(date +%s)"
API="https://api.drumbeats.io/v1/ping/<monitor-id>"
curl -sf "$API/start?run_id=$RUN_ID"
/usr/bin/backup.sh
if [ $? -eq 0 ]; then
curl -sf "$API/success?run_id=$RUN_ID"
else
curl -sf "$API/failure?run_id=$RUN_ID"
fiimport os, uuid, requests
API = "https://api.drumbeats.io/v1/ping/<monitor-id>"
run_id = f"job-{uuid.uuid4()}"
requests.get(f"{API}/start", params={"run_id": run_id})
try:
run_my_job()
requests.get(f"{API}/success", params={"run_id": run_id})
except Exception as exc:
requests.post(f"{API}/failure", params={"run_id": run_id}, json={"payload": str(exc)})
raiseimport os, uuid, requests
API = "https://api.drumbeats.io/v1/ping/<monitor-id>"
run_id = f"job-{uuid.uuid4()}"
requests.get(f"{API}/start", params={"run_id": run_id})
try:
run_my_job()
requests.get(f"{API}/success", params={"run_id": run_id})
except Exception as exc:
requests.post(f"{API}/failure", params={"run_id": run_id}, json={"payload": str(exc)})
raiseimport { randomUUID } from "node:crypto";
const API = "https://api.drumbeats.io/v1/ping/<monitor-id>";
const runId = `job-${randomUUID()}`;
await fetch(`${API}/start?run_id=${runId}`);
try {
await runMyJob();
await fetch(`${API}/success?run_id=${runId}`);
} catch (err) {
await fetch(`${API}/failure?run_id=${runId}`);
throw err;
}import { randomUUID } from "node:crypto";
const API = "https://api.drumbeats.io/v1/ping/<monitor-id>";
const runId = `job-${randomUUID()}`;
await fetch(`${API}/start?run_id=${runId}`);
try {
await runMyJob();
await fetch(`${API}/success?run_id=${runId}`);
} catch (err) {
await fetch(`${API}/failure?run_id=${runId}`);
throw err;
}The Ping API accepts both GET and POST. POST is the right call when you want to attach a payload (error message, stdout, metrics) — see Ping API: payloads.
Step 4 — Route alerts to a notification channel
A monitor without a notification group cannot alert anyone. Three substeps:
- Settings → Notification Channels. Connect a channel: Slack, Email, Telegram, Discord, Webhook, or enable Browser Push for your account.
- Notification Groups. Create a group and add the channels you just connected. A group can mix channel types — alerts fan out to all members in parallel.
- Monitor → Notifications tab. Assign the group. The monitor immediately starts routing incidents to the group.
See Notification channels for per-channel setup details and Alert logic for cooldown and retry behaviour.
[SCREENSHOT: notifications/channels — Slack / Email / Telegram channel setup screen]
Step 5 — Test the end-to-end flow
Trigger a failure manually:
curl https://api.drumbeats.io/v1/ping/<monitor-id>/failurecurl https://api.drumbeats.io/v1/ping/<monitor-id>/failureThe alert should arrive in your channel within seconds. Then send a success ping to resolve the incident:
curl https://api.drumbeats.io/v1/ping/<monitor-id>/successcurl https://api.drumbeats.io/v1/ping/<monitor-id>/successIf nothing arrives, walk through Push troubleshooting or check the Incidents tab on the monitor — Drumbeats logs every channel delivery attempt.
Next steps
- Pick the right monitor type for each job: Monitor types overview.
- Wire pings into your stack with a real SDK pattern: Integrations.
- Understand what gets billed: Beats and usage.