Everything StatusCheck does.
29 features across eight areas. The pricing page says which plan each limit belongs to, in a table, with no asterisks.
Uptime Monitoring
Know it’s up. Know why when it isn’t.
HTTP checks from the regions you choose, with assertions that go past 200 OK, and the full DNS, TCP, TLS, first byte and download waterfall recorded on every single run.
Assertions past 200 OK
Match on status, whether that is an exact code, a 2xx class or a 200 to 299 range. Then add a keyword in the body, a response header, or a regex. Contains, equals and regex operators work on all three.
- Method
- Request
- Status assertion
- Body assertion
$ statuscheck check api.acme.com/health --region fra { "location": "frankfurt", "type": "http", "target": "https://api.acme.com/health", "up": true, "status": 200, "dns": 0.687, "tcp": 9.433, "tlsHandshake": 30.141, "firstByte": 18.313, "download": 0.11, "total": 59.059, "redirects": 0, "assertion": true, "sslExpiration": 57, "sslNotAfter": "2026-10-31T21:41:26Z", "date": "2026-09-04T12:41:07.617Z"} The whole timing story
DNS, TCP connect, TLS handshake, first byte, and download are timed separately on every check. When a page gets slow, you already know which layer did it.
Requests shaped like your traffic
Custom methods, headers, and bodies. Follow redirects or assert on them. Per-monitor timeouts. Auth headers are stored encrypted and never shown again after you save.
Confirmed before it pages
A failure has to be seen from a second region before the monitor turns down. One region timing out is a data point, not an incident. Single-region monitors say so on the dashboard.
Network Monitoring
The layers underneath the URL.
Most outages don’t start at the front door. StatusCheck checks the port behind it, the host under it, and the DNS record pointing at both.
TCP ports
Databases, brokers, mail servers, SSH. A timed connect from each region you select, so you learn a port stopped accepting connections before an application does.
- TCP
- ICMP
- DNS
Network monitors
4 up · 1 degraded- TCP db-primary.acme.internal:5432 18 regions 12 ms Up
- DNS acme.com · A 1.1.1.1 31 ms Up
- ICMP edge-01.acme.com 4% loss 148 ms Degraded
- TCP smtp.acme.com:587 6 regions 44 ms Up
- DNS acme.com · MX 8.8.8.8 28 ms Up
ICMP reachability
Ping with a packet count you set and a maximum acceptable loss. Min, average and max round-trip are recorded per region, and partial loss shows up as degraded rather than down.
DNS records
A, AAAA, CNAME, MX, NS, TXT, SRV, and PTR, checked against the resolver you choose with an expected-answer assertion. Catches a bad propagation before customers do.
Same confirmation rules
Network checks confirm across regions exactly like HTTP checks. A single region failing to reach a host is far more likely to be that region’s problem than yours.
SSL Monitoring
No outage is more avoidable than this one.
A certificate expiring is the one failure you always get warning about, as long as something is watching for it.
Warned in days, not minutes
Set the threshold at 30 days, 14 or 7, and the check turns degraded while there is still time to renew. It only goes down once the certificate is actually invalid.
- Target
- Expiry warning
- Verified
- Alerts
SSL · api.acme.com:443
Renew before October 31
- Certificate is trusted
- Hostname matches api.acme.com
- Chain complete, 2 intermediates
- Expires in 11 days, under your 30-day threshold
Issued by Let’s Encrypt R3 · checked from 18 regions
More than the expiry date
Trust, hostname match, and chain completeness are all verified. A certificate that is technically valid but missing an intermediate still breaks clients, and still gets flagged.
Every certificate, not just the main one
Point a check at any host and port. API endpoints, admin subdomains, mail servers, and the internal service that nobody remembered had its own certificate.
Cron & Heartbeats
The job that quietly stopped running.
Nothing fails louder than a backup you find out was never running. Heartbeats invert the check: your job pings us, and silence is the alert.
Silence is the signal
Give a heartbeat an expected period and a grace period. One line at the end of your job pings the URL. Miss the window and an incident opens on its own.
- Expected period
- Grace period
- Endpoints
- Alerts
Heartbeats · last 23 runs
1 incident open- nightly-backup every 24 h
- invoice-run every 1 h
- search-reindex every 15 min
- queue-worker every 5 min
Report failure explicitly
A /fail endpoint lets a job report that it ran and went wrong. That is a different problem from not running at all, and worth telling apart at three in the morning.
Anything on a schedule
Nightly backups, billing runs, queue workers, ETL jobs, certificate renewals, data exports. If it should have happened by now and didn’t, that’s worth knowing.
Status Pages
Tell customers before they tell you.
A status page is only worth having if people believe it. Components are backed by real monitors, and the overall banner is derived from them rather than hand-set to look better.
Uptime bars from real history
Each component shows a 90-day uptime bar that comes straight from monitor results. Back a component with one or more monitors, or update it by hand when a monitor can’t see it.
Partial degradation
Checkout is slower than usual. Investigating · updated 4 min ago
- API99.98% Up
- Web app100% Up
- Checkout99.71% Degraded
- Email delivery99.95% Up
A banner you can’t fudge
All systems operational, Partial outage, Major outage and Under maintenance are all derived from component state. The page tells the truth even on the day you’d rather it didn’t.
Subscribers on their own terms
Email, RSS/Atom, and Slack, per page or per component. Double opt-in and one-click unsubscribe, so the list stays clean and the mail keeps landing.
Your domain, your brand
Public, password-protected, or SSO-protected, on your own domain with automatic TLS. Your logo, favicon, and accent color. Remove “Powered by StatusCheck” and send from your own domain, on every paid plan, not as an add-on.
Alerts
One confirmed failure. One alert.
An alert you learn to ignore is worse than no alert. Every notification StatusCheck sends has already been confirmed by a second region and carries the facts you need to act.
Alerts with the facts in them
Monitor, target, state change, failure reason, confirming regions, start time, and a link to the incident. Recovery alerts include how long it lasted.
- Direct
- Chat
- On-call tools
- Custom
Checkout API is down
- Monitor
- Checkout API
- Target
- https://api.acme.com/checkout
- Reason
- HTTP 503 on 3 consecutive checks
- Confirmed by
- NYC, Frankfurt
- Since
- 09:12:04 UTC
Sent once, per channel
- Phone call Delivered
- SMS Delivered
- Slack Delivered
- Webhook Signed · 200
No storms
One confirmed failure sends one alert per channel. Flapping inside a short window is grouped into the same incident instead of re-paging everyone who already knows.
Signed webhooks
Every webhook is signed with HMAC-SHA256 using a per-channel secret. Events for down, degraded, up, incidents, heartbeats, and expiring certificates.
No per-responder fee
Route a channel to whoever should get it. Alert-only seats cost $2 a month, so nobody gets left off the alert to save money.
On-Call
Page the right person, once.
Escalation exists so a missed page doesn’t become a missed outage, and it stops the moment somebody picks up.
Rotations in their own time zone
Daily or weekly schedules that run in the time zone the team actually lives in, with overrides for holidays and swaps. Who’s on call now sits on the project home page.
Escalation policy · Core platform
3 steps- delivered
On-call engineer
SMS + push
Wait 5 min, then
- delivered
On-call engineer
Phone call
Wait 5 min, then
- 3 queued
Engineering lead
Phone call
Acknowledged by Mira from the phone call · escalation stopped
Escalation that knows when to stop
Ordered steps with wait times between them. Acknowledge from the dashboard, an SMS reply, a phone keypress or Slack, and everyone further down the list is left alone.
Everyone on the team, at no extra cost
Owner, admin and member roles, and alert-only seats at $2 for people who carry the pager but never open the dashboard. Rotations don’t get thin because seats are expensive.
Incident Management
Incidents that write their own first update.
A confirmed failure opens an incident with the facts already in it: what, since when, and from where. You add the human part. Recovery closes it.
Opened and closed automatically
Confirmed failures open an incident; confirmed recoveries close it. Nobody has to remember to update the status page while they’re busy fixing the actual problem.
Incident · INC-0418
Elevated checkout latency
- Investigating 09:12 · Automatic
Checkout Service degraded: p95 512 ms over the 400 ms threshold. Confirmed from NYC and Frankfurt.
- Identified 09:19 · Mira
Slow query on the orders table after this morning’s migration. Rolling back the index change.
- Monitoring 09:31 · Mira
Rollback complete. p95 back under 150 ms from all regions; watching for 20 minutes.
- Resolved 09:52 · Automatic
Checkout Service recovered. Total duration 40 minutes.
The states people expect
Investigating, Identified, Monitoring and Resolved, with templates for the updates you end up writing over and over. Optional postmortems publish alongside the incident.
Manual incidents too
For what monitors can’t see: a partner outage, a data issue, a bad deploy caught by hand. Same timeline, same subscriber updates.
Maintenance that doesn’t cry wolf
Scheduled windows notify subscribers, silence alerts for the duration, and are excluded from uptime history, so planned work doesn’t look like downtime.
All of it runs from 18 places.
Pick the regions that match your customers. A failure has to be seen from two of them before anyone gets paged.
Built for a team, not a single admin.
Everyone who carries the pager needs an account, so the seats are cheap and the alert-only ones are cheaper. Security is here because customers ask for it, not because it’s a lucrative upsell.
Roles for the whole team
Owner, admin and member roles, plus alert-only seats at $2 for people who need the page but never open the dashboard.
API keys
Create monitors, read check results, and post incident updates from your own tooling. Keys are scoped per project.
SSO and 2FA
Two-factor authentication for everyone. SAML single sign-on on Business, for the dashboard and for private status pages.
Audit log
Who changed which monitor, channel, or page, and when. Exportable.
Secrets stay secret
Auth headers and proxy credentials are stored encrypted and never appear in logs, alerts, or the UI after you save them.
Probe safety
Probes refuse private and link-local targets and identify themselves with a stable User-Agent, so you can tell our traffic apart from anyone else’s.
Start on the free plan.
Ten monitors, three regions and a status page, free forever and no card. Join the waitlist and we’ll email you once, when it’s your turn.