Finding webhooks
Detectant can send an HTTPS webhook when a direct API scan or enabled S3 integration finds a suspicious or malicious file. Configure the destination and select Webhook under Dashboard → Settings → Notification settings. You can use webhook delivery by itself or together with email.
Event
Every notification uses the finding.detected event type. The request body is JSON and the detected_at value is an ISO 8601 timestamp.
For a direct API scan:
For an S3 integration, source identifies the integration and file identifies the exact object:
verdict is either suspicious or malicious. Treat fields you do not recognize as forwards-compatible additions.
Verify the signature
Detectant signs the exact raw request body using the signing secret shown in notification settings. The request includes these Standard Webhooks headers:
webhook-id: a stable identifier for this finding notification. Use it to deduplicate processing.webhook-timestamp: the signing time as Unix seconds.webhook-signature: one or more versioned signatures, currentlyv1,<base64-signature>.
To calculate the expected signature:
- Remove the
whsec_prefix from the signing secret and Base64-decode the remainder. - Join the webhook ID, timestamp and unmodified raw body with periods:
<id>.<timestamp>.<raw-body>. - Calculate HMAC-SHA256 with the decoded secret and Base64-encode the result.
- Compare it with the
v1signature using a timing-safe comparison.
Reject requests with missing headers, an invalid signature, or a timestamp outside a short tolerance such as five minutes. Verify the signature before parsing JSON, and never log the signing secret or full request headers.
Delivery behavior
The endpoint must use HTTPS and a public hostname. Detectant waits up to five seconds and accepts any 2xx response as successful. Redirects and non-2xx responses are treated as failures. A failed delivery does not change the saved finding or scan result and is not currently retried automatically. Respond quickly after safely recording the event and perform slower work asynchronously.
Keep the signing secret private. If it is exposed, disable webhook delivery and contact Detectant support.

