Subscribe to either or both when creating or updating a webhook (see Webhook Lifecycle & Configuration). The full list of valid event-type strings is returned by
GET /api/p/v1/webhooks/event-types.
Status vs. changed
trip.status.changed fires only on a status transition and never includes a data.diff.
trip.changed fires on every meaningful write — including status changes — and can include an optional data.diff describing what changed. See Change Diffs (data.diff).
A single underlying write can emit both events — one
trip.status.changed and one trip.changed. They are distinguished by the suffix on the event id: -1 for the status event and -0 for the changed event. Use X-Alvys-Event-Id for idempotency so the two are processed independently and duplicates are ignored.Payload
Trip events use the standard Alvys webhook envelope. Thedata.trip object carries the full current snapshot of the trip — the same shape the Trips API returns from its GET endpoint.
trip.status.changed
trip.changed
Trip stop-scoped changes (
StopAddressChanged, AppointmentChanged, StopReordered, …) carry a target of { "type": "Stop", "id": "<StopId>" }, where id is the stable stop identity from the snapshot — never a positional index.Notes
- Because
data.tripalways carries the full snapshot, you can apply the current state directly without a follow-upGET. To react to only what changed, usedata.diff. - Delivery is at-least-once — deduplicate on
X-Alvys-Event-Id. See Event Delivery & Reliability. data.diffis omitted on the first event for a trip (create) and is never present ontrip.status.changed.