Webhook Events for General Load & Trip Updates
What's New?
We've added two new webhook event types to the Public API: load.changed and trip.changed. Whenever an operational field (such as rates, appointments, stops, or carrier assignments) is updated on a load or trip, Alvys now pushes a real-time webhook to every active subscription that selected those events.
What Changed?
Previously, detecting load- and trip-level updates required polling GET /loads and GET /trips on a schedule. Now, the following event types are available alongside the existing events and can be selected when creating or editing a webhook subscription:
load.changedtrip.changed
The full list is also returned by: GET /p/v1.0/webhooks/event-types
Event Envelope
All webhook deliveries share the standard Alvys envelope. The new event types reuse it with a specific ID suffix for idempotency:
{
"id": "93d579d3-6b50-4f97-8764-1ad07c3efd97-d900dc51-...-0",
"type": "load.changed",
"timestamp": "2026-05-22T09:19:52.652Z",
"version": "v1",
"data": { /* event-specific payload - see below */ }
// Other envelope fields are omitted from this example for brevity.
}
The envelope id is unique per event and should be used as the idempotency key on the consumer side. Note: General changes end in a -0 suffix, while status changes end in -1.
load.changed
Triggered when a load document is created or updated. The payload carries a full Public-API load snapshot - the same shape returned by GET /p/v1.0/loads/{loadNumber}.
{
"load": {
"id": "93d579d3-6b50-4f97-8764-1ad07c3efd97",
"loadNumber": "3039979",
"orderNumber": "ABC-12-007",
"status": "Open",
"loadType": "Revenue",
"customerRate": {
"amount": 1749.06,
"currency": 840
}
// Full Public-API load object - same fields as GET /p/v1.0/loads/{loadNumber}.
// Other fields (stops, charges, references, etc.) omitted here for brevity.
}
}
trip.changed
Triggered when a trip document is created or updated. The payload carries a full Public-API trip snapshot - the same shape returned by GET /p/v1.0/trips/{tripId}.
{
"trip": {
"id": "dd5ba174abe845568f5e5c2a850db8ca",
"tripNumber": "3039979",
"status": "Open",
"loadNumber": "3039979",
"orderNumber": "ABC-12-007",
"tripValue": {
"amount": 1599.06,
"currency": 840
}
// Full Public-API trip object - same fields as GET /p/v1.0/trips/{tripId}.
// Other fields (driver, truck, stops, accessorials, etc.) omitted here for brevity.
}
}
Endpoints Affected
GET /p/v1.0/webhooks/event-typesnow returnsload.changedandtrip.changed.POST /p/v1.0/webhooks/PUT /p/v1.0/webhooks/{id}accept the new event type values in theeventTypesarray.
No request/response shapes were changed for existing endpoints. This update is fully backward compatible.
Why?
These events let API partners and integrations:
- React to load and trip operational changes in real time, without polling.
- Reduce overall API call volume on
/loadsand/trips. - Drive downstream automations (factoring, tracking, billing) the moment an operational state changes.
- Keep audit trails consistent through the existing webhook Delivery Logs UI.