> ## Documentation Index
> Fetch the complete documentation index at: https://docs.hiveinspect.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Webhooks: Get Notified When Inspections and Contacts Change

> Hive Inspect webhooks send a message to your URL when an inspection is confirmed, rescheduled, canceled or published, or when a contact changes.

<p className="hive-locator">In the dashboard: <strong>Business Tools → API Access → Webhooks</strong></p>

<Note>
  **The Hive Inspect API is a work in progress.** It is available to a small group of accounts today, and the release for everyone is coming very soon. To ask for early access, message us from the chat bubble in your dashboard.
</Note>

A webhook is a message Hive sends to your system the moment something changes. Your tools learn about a new booking or an updated contact right away, without asking the API over and over.

## Add an endpoint

<Steps titleSize="h3">
  <Step title="Open the Webhooks section">
    Go to **Business Tools → API Access** and scroll to **Webhooks**. Only the account owner and admins can manage webhooks.
  </Step>

  <Step title="Add your URL">
    Click **Add endpoint**. Enter the URL that will receive the messages. It must start with `https://` and be reachable from the internet.
  </Step>

  <Step title="Choose the events">
    Tick the events you want. You can change them later. See [Events and payloads](/api/webhook-events) for the full list.
  </Step>

  <Step title="Copy the signing secret">
    Hive shows a signing secret once. Copy it into your receiver. You use it to [check that a message really came from Hive](/api/webhook-signatures).
  </Step>

  <Step title="Send a test">
    Click **Send test**. Hive sends a sample event with made-up data and `"test": true`, and shows you what your server replied.
  </Step>
</Steps>

You can add up to 10 endpoints. Each has its own secret and its own list of events.

## What your endpoint must do

* **Reply with a `2xx` status within 10 seconds.** Any other reply, or no reply, counts as a failed delivery.
* **Reply first, work later.** Save the message and return `200`, then do slow work in the background.
* **Do not redirect.** Hive does not follow redirects. Use the final URL.
* **Expect the same event more than once.** Use the event `id` to ignore one you already handled.

## Retries

If a delivery fails, Hive sends the same message again on this schedule:

| Attempt | When |
| - | - |
| 1 | Right away |
| 2 | 1 minute later |
| 3 | 5 minutes later |
| 4 | 30 minutes later |
| 5 | 2 hours later |
| 6 | 12 hours later |

After the sixth failed attempt the delivery is marked **Failed**. Every attempt carries the same body and the same event `id`.

<Warning>
  An endpoint that has no successful delivery for 5 days is turned off. Fix your receiver, then choose **Turn on** in its menu.
</Warning>

## See what was sent

**Recent deliveries** on the same page lists the last 50 messages, each with its status and number of attempts. Click a row to see the exact message Hive sent and your server's reply. Click **Send again** to deliver it once more. Deliveries are kept for 30 days.

## Things to know

* **Events arrive within about a minute.** Inspection events are sent right away. Contact events are sent within 60 seconds of the change.
* **Order is not guaranteed.** Two changes close together can arrive in either order. Use `fired_at`, or fetch the record from the API, when order matters.
* **Photo links expire.** A `photo_url` in a message works for 1 hour. Fetch the contact from the API when you need a fresh link.
* **Sample inspections do not send events.**
* **Webhooks in Automations are separate.** The webhook channel in Automations sends its own messages, with the data sections you pick there. API webhooks are set up here and always send the full set.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.