Stations

Payload

What a wake delivery carries, and why dedupe on the signed idempotency key is mandatory.

reason is why the card arrived — created, advanced, rejected, claim_released, claim_expired, unpaused or subflow_entered. stationName and stationInstructions are omitted rather than sent null when the station could not be read, so read them against each other: a named station with no instructions carries none. Answer 2xx to accept; anything else is retried.

Delivery is at-least-once. Dedupe you must — key your store on event.idempotencyKey from the verified body and make the handler safe to run twice.

{
  "id": "5f1c…",
  "type": "card.arrived_at_station",
  "occurredAt": "2026-09-12T10:00:00.000Z",
  "tenantId": "…",
  "boardId": "…",
  "phaseId": "…",
  "stationId": "…",
  "cardId": "…",
  "reason": "advanced",
  "idempotencyKey": "…:webhook:actor:…",
  "stationName": "Implement",
  "stationInstructions": "Open a PR and attach it as the pr artifact."
}