> ## 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.

# Webhook Events and Payloads in the Hive Inspect API

> The full list of Hive Inspect webhook events, with the JSON each one sends for inspections and contacts, and the request headers on every message.

<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>

Every webhook message is an HTTPS `POST` with a JSON body.

## Events

| Event | Sent when |
| - | - |
| `inspection.confirmed` | An inspection is confirmed, at creation or later |
| `inspection.rescheduled` | An inspection's date or time changes |
| `inspection.canceled` | An inspection is canceled |
| `inspection.published` | A report on an inspection is published. Sent once for each report. |
| `contact.created` | A contact is created |
| `contact.updated` | A contact's details or tags change |
| `contact.deleted` | A contact is deleted, or merged into another contact |

**Coming soon:** `inspection.created` and `inspection.deleted`.

<Note>
  Agents and clients are the same kind of record in Hive, so one set of `contact` events covers both. Read `roles` in the message to tell them apart, for example `["Buyer Agent"]`.
</Note>

## The message

Every event has the same outer shape:

```json theme={"theme":{"light":"github-light","dark":"vesper"}}
{
  "id": "evt_3f9a1c27b5e84d06a1f2c3d4e5f60718",
  "event": "inspection.confirmed",
  "api_version": "v1",
  "organization": { "id": "9c2e7b14-5a3d-4f81-b6c0-2d1e3f4a5b6c", "name": "Summit Home Inspections" },
  "fired_at": "2026-10-02T15:04:11.482913+00:00",
  "data": {}
}
```

| Field | What it holds |
| - | - |
| `id` | The event's id. It stays the same on every retry, so use it to ignore duplicates. |
| `event` | The event name |
| `api_version` | Always `v1` for now |
| `organization` | Your company's id and name |
| `fired_at` | When the event was created, in UTC |
| `data` | The record. Its contents depend on the event. |

A message from the **Send test** button also has `"test": true`.

## Request headers

| Header | Value |
| - | - |
| `Content-Type` | `application/json` |
| `X-HiveInspect-Event` | The event name |
| `X-HiveInspect-Event-Id` | The same value as `id` in the body |
| `X-HiveInspect-Delivery-Attempt` | `1` for the first try, up to `6` |
| `X-HiveInspect-Timestamp` | When this attempt was sent, in Unix seconds |
| `X-HiveInspect-Signature` | The signature. See [Verify signatures](/api/webhook-signatures). |

## Inspection events

All four inspection events send the same sections in `data`.

```json theme={"theme":{"light":"github-light","dark":"vesper"}}
{
  "id": "evt_3f9a1c27b5e84d06a1f2c3d4e5f60718",
  "event": "inspection.confirmed",
  "api_version": "v1",
  "organization": { "id": "9c2e7b14-5a3d-4f81-b6c0-2d1e3f4a5b6c", "name": "Summit Home Inspections" },
  "fired_at": "2026-10-02T15:04:11.482913+00:00",
  "data": {
    "inspection": {
      "id": "7a9d4e2b-3c1f-4b6a-8e5d-9f0a1b2c3d4e",
      "status": "confirmed",
      "scheduled_for": "2026-10-15T14:00:00+00:00",
      "accepted_at": null,
      "canceled_at": null,
      "created_at": "2026-10-02T15:03:58.120000+00:00",
      "updated_at": "2026-10-02T15:04:10.930000+00:00",
      "total_duration_hours": 2.5,
      "total_amount_cents": 45000,
      "payment_status": "pending",
      "amount_paid_cents": 0,
      "amount_due_cents": 45000,
      "urgent_request": false,
      "notes": null
    },
    "property": {
      "address": "12 Oak St, Austin, TX 78701",
      "street_address": "12 Oak St",
      "unit": null,
      "city": "Austin",
      "state": "TX",
      "zip": "78701",
      "country": "US",
      "county": "Travis",
      "property_type": "Single Family",
      "square_footage": 2100,
      "year_built": 1999,
      "num_bed_bath": null,
      "bedrooms": 3,
      "bathrooms": 2,
      "foundation_type": "Slab",
      "occupancy": "Occupied"
    },
    "inspectors": [
      {
        "id": "4d2f8a1c-6b3e-4a79-9c05-8e7d6f5a4b3c",
        "full_name": "Sam Carter",
        "email": "sam@example.com",
        "phone": "+15125550110",
        "license_number": "TREC 24680",
        "credentials": null
      }
    ],
    "charges": {
      "total_amount_cents": 45000,
      "amount_paid_cents": 0,
      "amount_due_cents": 45000,
      "currency": "USD",
      "line_items": [
        { "name": "Home Inspection", "price_cents": 40000 },
        { "name": "Pool Inspection", "price_cents": 5000 }
      ]
    },
    "buyers": [
      {
        "id": "1e5c9b7a-2d4f-4c63-8a90-b1c2d3e4f5a6",
        "full_name": "Cora Bennett",
        "first_name": "Cora",
        "last_name": "Bennett",
        "email": "cora@example.com",
        "cc_email": null,
        "phone": "+15125550101",
        "agency_name": null,
        "address": null,
        "address_line2": null,
        "city": null,
        "state": null,
        "zip": null,
        "country": null,
        "website": null,
        "photo_url": null,
        "birthday": null,
        "social": null,
        "notes": null,
        "tag_list": [],
        "created_at": "2026-10-02T15:03:57.000000+00:00",
        "updated_at": "2026-10-02T15:03:57.000000+00:00"
      }
    ],
    "buying_agent": {
      "id": "0b6f2c1e-7d1a-4c55-9a5e-2f3b8c1d4e6f",
      "full_name": "Dana Reyes",
      "first_name": "Dana",
      "last_name": "Reyes",
      "email": "dana@example.com",
      "cc_email": null,
      "phone": "+15125550142",
      "agency_name": "Lone Star Realty",
      "address": "400 Congress Ave",
      "address_line2": null,
      "city": "Austin",
      "state": "TX",
      "zip": "78701",
      "country": "US",
      "website": null,
      "photo_url": null,
      "birthday": null,
      "social": null,
      "notes": null,
      "tag_list": ["VIP"],
      "created_at": "2026-06-11T18:20:00.000000+00:00",
      "updated_at": "2026-09-20T15:00:00.000000+00:00",
      "buying_agent_inspections": 14,
      "selling_agent_inspections": 3
    },
    "selling_agent": null,
    "event_details": {
      "trigger_event": "inspection.confirmed",
      "scheduled_for": "2026-10-15T14:00:00+00:00",
      "status": "confirmed",
      "total_duration_hours": 2.5,
      "block_calendar": null,
      "scheduling_method": "inspector"
    }
  }
}
```

| Section | What it holds |
| - | - |
| `inspection` | Status, schedule, totals and payment status. Money is in cents. |
| `property` | The address and property details |
| `inspectors` | The inspectors assigned |
| `charges` | The total and each line item, in cents |
| `buyers` | The clients on the inspection |
| `buying_agent` | The buyer's agent, or `null`. Includes how many inspections this agent has brought you. |
| `selling_agent` | The listing agent, or `null` |
| `event_details` | The event name and a short summary of the schedule |

### Extra fields on some events

**`inspection.rescheduled`** adds the old time, so you can tell what changed:

```json theme={"theme":{"light":"github-light","dark":"vesper"}}
"event_details": {
  "trigger_event": "inspection.rescheduled",
  "scheduled_for": "2026-10-16T16:00:00+00:00",
  "previous_scheduled_for": "2026-10-15T14:00:00+00:00",
  "status": "confirmed"
}
```

**`inspection.published`** adds the inspection's reports and their status:

```json theme={"theme":{"light":"github-light","dark":"vesper"}}
"reports": [
  { "id": "b7e1d2c3-4a5f-4e60-9b71-c8d9e0f1a2b3", "name": "Home Inspection Report", "status": "published" },
  { "id": "c8f2e3d4-5b6a-4f71-8c82-d9e0f1a2b3c4", "name": "Radon Report", "status": "pending" }
]
```

**`inspection.canceled`** has `inspection.status` set to `canceled` and `inspection.canceled_at` set.

## Contact events

`data.contact` holds the contact.

```json theme={"theme":{"light":"github-light","dark":"vesper"}}
{
  "id": "evt_8c1d2e3f4a5b46c7d8e9f0a1b2c3d4e5",
  "event": "contact.updated",
  "api_version": "v1",
  "organization": { "id": "9c2e7b14-5a3d-4f81-b6c0-2d1e3f4a5b6c", "name": "Summit Home Inspections" },
  "fired_at": "2026-10-02T15:10:42.003118+00:00",
  "data": {
    "contact": {
      "id": "0b6f2c1e-7d1a-4c55-9a5e-2f3b8c1d4e6f",
      "full_name": "Dana Reyes",
      "first_name": "Dana",
      "last_name": "Reyes",
      "email": "dana@example.com",
      "cc_email": null,
      "phone": "+15125550142",
      "business_name": null,
      "agency_id": "5c1d9a3e-2b7f-4e80-9c64-1a2b3c4d5e6f",
      "agency_name": "Lone Star Realty",
      "address": "400 Congress Ave",
      "address_line2": null,
      "city": "Austin",
      "state": "TX",
      "zip": "78701",
      "country": "US",
      "website": null,
      "photo_url": null,
      "birthday": null,
      "social": null,
      "notes": null,
      "tag_list": ["VIP", "Top Agent"],
      "roles": ["Buyer Agent"],
      "created_at": "2026-06-11T18:20:00.000000+00:00",
      "updated_at": "2026-10-02T15:10:41.000000+00:00"
    }
  }
}
```

Things to know:

* **`contact.updated` shows the contact as it is now.** It does not list which fields changed. Several quick edits to one contact can arrive as a single event.
* **A tag change is an update.** Adding or removing a tag sends `contact.updated`.
* **`roles` comes from the contact's inspections.** A new contact with no inspection yet has an empty list. Being added to an inspection does not send an event on its own.
* **`contact.deleted` sends the last known copy.** Its `tag_list` and `roles` are empty, because they were removed with the contact.
* **A merge sends `contact.deleted`** for the contact that was merged away.


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