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

# Webhook Event Catalog

> Browse every Terminal49 webhook event by category — tracking request status changes, transport milestones, container updates, ETA changes, and more.

Terminal49 sends webhook notifications for over 30 events across the container lifecycle. Each event represents a specific change to a tracking request, shipment, or container.

Subscribe to individual events when [creating a webhook](/api-docs/in-depth-guides/webhooks), or subscribe to all events and filter in your handler.

Use [List Webhook Events](/api-docs/api-reference/webhooks/list-webhook-events) to fetch the event categories available to your account. Some events depend on account features.

## Tracking request events

These events fire when a tracking request changes status.

| Event                                | Description                                                                                      |
| ------------------------------------ | ------------------------------------------------------------------------------------------------ |
| `tracking_request.succeeded`         | Shipment created and linked to the tracking request. Your tracking is active.                    |
| `tracking_request.failed`            | The tracking request failed. The carrier could not find the shipment.                            |
| `tracking_request.awaiting_manifest` | The carrier has not yet manifested this shipment. Terminal49 will retry automatically.           |
| `tracking_request.tracking_stopped`  | Terminal49 is no longer updating this tracking request (shipment delivered or manually stopped). |

## Transport milestone events

These events map to physical milestones in a container's journey. They fire in roughly chronological order as a container moves from origin to destination.

### Origin

| Event                                 | Description                                         |
| ------------------------------------- | --------------------------------------------------- |
| `container.transport.empty_out`       | Empty container picked up at port of lading.        |
| `container.transport.full_in`         | Full container returned to port of lading.          |
| `container.transport.vessel_loaded`   | Container loaded onto the vessel at port of lading. |
| `container.transport.vessel_departed` | Vessel departed the port of lading.                 |

### Transshipment

| Event                                          | Description                                                   |
| ---------------------------------------------- | ------------------------------------------------------------- |
| `container.transport.transshipment_arrived`    | Container arrived at a transshipment port.                    |
| `container.transport.transshipment_discharged` | Container discharged at the transshipment port.               |
| `container.transport.transshipment_loaded`     | Container loaded onto a new vessel at the transshipment port. |
| `container.transport.transshipment_departed`   | Vessel departed the transshipment port.                       |

### Feeder vessel

| Event                                   | Description                                           |
| --------------------------------------- | ----------------------------------------------------- |
| `container.transport.feeder_arrived`    | Container arrived on a feeder vessel or barge.        |
| `container.transport.feeder_discharged` | Container discharged from the feeder vessel or barge. |
| `container.transport.feeder_loaded`     | Container loaded onto a feeder vessel or barge.       |
| `container.transport.feeder_departed`   | Feeder vessel or barge departed.                      |

### Destination

| Event                                   | Description                                                     |
| --------------------------------------- | --------------------------------------------------------------- |
| `container.transport.vessel_arrived`    | Vessel arrived at the port of discharge.                        |
| `container.transport.vessel_berthed`    | Vessel berthed at the port of discharge.                        |
| `container.transport.vessel_discharged` | Container discharged from the vessel at the port of discharge.  |
| `container.transport.available`         | Container is available for pickup at the destination.           |
| `container.transport.not_available`     | Container is no longer available for pickup at the destination. |
| `container.transport.full_out`          | Container picked up (gated out) at the port of discharge.       |
| `container.transport.delivered`         | Container was manually marked as delivered.                     |
| `container.transport.empty_in`          | Empty container returned at the destination.                    |

### Rail (inland moves)

| Event                                               | Description                                        |
| --------------------------------------------------- | -------------------------------------------------- |
| `container.transport.rail_loaded`                   | Container loaded onto a rail car.                  |
| `container.transport.rail_departed`                 | Rail car departed.                                 |
| `container.transport.rail_arrived`                  | Rail car arrived.                                  |
| `container.transport.rail_unloaded`                 | Container unloaded from the rail car.              |
| `container.transport.arrived_at_inland_destination` | Container arrived at the final inland destination. |

## Estimated events

These events fire when an estimated departure or arrival time changes.

| Event                                                         | Description                                                                |
| ------------------------------------------------------------- | -------------------------------------------------------------------------- |
| `container.transport.estimated.vessel_departed`               | ETA changed for vessel departure at the port of lading.                    |
| `shipment.estimated.arrival`                                  | ETA changed for the port of discharge (shipment level).                    |
| `container.transport.estimated.vessel_arrived`                | ETA changed for vessel arrival at the port of discharge (container level). |
| `container.transport.estimated.arrived_at_inland_destination` | ETA changed for the inland destination.                                    |

## Container update events

These events fire when container attributes change.

| Event                                   | Description                                                                                                                                                                                   |
| --------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `container.created`                     | A new container was added to a shipment. Common for bookings where containers are assigned after sailing.                                                                                     |
| `container.updated`                     | Container attributes changed at the terminal — fees, holds, LFD, pickup appointment, availability, or POD terminal. The payload includes a `changeset` of the updated fields.                 |
| `container.pod_terminal_changed`        | The port of discharge terminal assignment changed for the container.                                                                                                                          |
| `container.pickup_lfd.changed`          | The coalesced `pickup_lfd` attribute changed. This field combines the `import_deadlines` values, preferring the shipping line LFD when available.                                             |
| `container.pickup_lfd_line.changed`     | The shipping line's Last Free Day (`import_deadlines.pickup_lfd_line`) changed.                                                                                                               |
| `container.pickup_lfd_terminal.changed` | The terminal-reported Last Free Day (`import_deadlines.pickup_lfd_terminal`) at the destination terminal changed.                                                                             |
| `container.pickup_lfd_rail.changed`     | The rail-carrier-reported Last Free Day (`import_deadlines.pickup_lfd_rail`) at the inland rail destination changed. Rail Plan only — see [Entitlements](/api-docs/useful-info/entitlements). |
| `container.pickup_appointment.changed`  | The pickup appointment changed.                                                                                                                                                               |

## Document processing events

These events fire when document extraction completes for accounts using document processing.

| Event                        | Description                                                    |
| ---------------------------- | -------------------------------------------------------------- |
| `document.extracted`         | Document classification and extraction completed successfully. |
| `document.extraction_failed` | Document extraction did not complete successfully.             |

See [Document Processing Workflows](/api-docs/in-depth-guides/document-processing-workflows) for payload structure and related document resources.

## Payload structure

Every webhook notification follows the same structure: a `data` object containing the event metadata, and an `included` array with the related shipment, container, and event objects.

See [Webhook Payloads](/api-docs/webhooks/payloads) for the common envelope and included-resource patterns. See [Payload Examples](/api-docs/useful-info/webhook-events-examples) for complete JSON samples.

## Related

* [Setting up webhooks](/api-docs/in-depth-guides/webhooks) — create and configure webhook endpoints
* [Webhook Payloads](/api-docs/webhooks/payloads) — notification envelope and included resources
* [Best practices](/api-docs/webhooks/best-practices) — retry handling, idempotency, and reliability
* [Webhook API Reference](/api-docs/api-reference/webhooks/create-a-webhook) — programmatic webhook management
