CF Workers · Vercel Cron · pg_cron

Stop flying blind
on your cron jobs

CronCanary wraps any cron handler in 3 lines of code. Get a timeline view, 2σ drift detection, and Discord/Slack/email alerts when jobs fail or slow down.

// Before: your CF Workers cron handler export default { scheduled: myDailyReport } // After: 3-line CronCanary wrap import { wrap } from 'croncanary' export default { scheduled: wrap(myDailyReport, { job: 'daily-report', token: env.CRONCANARY_TOKEN }) } // That's it. Timeline, drift alerts, and failure notifications — done.

Wrap your first cron job in 3 lines — and never wonder if it ran.

Free to start. No credit card. Magic-link sign-in — running in under two minutes.

Start monitoring free Compare vs alternatives
300+
Cloudflare edge cities ingest your pings
Statistical drift detection
3
Lines of code to integrate
CF Workers
Zero cold-start ingest

We run CronCanary on our own production fleet — it watches every service we ship and the cron that builds them, reporting real run durations every 5 minutes. We don't ship monitoring we wouldn't trust ourselves.

Everything your cron jobs deserve

Purpose-built for the modern edge-first stack.

📈

Timeline view with duration percentiles

See every run's duration as a bar chart. p50 / p95 / p99 computed live. Spot outliers at a glance — no dashboards to configure.

2σ drift detection

When a job is suddenly 30% slower, CronCanary catches it statistically. Computed against a rolling 50-run window so you don't chase noise.

🔔

Multi-channel alerts

Discord, Slack, and email — choose any combination. Alerts fire on fail, drift, or when a job hasn't run in the expected window (late detection).

🌍

Region tracking

Know which Cloudflare datacenter or Vercel region ran your job. Compare durations across regions to find geo-specific slowdowns.

🐍

JavaScript + Python SDKs

Wrap CF Workers, Vercel Cron, or Supabase pg_cron callers. Works anywhere fetch is available — no dependencies required.

🔒

Per-job API tokens

Each job gets its own long-lived token. Rotate without disrupting other jobs. Magic-link auth — no password storage.

What you'll see in your dashboard

Timeline view — last 7 runs, duration bars, drift flagged automatically.

daily-report p50: 1,420ms  •  p95: 2,810ms
Today 06:00 UTC
3,840ms
DRIFT
Yesterday 06:00
1,380ms
OK
2 days ago 06:00
FAIL
3 days ago 06:00
1,510ms
OK
4 days ago 06:00
1,290ms
OK

Simple, transparent pricing

Start free. No credit card required. Upgrade when your job count grows.

Free
$0/mo
Kick the tyres on a single cron job — no card, forever.
  • 1 job
  • 7-day run history
  • Email alerts
  • Drift detection
  • Late-job detection
Start free
Hobby
$19/mo
For solo developers with a handful of cron jobs to watch.
  • Up to 5 jobs
  • 90-day run history
  • Email + Discord alerts
  • Drift detection
  • Late-job detection
Get started
Team
$99/mo
For organisations running critical infrastructure on cron.
  • Unlimited jobs
  • Unlimited run history
  • All alert channels
  • Team member access
  • Priority support
Get started

How CronCanary compares

Honest take — the others are solid tools. Here's where each one fits.

Capability CronCanary healthchecks.io Cronitor cron-job.org
Statistical duration-drift alerts (2σ) Built-in Records duration, no drift alerts Anomaly alerts No
Edge-native ingest (Cloudflare Workers) Yes No No No
3-line SDK wrap (JS + Python) Yes Ping URLs + libraries Libraries Scheduler UI only
Per-run region tracking Yes No No No
Missing / late run detection Yes Yes Yes Failure email only
Multi-channel alerts (email/Slack/Discord) Yes Extensive Yes Email
Open source / self-hostable No (hosted) Yes (BSD) No Free hosted
Free tier Yes 20 checks ~5 monitors Free

Pick healthchecks.io if you want open-source and a generous free check count. Pick CronCanary if your jobs run on the edge and you care about how long they take, not just whether they ran. Competitor details from public docs, May 2026 — verify current specifics on each vendor's site.

Built on Cloudflare Workers — ingest runs at the edge across Cloudflare's global network, so there are no servers to keep warm.  ·  Your job data stays in our Cloudflare D1 database — never sold or shared with third parties.

FAQ

What platforms does CronCanary support?

Cloudflare Workers Cron Triggers, Vercel Cron, Supabase pg_cron, GitHub Actions schedules, Railway cron, and any task that can make an HTTP request. The JS SDK wraps CF Workers handlers natively. For Python (pg_cron, Supabase functions), use the Python SDK.

How does drift detection work?

CronCanary computes the mean and standard deviation of your last 50 successful run durations. When a new run's duration exceeds mean + 2σ and crosses your configured threshold percentage, a drift alert fires. This eliminates one-off spike noise while catching genuine regression.

What's a "late" alert?

If a job hasn't completed within 2× its configured timeout window, CronCanary sends a late alert. This catches jobs that failed to start — a case that fail alerts alone miss.

Does the SDK add latency to my job?

The start ping is awaited (typically under 5ms from any CF Worker since we run globally). The end/fail ping is dispatched via ctx.waitUntil — zero impact on your job's response time.

What if CronCanary is down?

The SDK swallows all monitoring errors. If CronCanary is unreachable, your job continues unaffected. We build monitoring that doesn't become a dependency.

Can I cancel anytime?

Yes. Cancel via the Stripe billing portal — no questions, no retention flow. Your data is accessible until the period ends.