The lab_order.updated
* webhook event is triggered when:
partial_results
, results_ready
)results_amended
)*Available in the US only
It does not fire on lab purchases, appointment scheduling, or other state transitions like purchased
, processing
, schedule_appointment
, or interpretation_shared
.
Status | Triggers lab_order.updated? | Notes |
---|---|---|
not_purchased | ❌ | Internal state only; returned in API |
purchased | ❌ | Use order.placed webhook |
schedule_appointment | ❌ | Only relevant for labs that require phlebotomy |
upcoming_appointment | ❌ | Follows patient scheduling |
processing | ❌ | Sample received but no results yet |
partial_results | ✅ | Some results available |
results_ready | ✅ | All results available |
results_amended | ✅ | One or more results updated |
interpretation_shared | ❌ (unless amended) | May be reached via auto-share settings |
This webhook does not trigger on every state change. If your integration depends on showing lab status in real-time, you must poll the lab_order endpoint for state changes outside of result readiness.
Scopes needed: | patients:order_history |
Event payload: | a subset of the lab order object |
"event_payload": {
"event": {
"id": "x5xxxxx8-92x7-4xxx-9x0x-345x404x94x1",
"type": "lab_order.updated",
"created_at": "2025-01-01T05:00:00.000Z",
"clinic_id": "xx7x357x-9x36-xxxx-x553-7x3xx398xxx",
"data": {
"lab_order": {
"id": "x0x50x8x-711x-43xx-85xx-5xx80365xxxx",
"practitioner_id": "bad7f9c6-dfd5-4227-9611-aac387331801",
"patient_id": "005aabb2-d97c-4dec-96a6-1e5f33508254",
"first_name": "John",
"last_name": "Doe",
"email": "john.doe@mail.com",
"status": "results_received"
}
}
}
}