What this is for
Settings → Notifications lets you push gateway events to any HTTPS endpoint and create alert rules that fire into those endpoints when conditions cross a threshold. Use it to feed SIEM tools, page on-call, drop budget warnings into Slack, or replicate audit events into your own pipeline. The page has two sections: Alert Rules (conditions that trigger notifications) and Webhook Endpoints (where the notifications go).Options
Webhook Endpoints
Create Webhook form:Available events
The Events picker lists the events below by name, with a search box. Leave every box unchecked to subscribe the endpoint to all of them. Extra event IDs (optional) takes any additional ids, comma- or newline-separated, for events not in the list. Some events are in the catalog but nothing on the gateway sends them yet. They are marked Not sent yet below. You can subscribe to them, but the endpoint receives nothing for them.Traffic & latency
Tokens & quotas
Providers & models
Routing & cache
Spend
Security & guardrails
Despite the names, these five ids are not limited to blocks. An endpoint subscribed to more than one of them receives each guardrail event once.
MCP
API keys
Audit & access
Repositories
Organization & platform
Repositories
When one gateway event matches several ids an endpoint subscribes to, the endpoint gets a single delivery. Its
X-Webhook-Event header carries the first matching id.
Repository scan failures
repo.scan_failed tells you when Discovery could not scan a repository and the fix is on your side. Guardway cloud sends it, not the gateway, and it checks for new failures every 10 minutes.
When it is sent
- Guardway lost access to the repository, for example the GitHub App can’t access it (HTTP 4xx) or the Azure DevOps connection lost access. GitHub rate limits are on Guardway’s side and are not sent.
- The repository is too large to scan.
- The repository type is unsupported.
- Every connected Slack workspace, to its default channel.
- Every enabled webhook endpoint with
repo.scan_failedchecked in its event list.
https:// address. Private or internal addresses and http:// URLs are refused. Up to 3 attempts for timeouts, network errors, 5xx, 408 and 429, with a 10 second timeout per attempt. Other 4xx responses and redirects are not retried, and a Retry-After above 5 seconds ends delivery.
Headers
Payload
In the dashboard the event appears under the Repositories category as Repository Scan Failed.
Repository findings alerts
repo.findings_detected tells you when a GitHub or Azure DevOps repository scan finds something new. It is available to organizations as it rolls out.
When it fires
- After a manual or scheduled repository scan completes. Pull request scans do not fire it: they report on the pull request itself.
- The first completed scan of a repository sends one baseline summary of everything it found.
- Later scans report only new findings: those not present in the repository’s previous two completed scans. Using two scans means one degraded scan does not make Guardway announce everything again. Compliance (OWASP MCP) findings are matched by risk id.
- Scans keep up to 1000 findings per scanner. A finding that falls outside that cap and later returns can be reported again.
- Slack, through an alert rule: in Create Alert, set Rule type to New repository findings.
- Webhooks, through an alert rule (Rule type set to New repository findings) or a webhook subscription to
repo.findings_detected. An endpoint subscribed without an alert rule always uses a minimum severity of High and covers all repositories; use an alert rule to change either. - PagerDuty, Opsgenie, Microsoft Teams and email notification channels do not support this event.
- Each destination is notified at most once per scan. When several rules or subscriptions reach the same destination, the first one that qualifies sends. Cooldown does not apply.
- The URL must use https and resolve to a public address. Private, loopback and link-local addresses,
.localnames and single-label hosts are refused. - Redirects are not followed; a 3xx response counts as a failed delivery.
- Any non-2xx response (including 4xx) or network error is retried, for 3 attempts in total, each with a 10 second timeout, waiting 1 s and then 3 s between attempts. A
Retry-Afterheader is honoured up to 5 s. There are no retries after the third attempt. - Requests are signed like any other event:
X-Webhook-Signature,X-Webhook-EventandX-Webhook-ID. See Verifying the signature.
Payload
Example body:
Alert Rules
Create Alert form:
For New repository findings (
repo.findings_detected), Condition and Threshold are replaced by Minimum severity (default High) and Repositories (all by default), and Cooldown does not apply (it is shown disabled: “Each scan alerts once.”). To use it, set Rule type to New repository findings in Create Alert. See Repository findings alerts.
Delivery guarantees
- HMAC signing — every request includes an
X-Webhook-Signatureheader,sha256=followed by the hex HMAC-SHA256 of the body, keyed with the signing secret. - Event header —
X-Webhook-Eventcarries the subscribed event id the delivery matched. - Retries — for gateway-delivered events, exponential backoff on 5xx and network errors, up to Max Retries.
repo.findings_detectedis sent from the cloud with its own retry policy; see Repository findings alerts. - Per-webhook filters — only the events selected on each endpoint are delivered.
- Audit trail — every delivery attempt (success or failure) is recorded in Audit Log.
How to configure
1
Create a webhook endpoint
Open Settings → Notifications from the dashboard sidebar, scroll to Webhook Endpoints, click Create Webhook. Fill Name, URL, Events, Signing secret, Timeout, and Max Retries. Save.
2
Verify on your receiver
Trigger one of the selected events (e.g. an MCP call for
request.completed) and confirm your endpoint received a signed POST.3
Create an alert rule
Scroll to Alert Rules, click Create Alert. Set Name, Condition, Threshold, Severity, Cooldown, and pick the Webhook endpoint the alert should notify.
4
Test it
Force the condition (e.g. exceed an API key’s request quota from Playground) and confirm both the gateway log and your endpoint show the delivery.
Verifying the signature
Compute HMAC-SHA256 over the raw request body using your webhook Signing secret, hex-encode it, prefix it withsha256=, and compare the result to the X-Webhook-Signature header. Reject the delivery if they don’t match.
Related
- Repository findings — what a repository scan finds.
- Budgets and Alerts — the
budget.thresholdandbudget.exceededevents and which subscriptions receive them. - Audit Log — every webhook delivery attempt is recorded here.
- Integrations — first-party integrations that don’t need a webhook.