Event Overview
The Train Departure webhook fires when a train departs from a station, customer location, or serving location in your network. It delivers equipment details, the departure station, customer and serving location (when applicable), loaded/empty status, the train number, and the associated work order (if any). This webhook supports the “early departure” scenario where a train leaves directly from a customer location rather than the main yard. In that case,customer_location and serving_location are populated so your integration can distinguish between a normal yard departure and a customer-site departure.
This webhook is triggered through ARMS workflow automation. Configure it in your workflow rules to notify external
systems when trains depart from specific locations.
Payload Schema
Field Reference
Top-level Fields
| Field | Type | Required | Description |
|---|---|---|---|
event_type | string | Yes | Always "TrainDeparture" for this event. |
event_timestamp | string (ISO 8601) | No | When the train departed. null if unavailable. |
work_order_id | string | No | ID of the associated work order. null if the event has no work order. |
linked_resources | object | Yes | Equipment, station, and locations involved in the event. |
attributes | object | Yes | Event-specific attributes. |
actor | object or null | Yes | Who caused the triggering event. null for system-initiated events. See Shared Payload Fields -> actor. |
linked_resources.equipment
An array of equipment items on the departing train. Each item includes per-car loaded/empty status. Always an array, even for a single car.| Field | Type | Description |
|---|---|---|
resource_id | integer | Internal equipment identifier. |
car_number | string or null | Railroad car number (e.g. "GCGO 995823"). |
is_loaded | boolean or null | true if this car was loaded, false if empty. null if unknown. |
linked_resources.event_station
The station where the train departed from.null if no station could be resolved.
| Field | Type | Description |
|---|---|---|
resource_id | integer | Internal station identifier. |
name | string | Human-readable station name. |
grouping_type | string | Type of location (e.g. "station", "track"). |
linked_resources.customer_location
The customer location associated with the departure, if any. The entire object isnull for departures not associated with a customer location (normal yard departures).
| Field | Type | Description |
|---|---|---|
resource_type | string | Always "CustomerLocation" when present. |
resource_id | integer | Internal customer location identifier. |
name | string | Human-readable customer location name. |
customer_identification_numbers | array of strings | Carrier-side identifiers for this customer (may be an empty array). |
general_ledger_number | string or null | General ledger number associated with this customer. null if not configured. |
linked_resources.serving_location
The serving location associated with the departure, if any. The entire object isnull when the departure is not tied to a serving location.
| Field | Type | Description |
|---|---|---|
resource_id | integer | Internal serving location identifier. |
name | string | Human-readable serving location name. |
grouping_type | string | Type of location (e.g. "customer_location"). |
attributes
| Field | Type | Description |
|---|---|---|
is_loaded | boolean or null | true if cars were loaded, false if empty. null when status is mixed or unknown. |
train_number | string or null | Train identifier (e.g. "T-8800"). null if no train ID is set. |
Example HTTP Request
This is the full HTTP request your endpoint receives:The JSON body is canonically serialized (sorted keys, no extra whitespace) so the signature can be verified
deterministically. See the Webhook Overview for verification
instructions.
Differences from Train Arrival
| Aspect | Train Arrival | Train Departure |
|---|---|---|
event_type | "TrainArrival" | "TrainDeparture" |
customer_location | Not included in payload | Included (with name, identifiers, GL number) |
serving_location | Not included in payload | Included (with name, grouping_type) |
linked_resources.track | Included (arrival track) | Not included |
is_final_location | Included in attributes (arrival-only) | Not included |
Per-car is_loaded | Not included per equipment item | Included per equipment item |
| Trigger | Train arrives at a station | Train departs from a station or customer location |
The Train Arrival webhook does not currently include
customer_location or serving_location, even though the underlying event carries them. This asymmetry is intentional — if your integration needs location context on both arrival and departure, use the Train Departure webhook for location-aware routing.Setting Up This Webhook
Add Webhook Effect
Add the Train Departure Webhook effect to the workflow. Provide your endpoint URL.
Implement Your Endpoint
Build an HTTPS endpoint that receives the POST, verifies the signature, and processes the event.
Related
Webhook Overview
Signing, verification, public key, and shared HTTP headers.
Train Arrival
Webhook for train arrival events at stations.