Webhook

Generic HTTP Webhook

POSTs every matching event as a JSON object to a configured URL. Slack and Discord notifiers share this codepath under the hood, but webhook can also be used directly as a standalone notifier — no custom code required. This makes it the primary integration point for external workflows: pipe NTLM hashes to a cracking service, forward SMB auth events to n8n, send everything to a SIEM, etc.

Payload shape

{
  "RemoteAddr": "203.0.113.5",
  "RemotePort": 54321,
  "UserAgent":  "curl/8.0",
  "Data":       "DELETE /probe HTTP/1.1\r\nHost: ...",
  "Details":    "HTTPX: DELETE http://.../probe from 203.0.113.5:54321",
  "Curl":       "curl -X DELETE ..."
}

Curl is only populated for HTTP events; it is omitted for other handlers. Data and Curl fields are capped at 32 KB each; Truncated is true when either field was clipped.

Configuration

KeyRequiredDefaultNotes
notifieryesMust be webhook.
urlyesDestination URL. Posted with Content-Type: application/json.
filterno.*Go regexp matched against "HANDLER ACTION DETAIL from IP". See Notifiers for the full filter reference.

Example

notifiers:
  # Forward every captured SMB hash to an external cracking pipeline.
  - notifier: webhook
    url: https://n8n.myteam.internal/webhook/ntlm-capture
    filter: "^SMB Auth"

  # Alert a SIEM on any /l path hit (the default notify path).
  - notifier: webhook
    url: https://siem.example.com/ingest/xodbox
    filter: "^HTTPX.*\\/l"

  # No filter — forward everything.
  - notifier: webhook
    url: https://my-siem.example.com/ingest

Failure handling

  • 2xx/3xx responses are treated as success.
  • 4xx/5xx responses log an error but do not propagate it to the dispatcher (a flaky webhook does not block other notifiers).
  • Connection/transport failures (DNS, refused, timeout) propagate as errors and are surfaced in the app log.