Webhooks & SIEM Integration¶
Delivers real-time notifications to external systems when events occur during an engagement. Supports Slack, Microsoft Teams, Splunk, generic JSON, CEF, and syslog formats.
Event types¶
| Event | Fires when |
|---|---|
finding_added |
A new finding is discovered |
finding_verified |
A finding is verified with a working PoC |
phase_changed |
A testing phase starts or completes |
engagement_completed |
The full engagement finishes |
engagement_signed |
Client signs the authorization |
critical_finding |
A finding with Critical severity is added |
retest_completed |
A retest cycle (/retest) completes |
report_ready |
A report is generated and available for download |
surface_changed |
Surface Drift Detection detects a change |
monitor_alert |
Continuous Monitoring triggers an alert |
* |
All events (wildcard) |
Supported formats¶
| Format | Description | Typical destination |
|---|---|---|
json |
Generic JSON payload | Any HTTP endpoint |
slack |
Slack Block Kit message | Slack incoming webhook |
teams |
Adaptive Card | Microsoft Teams connector |
cef |
Common Event Format | ArcSight, QRadar |
syslog |
RFC 5424 syslog | Splunk HEC, rsyslog |
API endpoints¶
List webhooks¶
Returns all configured webhooks, ordered by creation date (newest first).
Create webhook¶
{
"name": "Slack - Critical Findings",
"url": "https://hooks.slack.com/services/T00/B00/xxx",
"secret": "optional-hmac-secret",
"event_types": ["critical_finding", "engagement_completed"],
"format": "slack",
"retry_count": 3,
"timeout_ms": 5000
}
| Field | Type | Default | Description |
|---|---|---|---|
name |
string | required | Display name |
url |
string | required | Destination URL |
secret |
string | null | HMAC-SHA256 signing secret. If set, each delivery includes an X-Webhook-Signature header |
event_types |
list | ["finding_added", "phase_changed", "engagement_completed"] |
Which events trigger this webhook |
format |
string | json |
Output format: json, slack, teams, cef, syslog |
retry_count |
int | 3 |
Number of retries on failure (0-10) |
timeout_ms |
int | 5000 |
Request timeout in milliseconds (1000-30000) |
Get / Update / Delete webhook¶
GET /api/v1/webhooks/{webhook_id}
PUT /api/v1/webhooks/{webhook_id}
DELETE /api/v1/webhooks/{webhook_id}
Update accepts partial payloads -- only include fields you want to change. Re-enabling a webhook (is_active: true) resets the failure counter.
Test webhook¶
Sends a test delivery to verify connectivity. The delivery is logged in the delivery history.
Delivery history¶
Returns recent delivery attempts with status code, success flag, attempt number, and any error message.
List available event types¶
Returns all event types with descriptions.
Circuit breaker¶
Webhooks have a built-in failure counter. After repeated delivery failures, the webhook is automatically deactivated (is_active: false). Re-enabling it via PUT resets the counter to zero.
Access control¶
Webhook management is admin-only. Misconfigured webhooks can leak sensitive finding data to external systems. Pentesters can see that webhooks exist but cannot create, modify, or delete them.
Connections to other features¶
- Surface Drift: when a surface change is detected, a
surface_changedevent fires - Continuous Monitoring: when a monitoring schedule detects a regression, a
monitor_alertevent fires - Compliance Mapping: report generation triggers
report_ready, which can notify stakeholders that a compliance gap report is ready