I have a question regarding how webhook actions are executed in Distill.
I am using the Chrome extension with a Local Monitor (running on my local PC).
Local actions such as notification sounds and popup alerts are working correctly on my machine.
However, when I configure a webhook action with a URL such as:
http://127.0.0.1:8000/distill
the webhook is never received by my local server, even though the monitor is clearly running locally.
This leads me to suspect that webhook actions may always be executed via Distill’s cloud backend, even when the monitor itself is local and the webhook is configured in the Local Actions section of the UI.
Could you please confirm the following?
Are webhook actions always sent from Distill’s cloud servers, regardless of whether the monitor is local or cloud-based?
Is it officially unsupported to send webhooks directly to localhost or private IP addresses, even for local monitors?
If local webhook execution is not supported, is this a design or security limitation?
I want to understand whether my current setup is unsupported by design, or if there is a configuration I am missing.
@tomocamera0717 Yes — webhook actions are always executed from Distill’s backend servers, even when the monitor itself is running locally via the browser extension. Sending webhooks directly to localhost or private IPs is not supported by design.
Detailed clarification 1. Are webhook actions always sent from Distill’s cloud servers? Yes. Webhook actions are executed by Distill’s backend infrastructure, regardless of whether the monitor is:
A Cloud monitor, or
A Local monitor running via the Chrome extension
Local monitors run the page checking logic on your machine, but actions that involve outbound HTTP requests (webhooks) are handled centrally by Distill’s servers.
That’s why:
Local notification sounds and popups work (they’re browser-local)
Webhooks to 127.0.0.1 or private IPs do not
From Distill’s servers, 127.0.0.1 refers to the server itself — not your local machine.
2. Is sending webhooks to localhost or private IPs supported? No — this is officially unsupported.
Webhook endpoints must be:
Publicly reachable over the internet
Accessible from Distill’s cloud infrastructure
Endpoints such as:
127.0.0.1
localhost
192.168.x.x, 10.x.x.x, etc.
will not work, even for local monitors.
3. Is this a design or security limitation?
It’s both by design and for security reasons:
Allowing browser extensions to make arbitrary HTTP callbacks to local/private networks would raise serious security concerns
Centralized webhook execution ensures consistent behavior, reliability, retries, and logging
It avoids exposing users’ local environments to unintended network access
So this behavior is intentional, not a configuration issue on your end.
What you can do instead
If you need to receive webhook events locally for development or testing, you can use a tunnel service such as:
Cloudflare Tunnel
ngrok
localtunnel
This gives you a public HTTPS endpoint that forwards requests to your local server, which will work with Distill webhooks.