Alerting and notifications
Configure webhooks for custom integrations
Send alert and recovery events as JSON to an endpoint you control, with an optional HMAC signature so your receiver can verify the request.
Add a webhook endpoint
- Open the monitor from the dashboard and open its alert configuration.
- Enter the endpoint in Webhook URL.
- Optionally enter a Webhook Secret. A saved secret is not shown again; enter a new value only when replacing it.
- Select Alert opened, Recovery, or both trigger events.
- Save the alert configuration, then use the test action to verify the endpoint.
Endpoint and secret rules
- The URL can contain up to 2,048 characters and must use HTTP or HTTPS.
- URLs with embedded usernames or passwords are rejected. Localhost, private network, link-local, and zero-address targets are also blocked.
- The optional secret can contain up to 4,096 characters.
- At least one trigger event is required when a webhook URL is configured.
Verify the signature
When a secret is configured, GetPulseCheck signs the JSON request body with HMAC-SHA-256. Read the X-GetPulseCheck-Signature header and expect the format sha256=hex_digest. Compute the digest over the exact raw body received by your endpoint before parsing it.
Understand the payload
- Alert events use
monitor.alert; recovery events usemonitor.recovery. - The top-level payload includes
monitorandincidentobjects, plusfailureandconfidencedetails for an alert. - Failure details can include the reason, status code, response time, failed timestamp, and failure streak.
- Confidence details include confirming region codes and names, the failing region count, total regions, and the confidence label and percentage.
- Test alert requests use
monitor.alert.test, settestEventto true, and identify the live event asmonitor.alertinliveEventType.
Review delivery history
GetPulseCheck retries failed webhook deliveries once after 10 seconds. The monitor keeps the 50 newest attempts. Each entry records the attempt time, event type, whether it was a test, success, HTTP status, and a response excerpt capped at 280 characters.