Skip to content

Generic Webhooks

Generic webhooks deliver every supported event as a JSON POST to a URL of your choice. Useful for SIEM pipelines, internal automation, custom dashboards, Zapier/Make/Tray flows, or anything else not covered by the first-party integrations.

  1. Open Settings → Integrations and click Add Webhook.
  2. Enter your endpoint URL (HTTPS recommended).
  3. Optionally add custom headers (for example Authorization: Bearer your-token-for-auth).
  4. Pick events and apply filters.
  5. Click Test — Vygl POSTs a canned event_type: "test" payload to your URL. Verify your endpoint received it.

Every event POST is a JSON object with this shape:

{
"event_id": "550e8400-e29b-41d4-a716-446655440000",
"event_type": "critical_finding",
"org_id": "01HZK...",
"timestamp": "2026-04-17T12:34:56Z",
"data": {
// event-specific payload
}
}

The data block varies per event type:

EventKey fields in data
scan_completedscan_id, project_id, branch, commit, severity_counts, duration_ms
critical_finding / high_findingfinding_id, severity, rule_id, file_path, line, ai_verdict
cve_critical / cve_highcve_id, package_name, package_version, affected_projects
cve_batch_summarytotal_alerts, by_severity, top_packages
ResponseBehavior
2xxSuccess — done
3xxFollowed (one redirect max)
4xxLogged, not retried (your endpoint signaled the request is bad)
5xx / connection errorRetried up to 3x with exponential backoff

After all retries fail, the delivery is logged with the last error and given up.

Each event has a stable event_id (UUID). On retries, the same event_id is sent — your endpoint should be idempotent on this field to handle duplicate deliveries gracefully.

Vygl rejects URLs that resolve to private/reserved IP ranges (RFC 1918, loopback, link-local, etc.) to prevent SSRF. Public-internet URLs are allowed; if you’re forwarding to a private endpoint, run an HTTPS reverse proxy on the public internet.

Set headers like Authorization: Bearer ... in the integration config. Common patterns:

  • Secret bearer token that your endpoint validates server-side.
  • Custom signature header that your endpoint hashes the body against (HMAC).