Uptime Monitors

A monitor watches a website or API for you. Give Zenhook a URL and we check it every 5 minutes from outside your own infrastructure, then alert you the moment it stops responding.

Monitors vs. webhooks

These are the two opposite directions Zenhook works in, and it is easy to mix them up:

  • Channels (webhooks): your app calls Zenhook. You POST a webhook to a channel URL and Zenhook turns it into an alert.
  • Monitors (uptime): Zenhook calls your site. You give us a URL and we poll it on a schedule, alerting you when it goes down or recovers.

So a monitor is not another webhook. You do not send us anything, you just paste the address you want watched.

Add a monitor

1. Open Monitors. In the app, go to the Monitors tab and tap +.

2. Paste the URL. Enter the address you want watched, for example https://example.com or a health endpoint like https://api.example.com/health.

3. (Optional) Add a keyword. Provide a word or phrase that should appear in the response. If the page loads but the keyword is missing, the monitor is treated as down, useful for catching error pages that still return 200 OK.

4. Save. Zenhook starts checking right away and shows the current status, last response time, and recent check history.

How checks work

Every monitor is requested every 5 minutes, with a 10 second timeout. A check passes when the URL answers with an HTTP status from 200 to 399 (redirects are followed) and contains your keyword, if you set one.

A single failure never pages you. When a check fails, Zenhook rechecks 30 seconds later, and asks an independent vantage point, on another network with its own DNS resolver, whether it can still reach the site. A monitor only flips to down once the failure is confirmed and that second opinion cannot reach it either. Recovery is the opposite: the first successful check flips it straight back to up.

In practice a real outage is confirmed within about 30 seconds of the first failed check, so you hear about it up to roughly 5 and a half minutes after your site actually went down.

When the status changes, from up to down, or back to up, Zenhook sends an alert through your notification channels (sound, desktop, push, and email), the same way channel alerts are delivered.

A 200 is not always up

Plenty of outages answer with a perfectly healthy status code. Zenhook reads the response, not just its number, and treats these as down:

  • CDN error pages served as 200: bad gateway, service unavailable, origin unreachable, SSL handshake failed, and the rest of the familiar wall of text.
  • Stale cache: your CDN is serving a cached copy because it cannot reach your origin. Visitors see a site, but the site is down.
  • Bot challenge pages: a CAPTCHA or challenge is not your content.
  • A missing keyword: if you set one and it disappears from the page, the check fails.

FAQ

Do you check from several places at once?

Not on every check, and it is not a vote. The scheduled check runs from one place. A second, independent vantage point is only consulted when that check fails, and it holds a veto: if it can still reach your site, the outage is treated as our problem and you are not alerted. We only alert when nobody can reach you. That asymmetry is deliberate, the expensive mistake is waking you at 3am for a site that was up.

Can I change the check interval?

Not today. Every monitor is checked every 5 minutes, the same for everyone, on every plan. If you need a different interval, tell us what you need it for.

Why does my access log show a _zenhook query parameter?

That is us. Each check appends a unique _zenhook value so no cache, ours or yours, can answer on your server's behalf. A monitor that hits a cache is not monitoring anything.

How do I allowlist Zenhook in my firewall or WAF?

Checks identify themselves with the user agent Zenhook Uptime Monitor/1.0. If your WAF challenges or blocks it, the monitor will read as down while your site is fine.

Can I monitor localhost or a private address?

No. Zenhook checks from outside your infrastructure, so localhost and private network addresses are refused. Monitor a public URL, or expose a health endpoint you are comfortable making reachable.

Why does Recent Checks show fewer entries than I expect?

The list shows the most recent checks first, the statistics cover the last 24 hours, and individual check history is kept for 7 days.

Will I get paged forty times if Zenhook itself breaks?

No. When an unusual share of monitors fail in the same cycle, the cause is almost never that every unrelated site went down at once, so Zenhook suppresses those alerts, keeps the statuses untouched, and raises the problem with us instead of with you.

Plan limits

The Free plan includes 3 monitors. Pro raises this to 20 monitors.

Not receiving monitor alerts? See notification troubleshooting