> For the complete documentation index, see [llms.txt](https://docs.partssource.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.partssource.com/webhooks-customer/event-catalog.md).

# Event Catalog

Complete reference of webhook event types and their availability

{% hint style="info" %}
This page describes the current production release. Upcoming changes are documented in the **Preview** variant of this section.
{% endhint %}

This page lists every webhook event type currently published by PartsSource. Each event links to its payload schema, documented in the [Payload Reference](/webhooks-customer/payload-reference.md).

## Event Envelope

Every webhook delivery is wrapped in a standard envelope. Your endpoint receives this structure on every POST request, regardless of event type. Event-specific detail lives in `payload`.

| Field         | JSON Key         | Type           | Presence       | Description                                                                         |
| ------------- | ---------------- | -------------- | -------------- | ----------------------------------------------------------------------------------- |
| EventType     | `event_type`     | string         | Always         | The event type identifier                                                           |
| CompanyId     | `company_id`     | long           | Always         | Company ID for multi-tenant isolation                                               |
| OrderId       | `order_id`       | long           | Always         | Unique identifier for the order                                                     |
| LineItemId    | `line_item_id`   | long           | When available | Line item identifier. Present on line-level events, omitted on order-level events   |
| LineItemType  | `line_item_type` | string         | Always         | One of `part`, `depot_flat_rate`, `depot_quoted`, `service`                         |
| OccurredAt    | `occurred_at`    | DateTimeOffset | Always         | Timestamp when the event occurred                                                   |
| Payload       | `payload`        | object         | Always         | The event-specific payload ([see objects](/webhooks-customer/payload-reference.md)) |
| CorrelationId | `correlation_id` | string         | When available | Correlation ID for tracing across services                                          |
| Source        | `source`         | string         | When available | Name of the publishing service                                                      |
| Metadata      | `metadata`       | object         | When available | Additional key/value metadata                                                       |

```json
{
  "event_type": "customer.shipment.shipped",
  "company_id": 12345,
  "order_id": 50001,
  "line_item_id": 67890,
  "line_item_type": "part",
  "occurred_at": "2024-01-18T15:30:00Z",
  "correlation_id": "corr-abc123",
  "source": "order-service",
  "payload": { }
}
```

{% hint style="info" %}
`order_id`, `line_item_id`, and `line_item_type` are envelope fields. Most payload objects do **not** repeat them — read them from the envelope.
{% endhint %}

***

## Active Events

| Event Type                                                                                     | Description                                  | Payload Object                                                                                               | Availability |
| ---------------------------------------------------------------------------------------------- | -------------------------------------------- | ------------------------------------------------------------------------------------------------------------ | ------------ |
| [`customer.order.line.created`](#customerorderlinecreated)                                     | A line item was created on an order          | [Order](/webhooks-customer/payload-reference.md#order)                                                       | Production   |
| [`customer.order.line.approval.requested`](#customerorderlineapprovalrequested)                | Approval was requested for a line item       | [OrderApproval](/webhooks-customer/payload-reference.md#orderapproval)                                       | Production   |
| [`customer.order.line.approval.approved`](#customerorderlineapprovalapproved)                  | An approver approved the line item           | [OrderLineApprovalApproved](/webhooks-customer/payload-reference.md#orderlineapprovalapproved)               | Production   |
| [`customer.order.line.approval.rejected`](#customerorderlineapprovalrejected)                  | An approver rejected the line item           | [OrderLineApprovalRejected](/webhooks-customer/payload-reference.md#orderlineapprovalrejected)               | Production   |
| [`customer.order.line.approval.completed`](#customerorderlineapprovalcompleted)                | The approval process finished                | [OrderLineApprovalCompleted](/webhooks-customer/payload-reference.md#orderlineapprovalcompleted)             | Production   |
| [`customer.order.line.backorder.created`](#customerorderlinebackordercreated)                  | A line item was placed on backorder          | [OrderLineBackordered](/webhooks-customer/payload-reference.md#orderlinebackordered)                         | Production   |
| [`customer.order.line.backorder.updated`](#customerorderlinebackorderupdated)                  | Backorder details changed                    | [BackorderUpdated](/webhooks-customer/payload-reference.md#backorderupdated)                                 | Production   |
| [`customer.order.line.cancelled`](#customerorderlinecancelled)                                 | A line item will not be fulfilled (terminal) | [OrderLineCancelled](/webhooks-customer/payload-reference.md#orderlinecancelled)                             | Production   |
| [`customer.shipment.shipped`](#customershipmentshipped)                                        | A shipment was dispatched                    | [Shipment](/webhooks-customer/payload-reference.md#shipment)                                                 | Production   |
| [`customer.shipment.tracking.assigned`](#customershipmenttrackingassigned)                     | Tracking was assigned to a shipment          | [ShipmentTrackingAssigned](/webhooks-customer/payload-reference.md#shipmenttrackingassigned)                 | Production   |
| [`customer.shipment.estimated_ship_date.created`](#customershipmentestimated_ship_datecreated) | A shipment ship date was committed           | [ShipmentEstimatedShipDateCreated](/webhooks-customer/payload-reference.md#shipmentestimatedshipdatecreated) | Production   |
| [`customer.shipment.estimated_ship_date.updated`](#customershipmentestimated_ship_dateupdated) | A shipment ship date changed                 | [ShipmentEstimatedShipDateUpdated](/webhooks-customer/payload-reference.md#shipmentestimatedshipdateupdated) | Production   |
| [`order.line.estimated_ship_date.created`](#orderlineestimated_ship_datecreated)               | A line item ship date was set                | [OrderLineEstimatedShipDate](/webhooks-customer/payload-reference.md#orderlineestimatedshipdate)             | Production   |
| [`order.line.estimated_ship_date.updated`](#orderlineestimated_ship_dateupdated)               | A line item ship date changed                | [OrderLineEstimatedShipDate](/webhooks-customer/payload-reference.md#orderlineestimatedshipdate)             | Production   |
| `customer.order.line.processed`                                                                | Line released for fulfillment                | —                                                                                                            | Next release |
| `customer.order.line.split`                                                                    | A line was split into two lines              | —                                                                                                            | Next release |
| `customer.shipment.tracking.updated`                                                           | Tracking number changed after assignment     | —                                                                                                            | Next release |
| `customer.shipment.delivered`                                                                  | Delivery confirmed                           | —                                                                                                            | Next release |
| `customer.return.requested`                                                                    | A return (RGA) was created                   | —                                                                                                            | Next release |

{% hint style="info" %}
`Next release` events can appear in your subscription options but are not emitted by the current production release — subscribing to them today results in no deliveries. Their payloads are documented in the Preview variant of this section.
{% endhint %}

***

## Event Details

### `customer.order.line.created`

Triggered when a line item is created on an order. This is the richest payload — it carries the full ordered-item detail.

**Payload:** [Order](/webhooks-customer/payload-reference.md#order) | **Key fields:** `description`, `unit_price`, `quantity`, `estimated_ship_date`

```json
{
  "event_type": "customer.order.line.created",
  "company_id": 12345,
  "order_id": 50001,
  "line_item_id": 67890,
  "line_item_type": "part",
  "occurred_at": "2024-01-15T10:30:00Z",
  "payload": {
    "customer_po_number": "PO-2024-001",
    "requested_part_number": "HYD-3400-PUMP",
    "description": "Hydraulic Pump - 3400 Series",
    "manufacturer": "Acme Parts Co",
    "manufacturer_id": 100,
    "condition": "New",
    "unit_price": 49.99,
    "quantity": 1,
    "planned_carrier": "UPS",
    "planned_ship_method": "Ground",
    "use_shipping_account": false,
    "is_critical_hard_down": false,
    "estimated_ship_date": "2024-01-20T00:00:00Z"
  }
}
```

### `customer.order.line.approval.requested`

Triggered when a line item enters an approval workflow and is awaiting a decision.

**Payload:** [OrderApproval](/webhooks-customer/payload-reference.md#orderapproval) | **Key fields:** `submitted_by`, `approval_level`, `total_amount`

```json
{
  "event_type": "customer.order.line.approval.requested",
  "company_id": 12345,
  "order_id": 50001,
  "line_item_id": 67890,
  "line_item_type": "part",
  "occurred_at": "2024-01-15T14:30:00Z",
  "payload": {
    "approval_id": 555,
    "submitted_by": "jsmith@hospital.org",
    "submitted_by_id": 4471,
    "submitted_at": "2024-01-15T14:30:00Z",
    "approval_level": 1,
    "approval_type": "Price Override",
    "total_amount": 1250.00
  }
}
```

### `customer.order.line.approval.approved`

Triggered when an approver approves the line item at a given approval level. On multi-level workflows this fires once per level.

**Payload:** [OrderLineApprovalApproved](/webhooks-customer/payload-reference.md#orderlineapprovalapproved) | **Key fields:** `approved_by`, `approval_level`, `total_amount`

```json
{
  "event_type": "customer.order.line.approval.approved",
  "company_id": 12345,
  "order_id": 50001,
  "line_item_id": 67890,
  "line_item_type": "part",
  "occurred_at": "2024-01-15T16:05:00Z",
  "payload": {
    "approved_by": "mjones@hospital.org",
    "approved_by_id": 8812,
    "approved_at": "2024-01-15T16:05:00Z",
    "approval_level": 1,
    "total_amount": 1250.00
  }
}
```

### `customer.order.line.approval.rejected`

Triggered when an approver rejects the line item.

**Payload:** [OrderLineApprovalRejected](/webhooks-customer/payload-reference.md#orderlineapprovalrejected) | **Key fields:** `rejected_by`, `rejection_reason`, `total_amount`

```json
{
  "event_type": "customer.order.line.approval.rejected",
  "company_id": 12345,
  "order_id": 50001,
  "line_item_id": 67890,
  "line_item_type": "part",
  "occurred_at": "2024-01-15T16:20:00Z",
  "payload": {
    "rejected_by": "mjones@hospital.org",
    "rejected_by_id": 8812,
    "rejected_at": "2024-01-15T16:20:00Z",
    "approval_level": 1,
    "rejection_reason": "Exceeds departmental budget for this quarter",
    "total_amount": 1250.00
  }
}
```

### `customer.order.line.approval.completed`

Triggered when the approval process finishes and the line item proceeds. This is the event to key on if you only care about the final outcome, not each level.

**Payload:** [OrderLineApprovalCompleted](/webhooks-customer/payload-reference.md#orderlineapprovalcompleted) | **Key fields:** `approved_by`, `total_amount`, `customer_po_number`

```json
{
  "event_type": "customer.order.line.approval.completed",
  "company_id": 12345,
  "order_id": 50001,
  "line_item_id": 67890,
  "line_item_type": "part",
  "occurred_at": "2024-01-15T16:30:00Z",
  "payload": {
    "approved_by": "mjones@hospital.org",
    "approved_by_id": 8812,
    "approved_at": "2024-01-15T16:30:00Z",
    "total_amount": 1250.00,
    "customer_po_number": "PO-2024-001"
  }
}
```

### `customer.order.line.backorder.created`

Triggered when a line item is placed on backorder.

**Payload:** [OrderLineBackordered](/webhooks-customer/payload-reference.md#orderlinebackordered) | **Key fields:** `backorder_reason`, `backorder_eta`

```json
{
  "event_type": "customer.order.line.backorder.created",
  "company_id": 12345,
  "order_id": 50001,
  "line_item_id": 67890,
  "line_item_type": "part",
  "occurred_at": "2024-01-16T09:00:00Z",
  "payload": {
    "backordered_at": "2024-01-16T09:00:00Z",
    "backorder_reason": "Out of stock - expected restock in 2 weeks",
    "backorder_eta": "2024-01-29T00:00:00Z"
  }
}
```

### `customer.order.line.backorder.updated`

Triggered when backorder details change — most commonly a revised ETA.

**Payload:** [BackorderUpdated](/webhooks-customer/payload-reference.md#backorderupdated) | **Key fields:** `backorder_eta`, `previous_backorder_eta`

```json
{
  "event_type": "customer.order.line.backorder.updated",
  "company_id": 12345,
  "order_id": 50001,
  "line_item_id": 67890,
  "line_item_type": "part",
  "occurred_at": "2024-01-22T11:15:00Z",
  "payload": {
    "backorder_eta": "2024-02-05T00:00:00Z",
    "previous_backorder_eta": "2024-01-29T00:00:00Z",
    "backorder_reason": "Manufacturer delay",
    "updated_at": "2024-01-22T11:15:00Z"
  }
}
```

### `customer.order.line.cancelled`

Triggered when a line item will not be fulfilled and will not ship. This is a terminal state.

**Payload:** [OrderLineCancelled](/webhooks-customer/payload-reference.md#orderlinecancelled) | **Key fields:** `cancellation_reason`, `cancellation_code`, `is_requote`

```json
{
  "event_type": "customer.order.line.cancelled",
  "company_id": 12345,
  "order_id": 50001,
  "line_item_id": 67890,
  "line_item_type": "part",
  "occurred_at": "2024-01-16T10:00:00Z",
  "payload": {
    "line_item_id": 67890,
    "cancellation_reason": "Customer Cancelled",
    "cancellation_code": "CUST_CANCEL",
    "cancelled_by": "jsmith@hospital.org",
    "cancelled_by_id": 4471,
    "cancelled_at": "2024-01-16T10:00:00Z",
    "is_requote": false
  }
}
```

{% hint style="info" %}
When `is_requote` is `true`, the line was cancelled as part of a requote rather than abandoned — expect a replacement line item to follow.
{% endhint %}

### `customer.shipment.shipped`

Triggered when a shipment is dispatched.

**Payload:** [Shipment](/webhooks-customer/payload-reference.md#shipment) | **Key fields:** `tracking_number`, `carrier`, `estimated_delivery_date`

```json
{
  "event_type": "customer.shipment.shipped",
  "company_id": 12345,
  "order_id": 50001,
  "line_item_id": 67890,
  "line_item_type": "part",
  "occurred_at": "2024-01-18T15:30:00Z",
  "payload": {
    "shipment_type": "order_fulfillment",
    "direction": "to_customer",
    "occurred_at": "2024-01-18T15:30:00Z",
    "tracking_number": "1Z999AA10123456784",
    "carrier": "UPS",
    "ship_method": "Ground",
    "shipped_at": "2024-01-18T15:30:00Z",
    "estimated_delivery_date": "2024-01-20"
  }
}
```

### `customer.shipment.tracking.assigned`

Triggered when a tracking number is assigned to a shipment. This can arrive before the shipment is dispatched.

**Payload:** [ShipmentTrackingAssigned](/webhooks-customer/payload-reference.md#shipmenttrackingassigned) | **Key fields:** `tracking_number`, `carrier`, `assigned_at`

```json
{
  "event_type": "customer.shipment.tracking.assigned",
  "company_id": 12345,
  "order_id": 50001,
  "line_item_id": 67890,
  "line_item_type": "part",
  "occurred_at": "2024-01-18T14:00:00Z",
  "payload": {
    "shipment_type": "order_fulfillment",
    "direction": "to_customer",
    "tracking_number": "1Z999AA10123456784",
    "carrier": "UPS",
    "assigned_at": "2024-01-18T14:00:00Z"
  }
}
```

### `customer.shipment.estimated_ship_date.created`

Triggered when a ship date is first committed for a shipment.

**Payload:** [ShipmentEstimatedShipDateCreated](/webhooks-customer/payload-reference.md#shipmentestimatedshipdatecreated) | **Key fields:** `estimated_ship_date`, `committed_at`

```json
{
  "event_type": "customer.shipment.estimated_ship_date.created",
  "company_id": 12345,
  "order_id": 50001,
  "line_item_id": 67890,
  "line_item_type": "part",
  "occurred_at": "2024-01-15T14:00:00Z",
  "payload": {
    "shipment_type": "order_fulfillment",
    "direction": "to_customer",
    "estimated_ship_date": "2024-01-18T00:00:00Z",
    "reason_description": "Standard processing time",
    "committed_at": "2024-01-15T14:00:00Z"
  }
}
```

### `customer.shipment.estimated_ship_date.updated`

Triggered when a previously committed shipment ship date changes.

**Payload:** [ShipmentEstimatedShipDateUpdated](/webhooks-customer/payload-reference.md#shipmentestimatedshipdateupdated) | **Key fields:** `estimated_ship_date`, `previous_estimated_ship_date`

```json
{
  "event_type": "customer.shipment.estimated_ship_date.updated",
  "company_id": 12345,
  "order_id": 50001,
  "line_item_id": 67890,
  "line_item_type": "part",
  "occurred_at": "2024-01-17T09:00:00Z",
  "payload": {
    "shipment_type": "order_fulfillment",
    "direction": "to_customer",
    "estimated_ship_date": "2024-01-20T00:00:00Z",
    "previous_estimated_ship_date": "2024-01-18T00:00:00Z",
    "reason_description": "Vendor reported shipping delay",
    "updated_at": "2024-01-17T09:00:00Z"
  }
}
```

### `order.line.estimated_ship_date.created`

Triggered when an estimated ship date is first set at the line item level.

**Payload:** [OrderLineEstimatedShipDate](/webhooks-customer/payload-reference.md#orderlineestimatedshipdate) | **Key fields:** `estimated_ship_date`, `reason_description`

```json
{
  "event_type": "order.line.estimated_ship_date.created",
  "company_id": 12345,
  "order_id": 50001,
  "line_item_id": 67890,
  "line_item_type": "part",
  "occurred_at": "2024-01-15T14:00:00Z",
  "payload": {
    "occurred_at": "2024-01-15T14:00:00Z",
    "estimated_ship_date": "2024-01-20T00:00:00Z",
    "reason_id": "DELAY001",
    "reason_description": "Standard processing time"
  }
}
```

{% hint style="warning" %}
Deprecated — see the deprecation policy in the [Overview](/webhooks-customer/customer-webhooks.md). Migrate to `customer.shipment.estimated_ship_date.*`.
{% endhint %}

### `order.line.estimated_ship_date.updated`

Triggered when a line item estimated ship date changes.

**Payload:** [OrderLineEstimatedShipDate](/webhooks-customer/payload-reference.md#orderlineestimatedshipdate) | **Key fields:** `estimated_ship_date`, `previous_estimated_ship_date`

```json
{
  "event_type": "order.line.estimated_ship_date.updated",
  "company_id": 12345,
  "order_id": 50001,
  "line_item_id": 67890,
  "line_item_type": "part",
  "occurred_at": "2024-01-17T09:00:00Z",
  "payload": {
    "occurred_at": "2024-01-17T09:00:00Z",
    "estimated_ship_date": "2024-01-20T00:00:00Z",
    "previous_estimated_ship_date": "2024-01-18T00:00:00Z",
    "reason_id": "DELAY001",
    "reason_description": "Supplier delay"
  }
}
```

{% hint style="warning" %}
Deprecated — see the deprecation policy in the [Overview](/webhooks-customer/customer-webhooks.md). Migrate to `customer.shipment.estimated_ship_date.*`.
{% endhint %}

{% hint style="warning" %}
`order.line.estimated_ship_date.*` and `customer.shipment.estimated_ship_date.*` both report ship dates but from different perspectives — line item versus shipment. If you subscribe to both, expect two events for a single date change.
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.partssource.com/webhooks-customer/event-catalog.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
