Core capability · Free+
Probes
Probes are how StatusPulse actually knows whether your service is up — eleven dedicated check types, each one a real protocol-level test, not a glorified TCP ping.
Why you need it
A probe polls one of your endpoints on a schedule, applies the assertions you configured, and writes a result that drives everything else: the public status page, the SLA widgets, the email / Slack / Teams / SMS alerts, the latency charts, the PDF reports, the anomaly detector. Eleven probe types ship today, each built for a specific protocol — none of them rely on "did the socket open" as the only signal:
- HTTP / HTTPS — method + headers + body + expected status-code lists + body-contains assertions + latency thresholds.
- SSL / TLS certificate — days-to-expiry with two operator-set thresholds, plus full chain inspection (issuer, SANs, signature algorithm, TLS version).
- Ping (ICMP) — true ICMP echo via a dedicated dual-stack sidecar, IPv4 + IPv6, loss-percentage and RTT thresholds.
- TCP / port — connect with timing, optional TLS wrap (SMTPS / IMAPS / LDAPS), optional banner-grab assertion.
- DNS record — seven record types (A / AAAA / CNAME / MX / TXT / NS / CAA) with ExactMatch / Contains / AnyMatch modes and an optional resolver override for propagation testing.
- Domain expiration — RDAP-first with WHOIS fallback, surfaces registrar / name servers / EPP status / DNSSEC, and fires Down on registrar OR nameserver-set drift.
- Heartbeat (cron) — passive probe; your job pings a unique URL, absence flips it Down. Simple interval or full cron expression, frequency-anomaly detection on the rolling window.
- Email round-trip — three depth modes from SMTP-submission-only to full SPF/DKIM/DMARC verdict parsing.
- Database — PostgreSQL, MySQL, SQL Server, Redis, with auth + ping + custom SELECT assertions, encrypted credentials.
- WebSocket — connect + 101, subprotocol assertion, RFC 8441 (HTTP/2) support, optional RTT echo.
- gRPC Health — overall Check, per-service Check, Watch first-frame, mTLS with encrypted client certs.
Every probe shares the same plumbing — status pill (Up / Degraded / Down / Paused / Unknown), latency history, SLA target, alert fan-out, report inclusion — so adding a new check type to your dashboard is one modal away, not a separate sub-product.
Where it pays off
Probes are the foundation of the product — if you're using StatusPulse at all you're using probes. The interesting question is which probe type to reach for, and the answer is usually "more than one for the same target":
- Public web app or REST API — HTTP probe on the health endpoint, plus an SSL probe on the same host so the "certificate expired on a Sunday" failure mode is caught a fortnight early, plus a Domain expiration probe so the registrar lapse is caught a month early.
- Backend infrastructure — TCP probe for the port,
Database probe for the engine itself (real
SELECT 1over authenticated connection), DNS probe to catch a misconfigured resolver chain. - Async / batch / cron jobs — Heartbeat probe; your job ships a beat and absence flips Down. Pairs with the anomaly detector to catch a job that's running too often or flapping in cadence.
- Real-time stacks — WebSocket probe with subprotocol assertion for the upgrade path, gRPC Health probe for the service-level health contract.
Not the right choice when: you want browser-rendered, JavaScript-heavy end-to-end synthetic checks (StatusPulse probes are protocol-level, not headless-browser scenarios). For "did my SPA hydrate" or "did checkout complete in a real Chrome", a synthetic-browser tool sits alongside StatusPulse rather than being replaced by it.
Configuration parameters
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
Name |
string |
Required | — | Human-readable label shown on the dashboard, the public status page, and in alert subject lines. Free text — make it the operator-friendly name of the service you're checking. |
Type |
enum (11 values) |
Required | — | Which probe type to use: HTTP / SSL / Ping / TCP / DNS / Domain / Heartbeat / Email / Database / WebSocket / gRPC. Plan-gated types are visible but disabled with an inline upgrade prompt. The type can't change after save from the New modal. |
Target |
string |
Required | — | What to check — interpretation depends on Type. A URL for HTTP, a hostname for SSL / Ping / DNS / Domain, a host:port for TCP, an auto-generated token URL for Heartbeat. SSRF guards reject private / internal targets at save time. |
Interval (seconds) |
integer |
Optional | 60 (HTTP/TCP/DNS/Ping/Email/DB/WebSocket/gRPC); 21600 (SSL/Domain) | Time between checks. Floor is plan-gated: 60 s on Free, 30 s on Starter+, sub-minute on Business. SSL and Domain run on fixed 6-hour cadences (slow-changing signals). |
Timeout (seconds) |
integer (1-120) |
Optional | 30 | Hard ceiling for the whole check pipeline. Exceeded → Down with the TimedOut reason. Tune up for slow databases or far-away regions, never above 120 s. |
SLA target |
decimal (99.0-99.999) |
Optional | — | Optional uptime SLO for the probe. Drives the SLA widget on the status page and the SLO scorecard in PDF reports; doesn't affect alerts directly. |
Paused |
boolean |
Optional | false | Master kill-switch. Paused probes don't poll and don't fire alerts; the row stays on the page so the configuration and history are preserved. Used during planned upstream maintenance. |
Auto-email alerts |
boolean |
Optional | true | Per-probe switch on top of per-watcher toggles. When off, no email alerts fan out from this probe regardless of who's subscribed. Slack / Teams / SMS / webhook channels are governed separately. |
Available on Free+ (specific probe types are plan-gated — see each probe page). Already on StatusPulse? See the full config in Help →
Related
Try Probes in StatusPulse
5 probes, 1 status page, forever. No credit card. US or EU host — you choose.