Complete reference of all webhook events sent by Parchment, including payload structures and examples.
Event Structure
All webhooks follow this standard structure:
{
"event_type" : "prescription.created" ,
"event_id" : "evt_e0a97272f60e4952f4b69f2bfb7acead" ,
"timestamp" : "2025-12-19T06:15:18.786Z" ,
"partner_id" : "tacklit" ,
"organization_id" : "7fa84d2b-26d7-4c71-9b5b-e591eff97e7d" ,
"data" : {
"patient_id" : "f03b972b-53ea-452d-ae48-024817f6c3b0" ,
"partner_patient_id" : "1523402100149593750" ,
"user_id" : "8e1c9bab-6614-4723-8981-87c8fa026dae"
// Event-specific fields
},
"metadata" : {
"reserved_1" : null ,
"reserved_2" : null ,
"reserved_3" : null
}
}
Root Event Fields
Field Type Description event_typestring Event type (e.g., prescription.created) event_idstring Unique event identifier (format: evt_xxx) timestampstring ISO 8601 timestamp when event was created partner_idstring Your partner identifier organization_idstring Parchment organization ID (UUID) dataobject Event-specific data metadataobject Reserved custom-data fields. Always present; see Reserved Metadata Fields
Data Object (Common Fields)
Field Type Description patient_idstring Parchment patient ID (UUID) partner_patient_idstring Your internal patient ID user_idstring ID of the user (prescriber) who triggered the event (UUID)
Every webhook includes a top-level metadata object carrying three reserved fields:
Field Type Description reserved_1string | null Reserved for future use reserved_2string | null Reserved for future use reserved_3string | null Reserved for future use
These fields are reserved for future use . They are always present on every event and are
currently always null . Parchment may begin populating them later without changing the payload
structure — so build your integration to tolerate them being present, but do not rely on any
specific values or semantics yet .
Prescription Events
prescription.created
Sent when a new prescription is created in Parchment.
Example Payload
TypeScript Type
{
"event_type" : "prescription.created" ,
"event_id" : "evt_e0a97272f60e4952f4b69f2bfb7acead" ,
"timestamp" : "2025-12-19T06:15:18.786Z" ,
"partner_id" : "tacklit" ,
"organization_id" : "7fa84d2b-26d7-4c71-9b5b-e591eff97e7d" ,
"data" : {
"patient_id" : "f03b972b-53ea-452d-ae48-024817f6c3b0" ,
"partner_patient_id" : "1523402100149593750" ,
"user_id" : "8e1c9bab-6614-4723-8981-87c8fa026dae" ,
"scid" : "2TM1XVXBJRWXH8NM68"
},
"metadata" : {
"reserved_1" : null ,
"reserved_2" : null ,
"reserved_3" : null
}
}
Root Fields:
Field Type Description event_typestring Always prescription.created for this event event_idstring Unique event identifier (format: evt_xxx) timestampstring ISO 8601 timestamp when the event was created partner_idstring Your partner identifier organization_idstring UUID of the organization where the prescription was created
Data Fields:
Field Type Description patient_idstring Parchment’s internal patient ID (UUID) partner_patient_idstring Your system’s patient ID (as provided during patient creation) user_idstring UUID of the user (prescriber) who created the prescription scidstring Script Control Identifier - the unique identifier for the prescription in the eRx system
When to expect:
After a prescription is successfully created via the Parchment portal or iFrame
Sent immediately after prescription creation is complete
Common use cases:
Update your system with the new prescription SCID
Use the SCID to fetch full prescription details via the Get Patient Prescriptions API endpoint
Sync prescription data to your platform
Trigger follow-up workflows (e.g., patient notifications)
The webhook provides the SCID (Script Control Identifier) which you can use to retrieve the complete prescription details by calling the Get Patient Prescriptions API endpoint with the partner_patient_id.
prescription.ceased
Sent when an active prescription is ceased (stopped) in Parchment.
Example Payload
TypeScript Type
{
"event_type" : "prescription.ceased" ,
"event_id" : "evt_a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6" ,
"timestamp" : "2025-12-19T06:15:18.786Z" ,
"partner_id" : "tacklit" ,
"organization_id" : "7fa84d2b-26d7-4c71-9b5b-e591eff97e7d" ,
"data" : {
"patient_id" : "f03b972b-53ea-452d-ae48-024817f6c3b0" ,
"partner_patient_id" : "1523402100149593750" ,
"user_id" : "8e1c9bab-6614-4723-8981-87c8fa026dae" ,
"scid" : "2TM1XVXBJRWXH8NM68"
},
"metadata" : {
"reserved_1" : null ,
"reserved_2" : null ,
"reserved_3" : null
}
}
Root Fields:
Field Type Description event_typestring Always prescription.ceased for this event event_idstring Unique event identifier (format: evt_xxx) timestampstring ISO 8601 timestamp when the event was created partner_idstring Your partner identifier organization_idstring UUID of the organization where the prescription was ceased
Data Fields:
Field Type Description patient_idstring Parchment’s internal patient ID (UUID) partner_patient_idstring Your system’s patient ID (as provided during patient creation) user_idstring UUID of the user (prescriber) who ceased the prescription scidstring Script Control Identifier - the unique identifier for the prescription in the eRx system
When to expect:
After an active prescription is ceased via the Parchment portal or iFrame
Sent immediately after the cease action is complete
Common use cases:
Mark the prescription as no longer active in your system
Stop any follow-up workflows tied to the ceased prescription
Use the SCID to fetch the latest prescription state via the Get Patient Prescriptions API endpoint
prescription.cancelled
Sent when a prescription is cancelled in Parchment.
Example Payload
TypeScript Type
{
"event_type" : "prescription.cancelled" ,
"event_id" : "evt_b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7" ,
"timestamp" : "2025-12-19T06:15:18.786Z" ,
"partner_id" : "tacklit" ,
"organization_id" : "7fa84d2b-26d7-4c71-9b5b-e591eff97e7d" ,
"data" : {
"patient_id" : "f03b972b-53ea-452d-ae48-024817f6c3b0" ,
"partner_patient_id" : "1523402100149593750" ,
"user_id" : "8e1c9bab-6614-4723-8981-87c8fa026dae" ,
"scid" : "2TM1XVXBJRWXH8NM68"
},
"metadata" : {
"reserved_1" : null ,
"reserved_2" : null ,
"reserved_3" : null
}
}
Root Fields:
Field Type Description event_typestring Always prescription.cancelled for this event event_idstring Unique event identifier (format: evt_xxx) timestampstring ISO 8601 timestamp when the event was created partner_idstring Your partner identifier organization_idstring UUID of the organization where the prescription was cancelled
Data Fields:
Field Type Description patient_idstring Parchment’s internal patient ID (UUID) partner_patient_idstring Your system’s patient ID (as provided during patient creation) user_idstring UUID of the user (prescriber) who cancelled the prescription scidstring Script Control Identifier - the unique identifier for the prescription in the eRx system
When to expect:
After a prescription is cancelled via the Parchment portal or iFrame
Sent immediately after the cancel action is complete
Common use cases:
Mark the prescription as cancelled in your system
Reverse or void any workflow tied to the cancelled prescription
Use the SCID to fetch the latest prescription state via the Get Patient Prescriptions API endpoint
prescription.reissued
Sent when a prescription is reissued in Parchment (the prescription token is re-delivered; the SCID is unchanged).
Example Payload
TypeScript Type
{
"event_type" : "prescription.reissued" ,
"event_id" : "evt_c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8" ,
"timestamp" : "2025-12-19T06:15:18.786Z" ,
"partner_id" : "tacklit" ,
"organization_id" : "7fa84d2b-26d7-4c71-9b5b-e591eff97e7d" ,
"data" : {
"patient_id" : "f03b972b-53ea-452d-ae48-024817f6c3b0" ,
"partner_patient_id" : "1523402100149593750" ,
"user_id" : "8e1c9bab-6614-4723-8981-87c8fa026dae" ,
"scid" : "2TM1XVXBJRWXH8NM68"
},
"metadata" : {
"reserved_1" : null ,
"reserved_2" : null ,
"reserved_3" : null
}
}
Root Fields:
Field Type Description event_typestring Always prescription.reissued for this event event_idstring Unique event identifier (format: evt_xxx) timestampstring ISO 8601 timestamp when the event was created partner_idstring Your partner identifier organization_idstring UUID of the organization where the prescription was reissued
Data Fields:
Field Type Description patient_idstring Parchment’s internal patient ID (UUID) partner_patient_idstring Your system’s patient ID (as provided during patient creation) user_idstring UUID of the user (prescriber) who reissued the prescription scidstring Script Control Identifier - unchanged by the reissue (the same prescription is re-delivered)
When to expect:
After a prescription token is reissued via the Parchment portal or iFrame
Sent immediately after the reissue action is complete
Common use cases:
Notify the patient that the prescription token has been re-sent
Refresh any cached prescription token / delivery details in your system
Use the SCID to fetch the latest prescription state via the Get Patient Prescriptions API endpoint
The fetched prescription includes a delivery object describing how and where it
was sent (channel, recipient type, destination, and the pharmacy identity for
pharmacy sends). delivery always reflects the current version, so a reissue
overwrites it. To build a full delivery history (e.g. an original send followed by
reissues to different addresses), fetch the prescription in response to each
prescription.created / prescription.reissued notification — every fetch returns
the delivery state as at that event. The webhook payload itself carries IDs only.
Event Filtering
By Event Type
Process only specific event types:
app . post ( '/webhook' , ( req , res ) => {
const event = req . body ;
switch ( event . event_type ) {
case 'prescription.created' :
handlePrescriptionCreated ( event );
break ;
case 'prescription.ceased' :
handlePrescriptionCeased ( event );
break ;
case 'prescription.cancelled' :
handlePrescriptionCancelled ( event );
break ;
case 'prescription.reissued' :
handlePrescriptionReissued ( event );
break ;
// Handle other events...
}
res . status ( 200 ). json ({ received: true });
});