Available event types
Incidents
Maintenance
Metrics
Agent health (org-wide destinations only)
Hosted checks (org-wide destinations only)
SLOs (org-wide destinations only)
SLA Ledger (org-wide destinations only)
Digest
alert.digest is sent once a day to destinations that use
Daily digest instead of instant delivery. It summarizes the
events that were batched for that destination.
Create a generic webhook
1
Add the destination
In the console, open Alerts, then Add destination, and choose
Generic webhook under Channel. Under Connection, set:
- Endpoint URL: an
https://URL on a publicly reachable host that accepts POST requests with a JSON body. - Signing secret (optional): a shared secret. When set, Observer signs every delivery with HMAC-SHA-256 (see Verify the signature).
2
Choose alerts and routing
Under Alerts, pick a preset:
- Paging (the default): incidents (published, updated, resolved) and metrics turning unhealthy.
- Everything, daily digest: every alert, batched into one summary a day.
- Custom: pick the alerts yourself. Custom also has the Daily digest instead of instant delivery switch.
3
Send a test
On the Alerts page, open the destination’s actions menu and
choose Send test. Observer sends a test delivery and reports
whether it succeeded.
Payload
By default each delivery is a JSON envelope:event is one of the event types above. severity and status
depend on the event and may be null. See the
webhook payload reference for
every field.
Each request is a POST with Content-Type: application/json.
Respond with a 2xx status within 10 seconds.
Verify the signature
When a signing secret is set, every delivery includes three headers:X-Observer-Signature is
${timestamp}.${rawBody}. To verify:
- Read
X-Observer-Timestamp. Reject the delivery if it is more than five minutes from the current time on the receiver. This skew window bounds replay attacks against captured deliveries. - Compute
HMAC-SHA-256(secret, "${timestamp}.${rawBody}")and hex-encode the digest. Prependsha256=. - Compare against
X-Observer-Signatureusing a constant-time comparison (crypto.timingSafeEqualin Node,hmac.compare_digestin Python, equivalents elsewhere). String equality leaks information through timing side channels.
Legacy header
X-Observer-Signature-Legacy carries HMAC-SHA-256(secret, rawBody)
for receivers that have not migrated to the timestamp-prefixed scheme.
It is still sent for compatibility and will be removed in a future
release. Use the timestamp-prefixed X-Observer-Signature for new
receivers; receivers relying on X-Observer-Signature-Legacy lose
replay protection.
