Skip to content

Webhook Actions

The action field indicates what event triggered the webhook. This helps you understand why you received the notification and what changed.

Many integrations can rely solely on request_status to drive their logic (e.g., create a trip when AVAILABLE, update when ASSIGNED, remove when UNAVAILABLE). The action field provides additional context for integrations that need to handle specific events differently, but it is not required for most workflows.

ActionDescription
BROADCAST_RECEIVEDA new broadcast was sent inviting you to accept the request
BROADCAST_ACCEPTEDYou successfully accepted the broadcast and are now assigned
BROADCAST_DECLINEDYou declined the broadcast - request no longer available to you
BROADCAST_CANCELEDThe broadcast was canceled by the requester before you responded
BROADCAST_EXPIREDThe broadcast expired without a response from you
ActionDescription
PROPOSAL_SUBMITTEDYou submitted a proposal - awaiting requester review
PROPOSAL_ACCEPTEDYour proposal was accepted - you are now assigned
PROPOSAL_DECLINEDYour proposal was declined by the requester
ActionDescription
CHANGE_REQUEST_ACCEPTEDYour change request was approved - agreed time updated to your proposed time
CHANGE_REQUEST_DECLINEDYour change request was declined - original agreed time remains
ActionDescription
REQUEST_DATA_UPDATEDRequest data was modified (times, locations, patient info, etc.)

Here’s how actions typically map to request status:

ActionTypical request_status
BROADCAST_RECEIVEDAVAILABLE
BROADCAST_ACCEPTEDASSIGNED
BROADCAST_DECLINEDUNAVAILABLE
BROADCAST_CANCELEDUNAVAILABLE
BROADCAST_EXPIREDUNAVAILABLE
PROPOSAL_SUBMITTEDAVAILABLE
PROPOSAL_ACCEPTEDASSIGNED
PROPOSAL_DECLINEDUNAVAILABLE
CHANGE_REQUEST_ACCEPTEDASSIGNED
CHANGE_REQUEST_DECLINEDASSIGNED
REQUEST_DATA_UPDATEDVaries (usually ASSIGNED or AVAILABLE)
{
"action": "BROADCAST_RECEIVED",
"request_status": "AVAILABLE",
"service_request_id": "KP-ABCD1234"
}

A new request was broadcast to you. Review and decide whether to accept or decline.

{
"action": "BROADCAST_ACCEPTED",
"request_status": "ASSIGNED",
"service_request_id": "KP-ABCD1234"
}

You accepted the broadcast (or the requester assigned it directly). Create the trip in your system.

{
"action": "REQUEST_DATA_UPDATED",
"request_status": "ASSIGNED",
"service_request_id": "KP-ABCD1234"
}

Something changed on a trip you’re assigned to. Compare the data object with your records and update accordingly. Common changes include:

  • Pickup/appointment times
  • Addresses
  • Patient information
  • Special requirements
{
"action": "BROADCAST_CANCELED",
"request_status": "UNAVAILABLE",
"service_request_id": "KP-ABCD1234"
}

The request was canceled or withdrawn. Remove it from your pending queue.

The REQUEST_DATA_UPDATED action is the most common webhook you’ll receive. It fires whenever any field on the request changes.

Any field can change after a request is assigned, including pickup times, locations, and patient information. The only fields guaranteed to remain constant are the identifiers (service_request_id, organization_id, etc.).

Best practice: Replace your stored data entirely with the new payload rather than comparing field-by-field. The data object always contains the complete current state of the request.