Every feature, in one place.
CronDoctor isn't a checkbox monitor. Here's the full list of what ships today — what we detect, how we diagnose, where we notify, and what makes it pleasant to operate for years.
Detect
Know the moment a job stops running — and catch the ones that hung partway.
Smart cron normalizer
Paste any cron format you have lying around. We translate.
@daily, Quartz 6/7-field, AWS cron(), Jenkins H, ?, seconds-based — all normalized to a standard 5-field expression on save.
Three signal levels
A bare ping, an exit-code-and-duration ping, or a full payload with stderr. You choose how much your job tells us.
Signal 1 is one curl line. Signal 2 adds query params. Signal 3 POSTs JSON. All hit the same endpoint; richer signals enable richer diagnosis.
Stuck-job detection
Catch jobs that started but never finished. Not just jobs that crashed — jobs that hung.
Send a `start` ping when your job begins and an `end` ping when it finishes. We alert if `end` doesn’t arrive in your expected window.
Diagnose
Don't just get alerted. Get an answer.
AI root-cause diagnosis
GPT-4o-mini reads your stderr and tells you what went wrong. Not an alert — an answer.
Confidence scores included. Disclaimers shown when confidence is low. PII redacted before any data leaves our infrastructure.
Knowledge base + AI fallback
Common errors get instant free answers from a curated knowledge base. Unusual errors route to AI.
~30–40% of failures match the knowledge base for $0 cost and zero added latency. The rest get full GPT diagnosis with an 8-second timeout fallback.
Alerts include the diagnosis
The AI summary lands in your Slack/email/PagerDuty alert. You don’t click through to read it.
Severity, root cause, suggested fix, and confidence score appear inline in every channel’s alert payload. Confidence below 70% is surfaced explicitly.
Notify
Reach you the way you want to be reached, with thresholds that learn each job.
Every channel, every account
Email, Slack, Discord, Microsoft Teams, PagerDuty. All five included on every account. No tier upsells.
Configure once in Settings. SSRF protection on webhook URLs. 10-second per-channel timeout so a slow integration doesn’t block the others.
Adaptive thresholds
Each job’s normal duration is learned, not configured. Slow runs alert before they become outages.
P95 baseline + 20% buffer kicks in after 10 successful runs. Pro users can configure percentile and buffer per monitor.
Job health warnings
Job exited with code 0 but printed errors? We can flag that as a soft warning, not just a clean success.
Configurable per monitor via the "Detect problems in successful jobs" toggle (on by default). Distinct severity tier so warnings don’t fight critical alerts for attention.
Operate
A monitor you can actually run for years without it becoming the thing you have to babysit.
Per-job pricing
First job is free. Each additional job is $2/month, prorated. No tier upsells, no minimum commitment.
You pay for what you watch. Pause monitors during maintenance windows; the bill drops the moment the count drops.
Status badges
Embed an SVG status badge on your README, status page, or internal dashboard.
One URL per monitor. Returns up/down/late/paused in real-time with cache headers tuned for live status pages.
Pause without uninstalling
Maintenance window? Pause the monitor for a day. We stop alerting; the curl line in your job stays where it is.
Paused monitors continue receiving pings and recording history; we just don’t alert on missed ones. Resume in one click.
PII redaction before AI
Stderr is scrubbed for credentials, tokens, and emails before any of it leaves our infrastructure for AI diagnosis.
9-pattern scrub: AWS keys, GitHub PATs, JWTs, URL credentials, password=, api_key=, Bearer tokens, JSON-style "password":"…", and email addresses.
Always-200 ping endpoint
Our ping endpoint never returns an error to your job. If our DB is down, your script doesn’t notice.
Returns 200 OK on every ping — even invalid monitor IDs, disabled monitors, or upstream outages. Failures are logged server-side without affecting your job’s exit code.
Endpoint protection
Lock a monitor to your job alone. Optional per-monitor token; pings without it are rejected at the door.
Token generated once at monitor creation, accepted via URL param or `Authorization: Bearer` header. Unauthorized attempts log as security events for after-the-fact review.
First job free. $2/month for each additional.
No tier upsells. No minimum commitment. Pay for what you watch.
Name the one job that's been bugging you →