Added

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.changed
  • trip.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-types now returns load.changed and trip.changed.
  • POST /p/v1.0/webhooks / PUT /p/v1.0/webhooks/{id} accept the new event type values in the eventTypes array.

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 /loads and /trips.
  • Drive downstream automations (factoring, tracking, billing) the moment an operational state changes.
  • Keep audit trails consistent through the existing webhook Delivery Logs UI.