No public trigger endpoint
The relay agent connects out. The Event-Driven Ansible, Rundeck or StackStorm listener only ever receives deliveries from inside your network.
Incident response · Event-Driven Ansible · Rundeck · StackStorm
PagerDuty, Grafana and Alertmanager post their alerts to one public Webhook Relay URL. A relay agent next to your automation connects out and delivers each one to Event-Driven Ansible, Rundeck or StackStorm, so remediation starts automatically. The tools that can restart services and change config never get a public address.
Free plan · No credit card · SOC 2 Type II · Self-hosted option
Buying for a company? Talk to sales
Alerting
PagerDuty · Grafana · Alertmanager
incident.triggered, firing
Webhook Relay
https://<bucket>
The only public URL. Stored, logged, retried.
Private network · no inbound ports
Event-Driven Ansible
→ :5000
runbook started
Safe on company infrastructure
Outbound only
The agent or operator connects out over TLS. No inbound port, no public IP.
Encrypted and scoped
AES-256 at rest. Ephemeral buckets store no bodies or headers at all.
Verified before forwarding
Signatures checked and source IPs allowlisted on the input, so forged requests never reach you.
SOC 2 Type II
Independently audited controls, SSO and audit logs.
A listener that runs playbooks is the most valuable endpoint an attacker could find. Keep it private.
Exposing your automation to alerting SaaS
With Webhook Relay
The relay agent connects out. The Event-Driven Ansible, Rundeck or StackStorm listener only ever receives deliveries from inside your network.
Verify PagerDuty's X-PagerDuty-Signature in a function, or use basic auth on the input for Grafana and Alertmanager. Anything else is stopped before forwarding.
Each alert is logged with the response your automation returned, so "what triggered this restart?" has an answer.
Anything that can POST to an HTTPS URL when an alert fires:
V3 webhook subscriptions for incident events, signed with X-PagerDuty-Signature.
A webhook contact point, with basic auth or an authorization header.
A webhook_config receiver, with http_config credentials.
Any monitor or on-call tool with a webhook notification.
Point the bucket's output at the listener's internal address.
The ansible.eda.webhook event source in your rulebook, matched to playbooks by conditions.
http://eda.internal:5000/endpointA Rundeck webhook that runs a job with the alert as options.
http://rundeck.internal:4440/api/<version>/webhook/<token>A webhook trigger feeding your rules and workflows.
http://st2.internal/api/v1/webhooks/<trigger>Any internal HTTP service: a small handler that restarts a service or opens a ticket.
http://ops-bot.internal:8080/alertsSignature verification
A Webhook Relay function runs on the input, before forwarding. This one verifies PagerDuty's X-PagerDuty-Signature (a single v1= signature). A forged alert gets a 401 and nothing runs.
local crypto = require('crypto')
-- Reject anything that isn't signed with your shared secret,
-- before it is forwarded into your network.
local sig, err = crypto.hmac('sha256', r.RequestBody, cfg:GetValue("WEBHOOK_SECRET"))
if err then error(err) end
if "v1=" .. sig ~= r.RequestHeader["X-PagerDuty-Signature"] then
r:SetResponseStatusCode(401)
r:SetResponseBody("invalid signature")
r:StopForwarding()
return
endOne agent on a host that can reach your automation. No inbound rule, no public IP.
Install the relay CLI (or the Docker image) on a host that can reach the listener, with an access token scoped to this bucket.
relay login -k $RELAY_KEY -s $RELAY_SECRET
relay forward --bucket incident-automation \
http://eda.internal:5000/endpointAttach the signature-checking function to the input, or enable basic auth on it and use the same credentials in Grafana or Alertmanager.
Add the bucket's public URL as a PagerDuty webhook subscription, a Grafana contact point or an Alertmanager receiver. Fire a test alert and watch it in the bucket logs.
Full guides: Install the relay agent · Basic auth on inputs · HMAC verification
7-day money-back guarantee on paid plans.
No. A relay agent inside your network opens an outbound connection to Webhook Relay. PagerDuty posts to the public Webhook Relay URL and the agent delivers each event to your listener's internal address.
Attach a function to the input that verifies PagerDuty's X-PagerDuty-Signature HMAC and stops forwarding when it doesn't match. For Grafana and Alertmanager, enable basic auth on the input and set the same credentials on the contact point or receiver.
Not by default. Forwarding is one-way: the sender gets Webhook Relay's response, and your listener's response is only recorded in the bucket logs. That keeps internal details out of the alerting vendor.
Webhook Relay stores the alert and the sender gets a success response. With durable delivery it is retried for up to 30 days, and any delivery can be replayed from the logs.
More security pages: Security alerts into an on-prem SIEM · GitOps webhooks into a private cluster · Security review kit
Run one agent, verify the sender, paste one URL into your alerting. Your automation stays private.
Free plan · No credit card required · 7-day money-back guarantee on paid plans