Know when a cron job didn’t run.

Your job pings cronmiss when it finishes. If the ping is late or never comes, you get an email. Built for Vercel, Cloudflare Workers, GitHub Actions, Supabase and plain cron.

Get early access

Free for 20 jobs at launch.

Try your own schedule

Every day at 02:00 UTC

If the Sun 02:00 run hasn’t pinged by Sun 03:00, cronmiss emails you. Grace here is 60 min.

A job that never runs leaves nothing behind.

A failing job throws an error somewhere. A job that never starts leaves no log line, no exception and a status page full of green. Most people find out from a customer, days later.

How it works

Status: the monitoring engine runs today on our own jobs. Sign-up and the dashboard open to the pre-signup list first, platform by platform, starting with Vercel.

  1. Step 1 of 6

    Sign up with your email

    No password. A sign-in link arrives in your inbox and you are in.

    EmailPlanned
    From
    cronmiss <hello@notify.cronmiss.com>
    Subject
    Your cronmiss sign-in link

    Click the link below to sign in. It works once and expires in 15 minutes.

    https://cronmiss.com/in/…

  2. Step 2 of 6

    Pick where the job runs

    Paste the crons block from vercel.json, the triggers from wrangler.toml or the schedule from your workflow. cronmiss reads the schedule and timezone, and sets a grace period that suits the platform.

    vercel.json, pastedPlanned
    {
      "crons": [
        { "path": "/api/cron/sync", "schedule": "0 2 * * *" }
      ]
    }
    Monitor
    /api/cron/sync
    Schedule
    Every day at 02:00
    Timezone
    UTC (Vercel runs crons in UTC)
    Grace
    60 min on Hobby, 5 min on Pro
  3. Step 3 of 6

    Add one line to the job

    One request when the job finishes. The clients for Node and Python are already published; anything else can use curl.

    30 2 * * * ./sync.sh && curl -fsS --retry 5 https://ping.cronmiss.com/p/<your-id>
  4. Step 4 of 6

    The first ping turns it up

    When the job next runs, the monitor turns up and you get the next deadline by email. A test ping checks it straight away.

    EmailPlanned
    From
    cronmiss <alerts@notify.cronmiss.com>
    Subject
    [cronmiss] Watching: nightly sync

    The first ping arrived at 02:00:41 UTC. The next run is due Thursday at 02:00 UTC, and you will hear from us only if it doesn’t ping by 03:00.

  5. Step 5 of 6

    A miss or a failure emails you

    No ping by the deadline, or a ping to /fail with the error output, and an alert goes out within seconds. When the job runs again, you hear that too.

    EmailLive
    From
    cronmiss <alerts@notify.cronmiss.com>
    Subject
    [cronmiss] DOWN: nightly sync did not run

    Your scheduled job "nightly sync" missed its check-in: no ping by Thu 12 Nov 2026, 03:00 UTC, its deadline including grace; the last ping was Wed 11 Nov 2026, 02:00:41 UTC.

    We'll email again when it pings.

  6. Step 6 of 6

    It tells you when it’s the platform

    cronmiss runs its own canary jobs on each platform. When your job misses and ours missed in the same window, the alert says so. In development.

    Alert, with platform signalIn development
    Your jobnightly sync: no ping by Thu 03:00 UTC
    Our canaryVercel cron, missed Thu 02:00 in the same window

    This looks like Vercel, not your code.

Where jobs go missing

Each platform fails in its own way, so each gets its own setup and a grace period that fits how its scheduler behaves.

Platforms, how their scheduled jobs go missing, and the default grace period
PlatformHow runs go missingDefault grace (bar: one hour)
VercelFailed invocations are not retried. On Hobby, a daily job can fire any time within its hour.60 min on Hobby, 5 on Pro
Cloudflare WorkersThree Cron Trigger incidents in October 2026 delayed, skipped or doubled runs.2 min
GitHub ActionsScheduled runs are delayed under load and can be dropped. Inactive public repos lose their schedules after 60 days.45 min
Supabasepg_cron stops when a free project pauses, and the run history just has a gap.10 min
Railway, Render, FlyA cron service that fails to start never logs a run.10 min
Anything elseLinux cron, systemd timers, Windows Task Scheduler, Kubernetes CronJobs: one request at the end of the job.You choose

Built not to cry wolf.

If cronmiss can’t receive pings, it holds alerts instead of telling you every job died. The evaluator only marks a run missed up to the last moment it knows every ping arrived.

  • Your job’s output stays on your server unless you send it to /fail or /log, and then only the last 10 KB.
  • The ping endpoint and the alerting run as separate services, so a busy dashboard can’t drop a ping.
  • Every false alert is treated as a bug and written up in public.

Our own outage, Nov 5, 2026 (UTC)

  1. Ping endpoint stops recording after a credential change.
  2. Evaluator sees the endpoint unhealthy and stops moving its watermark.
  3. Fixed. Pings flow again and the backlog is processed.
  4. Evaluation resumes from the watermark. False alerts sent: 0.

Planned pricing

Prices are planned, not final. The pre-signup list hears first, and annual plans come with two months free.

Planned plans and what each includes
PlanFree$0foreverSolo$12a monthTeam$29a month
Monitors20100500
AlertsEmailEmail, Slack, Discord, webhooksEmail, Slack, Discord, webhooks
Run history7 days90 days1 year
Platform setup from your configYesYesYes
“Likely the platform” signal on alertsNoYesYes
Seats115

Questions

Can I use cronmiss today?

Not on your own yet. The engine already runs on our own jobs: pings, deadlines and email alerts, including the nightly backup of the cronmiss database. Sign-up opens to the pre-signup list first.

What does cronmiss store about my jobs?

The time of each ping, each monitor’s name and schedule, and where to send alerts. Nothing your job prints, unless you post it to /fail or /log, and then only the last 10 KB.

Does it work outside serverless platforms?

Yes. Anything that can make an HTTPS request can ping: Linux cron, systemd timers, Windows Task Scheduler, Kubernetes CronJobs or a script on a laptop.

What happens if cronmiss itself goes down?

Alerts hold rather than fire. The ping endpoint and alerting are separate services, and a run is only marked missed up to the last moment cronmiss knows every ping arrived.

How is this different from Healthchecks.io or Cronitor?

Both are good general tools. cronmiss sets each serverless platform up from your own config, with the right grace period, and tells you when a miss looks like the platform rather than your code.

Who runs cronmiss?

One developer, publishing as cronmiss. Mail to support@cronmiss.com goes straight to them.

What will the pre-signup list get?

One email when your platform opens, and nothing else. Every email has a one-click unsubscribe.