Fires when a visit's type changes (e.g. a provider elevating an asynchronous visit to synchronous). targetEntity is the PrescriptionFulfillment associated with the visit, not the order directly. The eventType is visit_type_updated.
Field guarantees
Field
Guarantee
eventData.visitId, eventData.performedBy
✅ Always present (v1)
visitId, performedBy in v2
⛔ Not delivered — not on the allowlist / blocked as PHI-adjacent
v2 order reference (order_id, commerce_status)
✅ Present when the fulfillment's order is populated
🚧
Visit detail is v1-only. v2 payloads carry the linked order reference but not visitId or performedBy. Keep this webhook on v1 for those.
v1 payload (legacy)
{
"_id": "event::3e4f5a6b-xxxx-xxxx-xxxx-7c8d9e0f1a2b",
"ownerEntity": "pat::117eb3b9-xxxx-xxxx-xxxx-9424274b5425",
"ownerEntityModel": "Patient",
"targetEntity": "prescrfulf::4f5a6b7c-xxxx-xxxx-xxxx-8d9e0f1a2b3c",
"targetEntityModel": "PrescriptionFulfillment",
"eventTitle": "The visit type has been changed from asynchronous to synchronous",
"eventDescription": "",
"eventType": "visit_type_updated",
"eventData": {
"visitId": "vst::0026ae86-xxxx-xxxx-xxxx-701ce060075a",
"performedBy": {
"id": "usr::154300b9-xxxx-xxxx-xxxx-c09f9be9f8d7",
"role": "provider",
"name": "<ADMIN_NAME>"
}
},
"deleted": false,
"createdAt": { "$date": "2026-01-01T12:00:00.000Z" },
"updatedAt": { "$date": "2026-01-01T12:00:00.000Z" },
"__v": 0
}
eventData field
Type
Always?
Notes
visitId
string
✅
The visit whose type changed
performedBy
object {id, role, name}
✅
Who changed it
v2 payload
Sanitized envelope. visitId and performedBy are dropped; order_id/commerce_status resolve from the fulfillment's linked order.