# Webhooks

> Webhooks push InfraNest events to your own systems, so your tools can react automatically.

Source: https://infranest.io/docs/webhooks
Last updated: 2026-10-26

---

Webhooks let InfraNest send real-time updates about your infrastructure straight to your own systems, so your tools can react automatically instead of you checking manually.

## Overview

- Webhooks notify an endpoint you control whenever something happens in InfraNest — like a domain expiring or a monitor alert.
- Each delivery is signed so you can confirm it really came from InfraNest.
- Failed deliveries are logged and retried automatically.

## Add a webhook

1. Go to **Webhooks** and add an endpoint.
2. Enter the **URL** to send events to, a **description**, and choose which **events** it should receive.

<!-- screenshot: webhooks -->

<!-- docs-screenshots:start:webhooks -->

![Webhooks](/media/91754192-ef23-4779-aef6-c6c319c79f16)

<!-- docs-screenshots:end:webhooks -->

3. Save. InfraNest generates a **secret** you'll use to verify the requests.

## Choose which events to receive

You can subscribe a webhook to events such as:

- A **domain expiring**
- A **domain or server status change**
- A **monitor alert**
- **DNS records changing**
- The **drop-catch** lifecycle (dropping soon, available, registered, failed)

## Verify deliveries

1. Each webhook is sent as a POST request, signed with your secret using an HMAC in the `X-InfraNest-Signature-V2` header, and timestamped with `X-InfraNest-Timestamp`.
2. Use these headers on your end to confirm the request genuinely came from InfraNest.
3. Test deliveries and real events are signed the same way, so you can safely test your setup before relying on it.

> [!WARNING]
> The older `X-InfraNest-Signature` header will stop being sent after 30 April 2027. Switch your receiver to use `X-InfraNest-Signature-V2` before then.

> [!NOTE]
> If a delivery fails, InfraNest logs it and retries automatically — you don't need to resend it yourself.

## Other incoming connections

InfraNest also accepts a few **incoming** connections that your own tools call, each secured with its own token. Examples include:

- **Deploy hooks** — trigger a deploy from your CI system.
- **Dynamic-IP updates** — sent from your router (see **Set up Dynamic IP**).
