Prescription Approved By Practitioner

Fires when a provider approves a prescription. targetEntity is the PrescriptionFulfillment. The eventType is prescription_approved_by_practitioner.

Field guarantees

FieldGuarantee
eventData.performedBy, eventData.prescription✅ Always present (v1)
eventData.order⚠️ Conditional
performedBy in v2⛔ Not delivered — blocked as PHI-adjacent
v2 order reference (order_id, commerce_status)✅ Present when the fulfillment's order is populated
🚧

performedBy is v1-only. v2 payloads carry the linked order reference but not who approved the prescription. Keep this webhook on v1 for the approver.

v1 payload (legacy)

{
  "_id": "event::xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "ownerEntityModel": "Patient",
  "targetEntityModel": "PrescriptionFulfillment",
  "deleted": false,
  "ownerEntity": "pat::xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "targetEntity": "prfm::xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "eventTitle": "Provider (<PROVIDER_NAME>) approved the prescription.",
  "eventType": "prescription_approved_by_practitioner",
  "eventData": {
    "performedBy": { "id": "usr::xxxx", "role": "provider", "name": "<PROVIDER_NAME>" },
    "prescription": "prescr::xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "order": "order::xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
  },
  "createdAt": { "$date": "2023-04-26T17:43:17.809Z" },
  "updatedAt": { "$date": "2023-04-26T17:47:45.225Z" },
  "__v": 0
}
eventData fieldTypeAlways?Notes
performedByobject {id, role, name}The approving provider
prescriptionstringPrescription id
orderstring⚠️Present when resolvable

v2 payload

Sanitized envelope. performedBy is stripped; prescription/order field names aren't on the allowlist. order_id/commerce_status resolve from the fulfillment's order.

{
  "event_type": "prescription_approved_by_practitioner",
  "event_id": "event::xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "api_version": "2026-08-09",
  "timestamp": "2026-05-30T14:00:00.000Z",
  "affiliate_id": "aff::xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "patient_id": "pat::xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "patient_external_id": "ext-patient-123",
  "patient_marketing_consent": false,
  "is_returning_patient": true,
  "order_id": "order::xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "commerce_status": "requires_order_processing"
}
FieldDelivered in v2Notes
Envelope + patient identity
order_id, commerce_statusFrom the fulfillment's order
performedBy, prescriptionStripped / not on allowlist