Features

Everything you need
to know your jobs ran.

CronBeacon is one HTTP endpoint per monitor. Your job posts a check-in after it runs. We watch the schedule. When a check-in is failed or doesn't arrive in time, we alert you — with the exit context you actually need.

01The protocol

One HTTP call. That's the whole client.

Append a curl to your existing crontab. Your job runs exactly as before — the request just tells CronBeacon what happened, with whatever context you want to keep.

  • Works in cron, k8s CronJobs, GitHub Actions, Lambda — anywhere with outbound HTTPS.
  • Send SUCCESS or FAILURE — same incident view, two completely different signals.
  • Attach arbitrary JSON metadata: duration, record counts, batch IDs, error strings.
POST /api/v1/ingestion/check-in201 created
curl -X POST https://cronbeacon.dev/api/v1/ingestion/check-in \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "outcome": "SUCCESS",
    "metadata": {
      "duration_ms": 1234,
      "records_processed": 4821,
      "batch_id": "batch_20240115_02"
    }
  }'

→ HTTP 201 · { "checkInId": "ci_8f2c…" }
02Alerts that respect your inbox

Route alerts to where you'll actually see them.

Email today on every plan. Slack and webhooks are next — we'd rather ship one channel that works than four that mostly do.

  • Per-monitor grace periods so a 30-second slip isn't an incident.
  • Delayed alerts auto-cancel if the next check-in lands before the email leaves the queue.
  • Alert emails carry monitor name, failure type, last successful check-in, and any metadata you sent.
routes · nightly-backup
@
Email · ops@yourco.dev
Failed & missing · with metadata
ALL
#
Slack · #cron-alertssoon
Failed & missing · context inline
Webhook · runbook-botsoon
Signed POST · bring-your-own handler
📟
PagerDutysoon
Native escalation · in development
SMSsoon
For when email isn't loud enough
*More channels coming soon.
03Schedules & grace windows

We know when slow ≠ broken.

Set the cron schedule. Set a grace window. CronBeacon only flags the monitor as missing when the check-in is genuinely past its deadline — not when your S3 upload took an extra two minutes.

  • Configurable grace period per monitor — generous for slow batch jobs, tight for tick-every-minute health checks.
  • One incident per outage, regardless of how many check-ins were missed inside it.
  • No false positives on new monitors — the silence detector waits for a baseline.
schedule · 02:00 daily ±5m grace
01:5001:5502:00 · expected02:0502:10
expected
on-time check-ininside grace windowmissing → alert
04Recipes

Plays well with anything that can hit HTTPS.

If your runtime can fire an HTTPS request, it can talk to CronBeacon. We keep ready-to-paste examples for the stacks people ask about most — copy, swap the token, ship.

  • Plain curl works on any Linux box, container, or CI runner.
  • No agents, no daemons, no SDK lock-in — the whole client surface is one POST.
  • Bring-your-own retry policy — we recommend --retry 3 -fsS and a || branch on failure.
recipes · curl-friendly stacks
AAWSLambda · ECS · EventBridge
DDockerHealthcheck recipe
KKubernetesCronJob spec
GHGitHub Actionsschedule.yml
VVercelCron functions
RRailwayScheduled jobs
ReRenderCron services
HkHerokuScheduler add-on

Recipe pages live in guides — these are the examples we ship docs for, not native plugins.

05Forensics

Debug with context, not guesswork.

Every check-in keeps its outcome, timestamp, and any JSON metadata you attached. When a job fails or goes missing, you can see what it last reported — without SSH-ing into the box.

  • See duration_ms, records_processed, custom fields right in the dashboard.
  • Compare a healthy run against a failed one side by side, by metadata field.
  • Retention by plan: 7 days on Free, 90 days on Pro, 1 year on Unlimited.
nightly-backup · last 5 check-ins
02:00:03SUCCESS2.4 GB · 4821 records · batch_20240612412 ms
02:00:02FAILUREpg_dump timeout · "Connection refused"err
02:00:01SUCCESS2.3 GB · 4789 records · batch_20240611389 ms
02:14 ovrMISSINGExpected 02:00 UTC · 14m past grace
02:00:00SUCCESS2.3 GB · 4756 records · batch_20240609421 ms

How we stack up

A short, honest comparison. We're not trying to be your full APM. We do one thing — tell you when a scheduled job didn't run, and what it last reported.

CapabilityCronBeaconThe 800-lb APMHealthchecks-style ping
Per-monitor HTTP check-inAdd-on
Distinguishes Failed vs MissingLimitedMissing only
JSON metadata attached to each check-inLogs product, $$$Limited
One incident per outage (not per ping)
Free cron syntax tools, no signup
Bills based on number of monitorsHosts × seats × ingest