# Connect a custom webhook

> Connect anything that speaks HTTP, without waiting for us to build an integration for it.

Source: https://infranest.io/docs/connect-custom-webhook
Last updated: 2026-10-08

---

Connect any tool that can send or receive web requests to InfraNest, without waiting for a built-in integration. This is for anyone who wants to link custom or less common systems to InfraNest.

## Overview
- Send InfraNest events out to a URL your system listens on.
- Let another tool trigger actions in InfraNest using a URL we generate for you.
- The two directions are independent — set up one, both, or neither.

## Which direction do you need?
- *"When something happens in InfraNest, tell my system"* → send events out.
- *"When something happens in my system, do something in InfraNest"* → let something trigger InfraNest.

Incoming URLs aren't tied to one tool — anything that can send a request can use one — so they live on the **Custom webhook** page, and the Zapier, Make and n8n pages point back to it.

## Send events out
1. Go to **Integrations → Custom webhook**.
2. Under **Where events go**, select **Add endpoint** and paste the URL your own system listens on. Leave **Send every event here** ticked, so every event is sent from the start.
3. Copy the signing secret shown once after saving, and give it to your receiver so it can verify the request really came from us.
4. Select **Send test event** and pick an event to imitate, so you can confirm your receiver accepts it before you rely on it.
5. Choose what gets sent: the endpoint page lists the **Send everything to …** automation it started. Open it to narrow it to the events you care about — or, if you unticked the box, pick a starting point under **Start an automation that posts to Custom webhook** or build your own rule.

<!-- screenshot: connect-custom-webhook -->

<!-- docs-screenshots:start:connect-custom-webhook -->

![Connect a custom webhook](/media/13208f9b-ba91-4421-bf78-7a7fc7f78346)

<!-- docs-screenshots:end:connect-custom-webhook -->

## Let something trigger InfraNest
1. Go to **Integrations → Custom webhook → URLs we give you** and select **Add incoming URL**.
2. Give it a **Name** you'll recognise later — you pick it by name when writing the rule.
3. Optionally set a **Shared secret (optional)**. With one set, we only accept calls that send it in the `X-InfraNest-Secret` header, so a leaked URL on its own isn't enough.
4. Copy **Your URL** and paste it into the other tool, set to POST.
5. Back in InfraNest, use **Start an automation Custom webhook can trigger** and add what should happen — open a maintenance window, pause a monitor, resolve an incident.

> [!NOTE]
> No credential is needed for this integration. You supply a URL for us to post to, and we generate a URL for you — there is no API key to create.

> [!WARNING]
> Your incoming URL works like a password. Anyone holding it can trigger your organization's automations. Set a shared secret, and use **Regenerate URL** if it leaks.

## Tips
- The signing secret is shown once and never again. You can rotate it later; the old one stops working immediately.
- **Accept calls to this URL** switches one incoming URL off without deleting it or touching the others.
- Both directions keep a delivery log under **Recent deliveries**, so you can see what went out, what arrived, and what your endpoint answered.
- You can add more than one endpoint — for example one for incidents and another for domains.
- This integration only moves events. It doesn't read or manage servers, DNS or domains — that stays with the provider integrations.

## Troubleshooting
**Nothing arrives at my endpoint.** If you unticked **Send every event here**, the endpoint alone is only a destination — check that an automation posts to it, then look at **Recent deliveries** to see whether we sent anything at all.

**My receiver rejects the delivery.** It is verifying the signature with the wrong secret. The signing secret is shown once when the endpoint is saved — rotate it and copy the new one into your receiver.

**My tool doesn't trigger InfraNest.** Confirm it POSTs to the exact incoming URL, and that the shared secret — if you set one — is sent as the `X-InfraNest-Secret` header. If the URL was regenerated, the old one stops working immediately.
