UpCheck

Scheduler monitoring

Know the moment a scheduled task misses its window.

What it watches

A scheduler is the inverse of a heartbeat: UpCheck calls your URL on the interval. It's cron as a service, with the alerting already attached.

Point it at an endpoint that does work when called — a cleanup route, a report generator, a queue drain, a cache warmer — and you've replaced the crontab you were going to write, plus the monitoring you were going to forget to put on it.

A trigger, so the rules are stricter

Success is a 2xx, and only a 2xx. Redirects aren't followed: a 3xx means the endpoint moved, and a trigger that lands somewhere else did not do the work you asked for, so it counts as a miss.

There's no fail-streak debounce either. On a health check, one blip that fixes itself is noise worth swallowing. On a trigger, a run that didn't happen is a run that didn't happen, and each result stands on its own.

Write methods only

POST is the default and read-only methods aren't offered, because a trigger has to act. Auth headers and a request body are both supported.

That last part matters more than it sounds: your endpoint is now callable on a schedule by anything that learns the URL. Require a secret header, set it on the scheduler, and reject calls without it.

Point it at something that does work

The endpoint is yours, the cadence is the interval, and the verdict is whatever status you return.

curl -X POST https://upcheck-api-a.rekwiem.com/v1/monitors \
-H "Authorization: Bearer upk_your_key" \
-H "Content-Type: application/json" \
-d '{
  "type": "scheduler",
  "name": "Hourly rollup",
  "url": "https://example.com/cron/rollup",
  "interval_sec": 3600
}'

Tune it when the defaults aren't right

Check interval1m5m10m30m1h
Slow threshold0.5s1s1.5s3s
Request timeout5s10s30s60s
Failure threshold12345
Follow redirectsOnOff
SSL and domain expiryOnOff

Highlighted is the default.

Build trust with
public status pages.

Every monitor can back a public status page, so the people asking whether you're down can answer it themselves. Ninety days of history per monitor, on your own domain.

Explore status pages

Every outage,
written down as it happens.

A failed check opens an incident on its own, and it keeps a timeline: when it broke, what we saw, when it recovered. Nobody has to remember to write the post-mortem's first half.

Explore incidents

Planned downtime
shouldn't page anyone.

Schedule a window and the checks keep running, but the alerts stay quiet and the uptime maths doesn't count it against you. One-off or recurring, per monitor.

Explore maintenance

Everything else you can watch

Read more

Scheduler questions

A 2xx, and only a 2xx. Anything else — a 4xx, a 5xx, a timeout, a connection error — is a miss.

No. A 3xx means the endpoint moved, and a trigger that follows it isn't doing the work you asked for, so a redirect is a miss.

Write methods: POST by default, plus PUT, PATCH and DELETE. Read-only methods aren't offered, because a trigger has to act.

Require a secret in a request header, set that header on the scheduler, and reject calls without it. Request headers are stored encrypted.

It's the inverse. A scheduler calls your URL on the interval; a heartbeat waits for your job to call ours. Use a scheduler when the work has an endpoint, a heartbeat when the job has no address to call.

Set it up in minutes, never miss an outage again.

Free to start · One-minute checks · iPhone, iPad, and Mac