Webhook
Send incident alerts to your receiver. Verify the signature before processing the body, and handle test events separately.
This alert channel is included in Pro and Enterprise. Compare plans.
Set up delivery
- 1
Add an alert channel
Open Settings → Alerts, choose Add Channel → Webhook and enter your receiver URL.
- 2
Set a signing secret
Enter a secret and store the same value securely in your receiver. The signature header is only sent when a secret is configured.
- 3
Save and test
Save and use Test. Handle
alert.testas a test,incident.detectedas a vendor incident alert andsdk.failuresas an SDK failure alert. All three use a flat JSON body.
Verify the signature
Pass the raw body and X-Checkupstream-Signature header to this function. The signature is a bare hex digest, with no algorithm prefix. Reject missing or invalid signatures.
import crypto from "node:crypto";
export function verifySignature(
body: string,
signature: string,
secret: string,
): boolean {
// Check the format before decoding untrusted header values.
if (!/^[0-9a-f]{64}$/i.test(signature)) return false;
const expected = crypto.createHmac("sha256", secret).update(body).digest();
return crypto.timingSafeEqual(Buffer.from(signature, "hex"), expected);
}Failed deliveries are retried. Deduplicate incident processing and acknowledge only after accepting the event. See the webhook reference for payloads.
Configure the integration
Add the destination or credentials, then verify the connection.