Step 1: Run the diagnostics
For each (watch, trademark) pair you expected an alert for, callGET /v1/watches/{id}/diagnostics:
reason field gives you the answer in plain English. The endpoint walks the evaluation steps in order and surfaces the first failure.
Step 2: Interpret reason
Step 3: Cross-reference webhook delivery
Whenalert_fired=true but you never saw it on your receiver, follow the trace to the delivery log:
delivered: receiver returned 2xx but may not have stored it. Inspectresponse_bodyand your own logs.failed: non-2xx response.error_reason(e.g.non_2xx_500) andhttp_statustell you which side broke. Up to 7 attempts total.exhausted: all attempts failed. Replay manually withPOST /v1/webhooks/{id}/deliveries/{did}/redeliver.pending: still queued. Wait, or check/health/readyto confirm Signa is up.
GET /v1/webhooks/{id}. status='disabled' plus disabled_reason (auto_consecutive_100, auto_failure_rate_50_over_50, or manual) explains why. Re-enable with PATCH /v1/webhooks/{id} once the receiver is healthy again.
Step 4: Confirm Signa is healthy
Before assuming a Signa-side bug, check readiness (see Monitor Signa uptime below). Retry the diagnostic flow once the platform reportsok.
Monitor Signa uptime
Two unauthenticated health endpoints let you monitor Signa from your own observability stack, useful for SLA reporting, status-page integration, and incident triage.
Use
/health/ready for real uptime and incident-detection monitoring; use /v1/health only as a lightweight liveness ping. Both endpoints are unauthenticated, no API key is required for your monitoring agent.
ok or degraded) from “down” (unhealthy); asserting the body’s status equals exactly "ok" would page you on every non-critical dependency blip:
degraded without paging on it, log the response body’s status field separately as a warning-level signal. A cron or uptime-checker version of the same check:
What /health/ready doesn’t cover
/health/ready is API-side health only. It does not surface:
- Data freshness for a specific office. An office falling behind on updates doesn’t flip the API to
degraded. If you watch a specific office and alerts stop firing, check the diagnostics endpoint,last_relevant_sync_run.completed_atwill be stale. - Webhook delivery. That’s between Signa and your receiver. Cross-check
GET /v1/webhooks/{id}/deliveriesfor the delivery audit log.
/health/ready is green but you suspect a Signa-side issue with a specific watch, use the diagnostics endpoint above.
Signa does not currently publish a public status page. If you maintain your own, surface /health/ready and the diagnostics-derived freshness signal separately, they cover different incident classes. For incident questions, email support@signa.so, or report a reproducible platform bug programmatically via POST /v1/feedback (attach the request_id from a failed call so we see exactly what you hit).
Retention
Past the diagnostic horizon,
evaluated=false and reason explains the freshness limit. A watch always continues to evaluate new data going forward, the horizon only limits the backward-looking diagnostic trace.