Know the moment your cron job dies.

One HTTP ping per run. Miss a beat and we email, Telegram, Slack, or webhook you within seconds. Built for PHP shops, but every language that can curl works the same.

Drop-in HTTP API

One POST /ping/<uuid> per run, with optional /start and /fail for duration and error tracking. Captures up to 10KB of stdout per run.

Cron, interval, simple

Validate any cron expression with a live "next 5 runs" preview. Or use plain intervals — "every 6 hours" — when you don't need the full cron grammar.

Multi-channel alerts

Email, Telegram bot, Slack, Discord, signed webhooks. Anti-flap dedupe so a bad run doesn't page you ten times before the recovery ping clears it.

Status badges

Drop a shields.io-style SVG into your README to show the world your nightly-rollup hasn't flatlined since 2024.

UTC + timezones, done right

Schedules stored in UTC, displayed in your timezone, DST-safe. We've put the corner cases through unit tests so you don't have to.

Composer SDK on the way

Symfony Scheduler bundle and Laravel package with auto-discovery — one composer require and your schedule:list shows up as monitors.

30-second integration

After signing up you get a UUID per monitor. Wrap any cron job:

0 * * * *   /usr/bin/php /app/bin/console hourly:rollup && \
            curl -fsS -m 10 --retry 5 https://cron-monitor.example.com/ping/<uuid>

That's it. If the script crashes, the curl is skipped, no ping arrives, and we alert you. The /start + /success variant gives you per-run duration history.

Pricing in one sentence

Free for 5 monitors, $5/mo for 25, $19/mo for 100, $49/mo for 500. No card on the free tier. Full plan comparison →