Upkeep/Docs

Troubleshooting

A project shows “unknown” instead of up/down

unknown means the check itself couldn’t run (not that the target responded badly). Check that the health-check URL is reachable from the public internet — http://localhost targets only work while developing locally, never in production.

I’m not getting notified about an incident

Walk through, in order:

  1. Is a notification channel actually attached to that project? Channels exist independently of projects until attached via a rule.
  2. Is the rule muted, or set to digest only? A digest-only rule deliberately doesn’t send per-incident alerts.
  3. Has the escalation threshold been reached? A single failed check doesn’t open an incident by itself if the threshold is higher than 1.
  4. For email/webhook channels, check the channel’s saved config value is still correct — it’s masked after saving and can only be replaced, not inspected.

Bulk import rows are failing

Each row is validated with the same rules as the single “Add project” form. The most common causes are a non-https:// health check URL, or a health_url that duplicates an existing project’s — duplicates are still imported, just flagged with a warning rather than blocked.

The app runs but I can’t sign in

If NEXT_PUBLIC_SUPABASE_URL / NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY aren’t set, auth is silently disabled rather than erroring — see Configuration.

No project is ever checked, even though everything looks configured

The dashboard and database can be fully set up while the actual checking still does nothing, if the pg_cron jobs are missing their auth secrets. Confirm both vault secrets exist (project_url and prober_secret_key, see Getting Started) and that all five Edge Functions (prober, notifier, digest, rollup, prune) are actually deployed. Cron jobs fail silently without these — check select * from cron.job_run_details order by start_time desc limit 5; against your Supabase project for the real error.

A TCP/DNS/SSL check always shows “unknown” or “down”

Confirm the target’s format matches its check type — tcp/ssl expect host:port (no scheme), dns expects a bare hostname (no scheme or port). A DNS check only resolves A (IPv4) records, so an AAAA-only hostname will always misreport as unresolvable. See Check types for the full table.

My project’s status page is 404ing

The public status page toggle is per-project and off by default — confirm it’s enabled in that project’s settings (see Public Status Pages). Disabling it makes the page 404 immediately, even if you have the link bookmarked.