Uptime monitoring
Every uptime monitor in SiteQwality follows the same lifecycle: configure → run on schedule → emit results → trigger notifications on state change. What differs is what the monitor checks.
| Check type | What it checks | Use for |
|---|---|---|
| HTTP | A URL responds with the expected status, body, and latency | Websites, APIs, webhook receivers |
| SSL/TLS | A certificate’s expiry, chain, and validity | Anything served over HTTPS |
| Domain expiry | A domain’s registration at the registry: expiry date, registry holds, registrar and nameserver changes | Any domain you would lose if a renewal failed |
| Cron heartbeat | A scheduled job pinged on time | Backups, ETL, batch jobs |
| Browser | A full Playwright script passes in a real Chromium | Login flows, checkout, multi-page journeys |
Picking the right check
Section titled “Picking the right check”- You have a URL that should be
200 OK. Use HTTP checks. You can also opt-in to a paired TLS check (cert expiry) and domain expiry check (domain registration) on the same monitor. - You only care about cert expiry, not whether the site is up. Use SSL/TLS checks. Otherwise, just enable the TLS sub-check on your HTTP monitor.
- You want to hear before a domain registration lapses. Enable the domain expiry check on an HTTP monitor for that domain. It reads the registration from the registry, so it also catches a registry hold, a registrar change, and a nameserver change.
- You have a cron job that should run every N minutes. Use a cron heartbeat. Your job pings SiteQwality at the end of each successful run, and SiteQwality alerts when it doesn’t.
- You need to validate a multi-step user flow. Use browser checks. You write a Playwright script and SiteQwality runs it on schedule, capturing a HAR + video on failure.
Cross-cutting concerns
Section titled “Cross-cutting concerns”Regions
Section titled “Regions”Every check runs from AWS us-east-1 (N. Virginia). It is the only location with check infrastructure, and it is the default for every monitor type. If you leave check_regions unset, this is what you get.
min_healthy_regions controls how many of a monitor’s configured locations must report healthy before the monitor itself counts as healthy. Configuring more than one location requires a paid plan; the API returns 403 Forbidden otherwise.
Schedules
Section titled “Schedules”| Check type | Minimum interval (free) | Minimum interval (paid) |
|---|---|---|
| HTTP | 60 s | 30 s |
| Cron heartbeat | n/a | n/a (driven by your job’s ping cadence) |
| Browser | 5 min | 5 min |
| TLS, domain expiry (paired with HTTP) | daily, not configurable | daily, not configurable |
Every monitor accepts a tags: string[] field. Use tags consistently (service:api, env:prod, team:platform) and you can:
- Match maintenance windows to silence by tag.
- Filter dashboards and alerts by tag.
- Roll up uptime by service or environment.
Services (logical grouping)
Section titled “Services (logical grouping)”Beyond tags, you can attach a monitor to a service (service_id). Services are higher-level groupings. See Services in the dashboard.