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

# Webhook Events

> Reference for all webhook event types and their payload structures in PlaneConnection.

This reference documents all webhook event types that PlaneConnection can send to your configured endpoints. Each event includes a JSON payload with the event type, timestamp, and relevant data.

<Info>
  Configure webhook endpoints in **Settings > Webhooks**. See
  [Configure Webhooks](/en/how-to/admin/configure-webhooks) for setup instructions.
</Info>

## Payload Structure

Every webhook payload follows this structure:

```json theme={}
{
  "id": "evt_abc123",
  "type": "trip.created",
  "workspace_id": "ws_xyz789",
  "timestamp": "2026-03-24T14:30:00Z",
  "data": {
    // Event-specific data
  }
}
```

| Field          | Type   | Description                                             |
| -------------- | ------ | ------------------------------------------------------- |
| `id`           | string | Unique event identifier. Use for deduplication.         |
| `type`         | string | Event type in `resource.action` format.                 |
| `workspace_id` | string | The workspace where the event occurred.                 |
| `timestamp`    | string | ISO 8601 timestamp of when the event occurred.          |
| `data`         | object | Event-specific payload. Structure varies by event type. |

***

## Trip Events

| Event Type               | Trigger                                                    |
| ------------------------ | ---------------------------------------------------------- |
| `trip.created`           | A new trip is created (manually or from a portal request). |
| `trip.updated`           | Trip details are modified (route, dates, crew, etc.).      |
| `trip.confirmed`         | Trip status changes to Confirmed.                          |
| `trip.cancelled`         | Trip is cancelled.                                         |
| `trip.completed`         | Trip status changes to Completed.                          |
| `trip.crew_assigned`     | A crew member is assigned to the trip.                     |
| `trip.crew_removed`      | A crew member is removed from the trip.                    |
| `trip.passenger_added`   | A passenger is added to the trip manifest.                 |
| `trip.passenger_removed` | A passenger is removed from the trip manifest.             |

### Example: `trip.created`

```json theme={}
{
  "id": "evt_trip_001",
  "type": "trip.created",
  "workspace_id": "ws_skyline",
  "timestamp": "2026-03-24T14:30:00Z",
  "data": {
    "trip_id": "trip_abc123",
    "trip_type": "charter",
    "status": "draft",
    "origin": "KTEB",
    "destination": "KMIA",
    "departure_date": "2026-04-01T10:00:00Z",
    "aircraft_id": "ac_n123pc",
    "created_by": "user_dispatcher01"
  }
}
```

***

## Trip Request Events

| Event Type                    | Trigger                                             |
| ----------------------------- | --------------------------------------------------- |
| `trip_request.created`        | A client submits a trip request through the portal. |
| `trip_request.accepted`       | Operations team accepts the request.                |
| `trip_request.declined`       | Operations team declines the request.               |
| `trip_request.quoted`         | A quote is sent to the client.                      |
| `trip_request.quote_accepted` | Client accepts the quote.                           |
| `trip_request.quote_declined` | Client declines the quote.                          |
| `trip_request.cancelled`      | Client cancels the request.                         |

***

## Safety Events

| Event Type                | Trigger                                       |
| ------------------------- | --------------------------------------------- |
| `safety_report.submitted` | A new safety report is submitted.             |
| `safety_report.updated`   | A safety report is updated.                   |
| `safety_report.closed`    | A safety report is closed.                    |
| `investigation.created`   | A new investigation is opened.                |
| `investigation.completed` | An investigation is marked as complete.       |
| `cpa.created`             | A corrective/preventive action is created.    |
| `cpa.completed`           | A CPA is marked as complete.                  |
| `cpa.overdue`             | A CPA has passed its due date.                |
| `hazard.identified`       | A new hazard is added to the hazard register. |
| `hazard.mitigated`        | A hazard is marked as mitigated.              |

***

## Crew Events

| Event Type                | Trigger                                              |
| ------------------------- | ---------------------------------------------------- |
| `crew.currency_expiring`  | A crew member's currency will expire within 30 days. |
| `crew.currency_expired`   | A crew member's currency has expired.                |
| `crew.duty_limit_warning` | A crew member is approaching duty time limits.       |
| `crew.training_due`       | A crew member has training coming due.               |

***

## Aircraft Events

| Event Type                       | Trigger                                                      |
| -------------------------------- | ------------------------------------------------------------ |
| `aircraft.status_changed`        | Aircraft status changes (available, maintenance, etc.).      |
| `aircraft.inspection_due`        | An inspection is coming due within the configured threshold. |
| `aircraft.discrepancy_reported`  | A new discrepancy is reported.                               |
| `aircraft.mel_deferral_expiring` | An MEL deferral is approaching its expiration.               |

***

## Invoice Events

| Event Type        | Trigger                                             |
| ----------------- | --------------------------------------------------- |
| `invoice.created` | A new invoice is created.                           |
| `invoice.sent`    | An invoice is sent to the client.                   |
| `invoice.paid`    | Payment is recorded for an invoice.                 |
| `invoice.overdue` | An invoice has passed its due date without payment. |

***

## Member Events

| Event Type            | Trigger                                      |
| --------------------- | -------------------------------------------- |
| `member.invited`      | A new member invitation is sent.             |
| `member.joined`       | A member accepts their invitation and joins. |
| `member.role_changed` | A member's role is changed.                  |
| `member.removed`      | A member is removed from the workspace.      |

***

## Portal Events

| Event Type                | Trigger                                      |
| ------------------------- | -------------------------------------------- |
| `portal.client_invited`   | A portal invitation is sent to a client.     |
| `portal.client_joined`    | A client accepts their portal invitation.    |
| `portal.client_suspended` | A client's portal access is suspended.       |
| `portal.message_sent`     | A client sends a message through the portal. |

***

## Delivery Headers

Each webhook delivery includes these HTTP headers:

| Header                          | Description                                     |
| ------------------------------- | ----------------------------------------------- |
| `Content-Type`                  | Always `application/json`.                      |
| `X-PlaneConnection-Signature`   | HMAC-SHA256 signature for payload verification. |
| `X-PlaneConnection-Event`       | The event type (e.g., `trip.created`).          |
| `X-PlaneConnection-Delivery-ID` | Unique delivery ID for tracking retries.        |
| `X-PlaneConnection-Timestamp`   | Delivery timestamp (ISO 8601).                  |

## Related

<CardGroup cols={2}>
  <Card title="Configure Webhooks" href="/en/how-to/admin/configure-webhooks">
    Set up webhook endpoints.
  </Card>

  <Card title="API Webhooks" href="/en/reference/api/webhooks">
    API-level webhook documentation.
  </Card>

  <Card title="API Authentication" href="/en/reference/api/authentication">
    How to verify webhook signatures.
  </Card>
</CardGroup>
