Health monitoring — what each signal means

4 min readUpdated 2026-05-18

Health monitoring — what each signal means

Hubbee monitors every connected site continuously. This page explains every status badge you’ll see and what causes each transition.

The two-dimensional status model

Each site has two independent status signals:

  1. Connection status — is the site reachable? (online / offline / unknown)
  2. Health status — is the site functioning correctly? (ok / warning / critical)

A site can be online but critical (reachable, but PHP is throwing errors). Or offline (we lost contact). The dashboard combines both into a single visible badge, but internally they’re tracked separately.

Connection status — how it’s computed

The WP plugin sends a heartbeat every 5 minutes (configurable in Sites → Settings → Heartbeat interval). Each heartbeat updates last_heartbeat_at.

Hubbee considers a site offline when:

now - last_heartbeat_at  >  heartbeat_interval × 3

So for the default 5-minute interval, a site flips offline after 15 minutes of silence. With a 1-minute interval, after 3 minutes.

This 3× threshold prevents flapping on a single missed beat. If you want stricter monitoring, lower the heartbeat interval (down to 1 minute on Pro/Agency).

Health status — how it’s computed

Each heartbeat carries a payload from the WP plugin:

  • WordPress version
  • PHP version
  • Plugin version
  • Memory usage (PHP, current / limit)
  • Disk usage (uploads dir + WP root)
  • Last PHP error captured from wp-content/debug.log
  • Active theme + slug
  • Pending plugin/theme/core updates count

The plugin evaluates these against thresholds and reports a status (ok, warning, critical):

Trigger Status
PHP version end-of-life (no security support) critical
PHP version >= current stable ok
Memory usage > 90% of limit warning
Disk usage > 95% critical
Fatal error in debug.log within last hour critical
Warning/notice within last hour warning
Pending core update warning
Pending plugin/theme updates (any) warning
Everything green ok

The status is the worst of all triggers. One critical trigger makes the whole site critical.

The dashboard badge

Each site card shows a combined badge:

  • Green dot + “Online” — Connection online, health OK
  • Yellow dot + “Warning” — Connection online, health warning
  • Red dot + “Critical” — Connection online, health critical
  • Grey dot + “Offline” — Connection offline (we can’t tell health when we can’t reach the site)
  • Pale grey + “Unknown” — Connection status hasn’t been determined yet (new site, no heartbeat received)

Hover the badge for the last heartbeat timestamp + specific reason.

How fast are status changes visible?

  • Connection → Offline: takes heartbeat_interval × 3 (default 15 min) after the last successful beat
  • Connection → Online: takes up to 60 seconds after recovery (dashboard polling interval)
  • Health changes: immediate on next heartbeat (within 5 min)

If you want faster recovery detection (for monitoring critical production sites), reduce the heartbeat interval. The trade-off is more WP cron cycles and slightly more bandwidth.

The Site Health tab

Inside each site → Health tab. This shows the full detail of every signal:

  • Last 24 hours of heartbeats as a timeline
  • Memory + disk usage graphs (7 days)
  • Pending updates list with severity
  • Recent PHP errors with stack traces (Pro+)

Alerting

You can configure notifications per site:

  • Email when status changes to Warning or Critical
  • Email when site goes Offline > 30 min
  • Slack webhook (Pro+) for both transitions

Settings → Notifications → Site Alerts sets defaults; individual sites can override.

Uptime SLO tracking

The dashboard tracks uptime percentage over the last 30 days. It’s calculated as:

uptime_pct = (total_seconds - offline_seconds) / total_seconds × 100

A site that was offline for 1 hour over a 30-day period shows 99.86%. Numbers below 99% trigger a yellow banner; below 95% turns red.

This is the same metric your client sees on your shared status page (Agency plan).

When to worry vs not

Pattern Action
Single flap (online → offline → online within an hour) Ignore. Probably a brief network hiccup.
Repeated flapping (>3 transitions per day) Check WP-cron, server load, or the WP host’s network reliability.
Persistent offline Walk through Plugin shows offline.
Sudden Critical Open the Health tab → recent errors. Usually a plugin/theme update went wrong.
Gradual Warning over days Memory/disk creep — investigate before it becomes Critical.

What this does NOT replace

Hubbee’s health monitoring is for plugin connection + WP-internal signals. It doesn’t replace dedicated uptime monitoring (Pingdom, UptimeRobot, Better Stack) which checks from outside your network. For mission-critical sites, run both — they catch different failure modes.

Was this article helpful?

Still stuck?

Open a support thread and we'll get back to you. Most replies arrive within a few hours on business days.

Contact support