⏰ Cron-as-a-Service

Scheduled webhooks,
without the cron-rot

Point us at a URL and a cron spec. We POST it on schedule, retry on failure, email you the trace, and keep the logs. No server to babysit.

Start free — 3 jobs $9/mo for 100 jobs →
$ curl -X POST https://cron.voiddo.com/api/jobs \
-H "X-Api-Key: cvk_your_key" \
-d '{"name":"daily-summary","cron_spec":"0 9 * * *","job_type":"webhook","target":"https://api.yourapp.com/cron/summary"}'
{
"id": 42,
"next_run": "2026-05-18T09:00:00+00:00"
}
# ✓ Webhook scheduled. We'll email you if it stops returning 2xx.

Everything you actually need

No crontab. No server. No "why did it stop working at 3am" mystery.

📬

Email alerts on failure

Instant email when any job fails, with full stdout/stderr output. Know before your users do.

📋

Execution logs

Every run is logged — exit code, duration, full output. Last 100 runs per job, forever.

🔄

Automatic retry

Configure 1-3 retries with 5s delay. Transient failures get a second chance automatically.

🔗

Any URL, any stack

POST to your Rails route, Vercel function, Cloudflare Worker, n8n flow — anything that speaks HTTP.

⏱️

Standard cron syntax

5-field cron expressions. 0 3 * * *, */15 * * * * — everything you already know.

🔑

Simple API

Full REST API with API key auth. Create, update, enable/disable, delete jobs programmatically.

Simple. Transparent. Sunk-cost cheap.

We run on idle VPS capacity we already own. That's why we can charge $9/mo instead of $49.

FREE
$0
Forever. No card required.
  • 3 scheduled webhooks
  • Email alerts on failure
  • Execution logs (last 20 runs)
  • Standard 5-field cron syntax
  • REST API + dashboard
Start free

Payments via Paddle. We handle tax. Cancel from your dashboard.

Up and running in 2 minutes

1

Create a free account

Email + password. No card, no verification. You get an API key immediately. 3 jobs free forever.

2

Add your first job

Use the dashboard or API. Paste your cron spec (*/5 * * * * for every 5 minutes), drop in the webhook URL, set retries and email alerts.

3

We run it, you sleep

Our runner polls every 30 seconds. When a job is due, we execute it and log the output. If it fails, you get an email immediately with the full error output.

4

Check logs anytime

Every run is stored. Filter by status, see stdout/stderr, check durations. Debug failures without SSHing into anything.

Common questions

How precise is the scheduling?
Our runner polls every 30 seconds, so jobs execute within 30s of their scheduled time. For most use cases (backups, reports, cleanup) this is fine. If you need sub-minute precision, use webhooks and call from a precise scheduler.
What's a "job"?
A cron spec plus a URL. We POST to your URL when it's due. HTTP 2xx is success, anything else is a failure (which triggers a retry and/or email alert depending on your settings).
Why webhooks only — no shell commands?
Running arbitrary shell from strangers on a shared host is a security minefield, and webhooks already cover ~95% of indie-dev cron needs (trigger a backup endpoint, kick off a report, ping a queue). If you need to run real shell, run it on your own box and hit a webhook to start it.
How does this compare to cron-job.org?
cron-job.org is free and solid — if you only need a few jobs and don't mind their UI, it's a great option. We give you a quieter dashboard, structured execution logs with response bodies, retry policy, and a clean REST API. The $9/mo Pro tier funds the maintenance.
Can I use the API to manage jobs programmatically?
Yes. Full REST API with API key auth. GET /api/jobs, POST /api/jobs, DELETE /api/jobs/{id}, GET /api/jobs/{id}/logs. Your key is shown in the dashboard.
What happens if a webhook hangs?
Calls are killed after 5 minutes. The attempt is logged as failed, retries fire if configured, and you get an alert email. Slow endpoints behind us are still slow — we just don't sit on the line forever.

Stop managing crontab.
Start shipping.

3 jobs free. No card. Up in 2 minutes.

Create free account →