Propelus offers webhook events to notify about system activities like license verification, monitoring updates, exclusions, and automation status changes.
The 11 events include: licenseVerified, monitoredLicenseVerified, monitoredLicenseVerifiedChanged, monitoredExclusionsCoreMatch/Changed, licenseVerificationBatchFinished, automationStatusChanged, and adverse match/changed/checked events, providing detailed payloads on verification results, matches, and status updates.
A range of webhook events are available to keep you informed about various system activities.
Below, you'll find a brief description of each supported event and the structure of the data payload you can expect.
1. License Verified
The licenseVerified event is triggered when a license or certification (LCR) from an LCR batch has been verified. If the initial LCR batch has 10 licenses, then 10 licenseVerified events will be triggered. This is triggered for every verification, regardless of the verification being successful or not.
Samples --
License found
{
"eventType":"licenseVerified",
"detail":{
"code":"found",
"message":"null",
"batchId":"uuid",
"input":{
"stateCode":"FL",
"professionCode":"RN",
"licenseNumber":"RN000"
},
"status":"COMPLETED",
"isFound":true,
"customProperties":{
"Any1":"string",
"any2":"prod",
"anY3":"4"
},
"result":{
"type":"NOT_FOUND",
"message":"LICENSE NOT FOUND WITH THE GIVEN PARAMS",
"isFound":false
}
}
}Not found
{
"eventType": "licenseVerified",
"detail": {
"code": "not_found",
"message": "LICENSE NOT FOUND WITH THE GIVEN PARAMS",
"batchId": "uuid",
"input": {
"stateCode": "FL",
"professionCode": "RN",
"licenseNumber": "RNXXX"
},
"status": "COMPLETED",
"isFound": false,
"customProperties": {
"Any1": "string",
"any2": "prod",
"anY3": "4",
},
"result": {
"type": "NOT_FOUND",
"message": "LICENSE NOT FOUND WITH THE GIVEN PARAMS",
"isFound": false
}
}
}2. MonitoredLicenseVerified
The monitoredLicenseVerified event occurs when an LCR enrolled in monitoring is verified via the determined schedule (for automated items, this is daily). This is used to ensure that licenses being actively monitored always remain valid. This is triggered for every verification, regardless of the verification being successful or not.
{
"eventType": "monitoredLicenseVerified",
"detail": {
"externalId": "string",
"data": {
"type": "NOT_FOUND",
"message": "LICENSE NOT FOUND WITH THE GIVEN PARAMS",
"isFound": false
}
}
}
3. MonitoredLicenseVerifiedChanged
monitoredLicenseVerifiedChanged is triggered only when the most recent verification of a monitored LCR is different from the latest previous result captured, or when the verification occurs for the first time.
{
"eventType": "monitoredLicenseVerifiedChanged",
"detail": {
"externalId": "string",
"currentResult": {
"data": {
"type": "FOUND",
"message": "string",
"isFound": true,
"verification":{
"firstName":"Mark",
"lastName":"Twain"
}
},
"previousResult":{
"data": {
"type": "NOT_FOUND",
"message": "LICENSE NOT FOUND WITH THE GIVEN PARAMS",
"isFound": false
}
}
}
}4. MonitoredExclusionsCoreMatch
monitoredExclusionsCoreMatch occurs when the input data matches one of the exclusions or sanctions lists during a scheduled check (monthly). If the input data doesn't match any of the sources, then an event is not triggered.
{
"eventType": "monitoredExclusionsCoreMatch",
"detail": {
"externalId": "string",
"items": [
{
"identity": {
"dateOfBirth": "00/00/0000",
"npi": "0000000000",
"ssn": null,
"name": {
"first": "John",
"middle": null,
"last": "Doe",
"prefix": null,
"suffix": null,
"fullName": null
},
"score": 60,
"matchCategory": "Potential Match",
"aliases": [
{
"name": {
"first": "Jhonny",
"middle": null,
"last": "Doe",
"prefix": null,
"suffix": null,
"fullName": null
}
}
],
"addresses": [
{ "address": ["123 main st"],
"city": "BEL AIR",
"state": "MD",
"zip": "0000"
}
],
"attributes": {
"exclusions": [
{
"agency": "any",
"type": "some",
"activeDate": "2015-10-05T00:00:00.000Z",
"reinstatementDate": "10/05/2025",
"licenseNumber": null,
"additionalComments": null,
"reportType": null,
"affiliation": null,
"reference": null,
"cageCode": null,
"profession": "Dentist"
},
{
"agency": null,
"type": null,
"activeDate": "2016-07-01T00:00:00.000Z",
"reinstatementDate": "07/01/2024",
"licenseNumber": "00000",
"additionalComments": "details",
"reportType": null,
"affiliation": null,
"reference": null,
"cageCode": null,
"profession": "Maxillofacial Surgery"
}
]
}
}
}
]
}
}5. MonitoredExclusionsCoreChanged
monitoredExclusionsCoreChanged is triggered when there is an update to a person's stored data in Propelus' Exclusions Monitoring product. This allows us to re-verify an existing person as an initial verification, to check for any new matches. We'll run this after additional data points are made to a person's entry (e.g., NPI or DOB is added) or if their records are updated (e.g, a last name change).
{
"eventType": "monitoredExclusionsCoreChanged",
"detail": {
"externalId": "string",
"currentResult": [
{
"identity": {
"dateOfBirth": "00/00/0000",
"npi": "0000000000",
"ssn": null,
"name": {
"first": "John",
"middle": null,
"last": "Doe",
"prefix": null,
"suffix": null,
"fullName": null
},
"score": 60,
"matchCategory": "Potential Match",
"aliases": [
{
"name": {
"first": "Jhonny",
"middle": null,
"last": "Doe",
"prefix": null,
"suffix": null,
"fullName": null
}
}
],
"addresses": [
{ "address": ["123 main st"],
"city": "BEL AIR",
"state": "MD",
"zip": "0000"
}
],
"attributes": {
"exclusions": [
{
"agency": "any",
"type": "some",
"activeDate": "2015-10-05T00:00:00.000Z",
"reinstatementDate": "10/05/2025",
"licenseNumber": null,
"additionalComments": null,
"reportType": null,
"affiliation": null,
"reference": null,
"cageCode": null,
"profession": "Dentist"
},
{
"agency": null,
"type": null,
"activeDate": "2016-07-01T00:00:00.000Z",
"reinstatementDate": "07/01/2024",
"licenseNumber": "00000",
"additionalComments": "details",
"reportType": null,
"affiliation": null,
"reference": null,
"cageCode": null,
"profession": "Maxillofacial Surgery"
}
]
}
}
},
{
"identity": {
"dateOfBirth": "10/20/0000",
"dunsNumber": null,
"npi": "0000000000",
"ssn": null,
"name": {
"first": "J",
"middle": "",
"last": "DOE",
"prefix": null,
"suffix": null,
"fullName": null
},
"score": 42,
"matchCategory": "Possible Match",
"aliases": [],
"addresses": [{ "address": ["111 W 111TH ST, APT 1"], "city": "NEW YORK", "state": "NY", "zip": "10030" }],
"attributes": {
"exclusions": [
{
"agency": null,
"type": "1128b4",
"activeDate": "2008-03-20T00:00:00.000Z",
"reinstatementDate": null,
"licenseNumber": null,
"additionalComments": null,
"reportType": null,
"affiliation": null,
"reference": null,
"cageCode": null,
"profession": "MEDICAL PRACTICE, MD",
"listCode": "OIG"
}
]
}
}
}
],
"lastResult": null
}
}6. LicenseVerificationBatchFinished
licenseVerificationBatchFinished is triggered when all licenses of a batch sent for verification have been processed. This event should trigger whenever one of these criteria are met:
- All licenses of the batch have been successfully verified, returning a COMPLETED status
- Some licenses of a batch were processed and some licenses failed, returning a COMPLETED status
- All licenses of a batch failed to process, returning a FAILED status
{
"eventType":"licenseVerificationBatchFinished",
"detail":{
"status":"COMPLETED""batchId":"uuid",
"clientMetadata":{
"john":"doe",
"foo":"bar"
}
}
}7. automationStatusChange
The automationStatusChanged event is triggered when a change is detected in the automation status of a board. This event enables external systems to stay aligned with automation status updates in the Propelus system. This event provides detailed information about:
- Board where the change occurred
- The new and previous statuses
- The associated profession and state codes
Automation Status Possible Values:
- AUTOMATED: Indicates that the process is fully automated and does not require manual intervention. All professions within this board are handled by automated systems or predefined workflows.
- MANUAL: Indicates that the process is being managed manually. Manual intervention is required.
- INTERRUPTED: Indicates that the automation process is disrupted. Manual intervention is required.
| Field | Type | Description |
|---|---|---|
| eventType | string | The type of event. For this webhook, it will always be “automationStatusChanged”. |
| detail.boardName | string | The name of the board where the automation status change occurred. |
| details.statusChanges | array | A list of one or more status change records. |
| statusChanges[].newStatus | string | The new automation status after the change. Possible values: “AUTOMATED”, “MANUAL”, “INTERRUPTED”. |
| statusChanges[].oldStatus | string | The previous automation status before the change. Possible values: “AUTOMATED”, “MANUAL”, “INTERRUPTED”. |
| statusChanges[].professionCode | string | A code representing the profession associated with the status change. |
| statusChanges[].stateCode | string | A code representing the state related to the change. |
{
"eventType": "automationStatusChanged",
"detail": {
"boardName": "Board Name",
"statusChanges": [
{
"newStatus": "AUTOMATED",
"oldStatus": "MANUAL",
"professionCode": "PC",
"stateCode": "SC"
}
]
}
}8. monitoredAdverseEssentialsMatch
The monitoredAdverseEssentialsMatch event is triggered when input data matches an entry on one of the exclusion lists. This happens during the scheduled monthly check for Propelus' AdverseCheck Essentials product. No event is triggered if there is no match.
{
"eventType": "monitoredAdverseEssentialsMatch",
"detail": {
"externalId": "string",
"items": [
{
"professional": {
"propelusId": "string",
"score": 60,
"npi": null,
"names": [
{
"first": "John",
"last": null,
"middle": "Doe",
"fullName": "John Doe",
"prefix": null,
"suffix": null
}
],
"phones": [],
"addOns": {
"exclusions": [
{
"name": {
"first": "John",
"middle": null,
"last": "Doe",
"fullName": null,
"prefix": null,
"suffix": null,
"businessName": null
},
"address": {
"address": "123 ST",
"city": "CITY",
"state": "CO",
"zipCode": "12345"
},
"dateOfBirth": "1970-08-05",
"licenseNumber": null,
"profession": "NURSING PROFESSION",
"additionalComments": null,
"excludedDate": "2009-12-20",
"excludingAgency": null,
"exclusionsType": "1128b4",
"listCode": "OIG",
"reinstatementDate": null,
"amendment": "License revocation, suspension, or surrender. Minimum Period: Period imposed by the state licensing authority.",
"npi": []
}
]
}
}
}
]
}
}
9. monitoredAdverseProMatch
The monitoredAdverseProMatch event is triggered when input data matches one of the exclusion or sanctions lists. This happens during the scheduled monthly check for Propelus' AdverseCheck Pro product. No event is triggered if there is no match.
{
"eventType": "monitoredAdverseProMatch",
"detail": {
"externalId": "string",
"items": [
{
"professional": {
"propelusId": "string",
"score": 60,
"npi": null,
"names": [
{
"first": "Joe",
"last": "Doe",
"middle": null,
"fullName": "Joe Doe",
"prefix": null,
"suffix": null
}
],
"phones": [],
"addOns": {
"exclusions": [
{
"name": {
"first": "John",
"middle": null,
"last": "Doe",
"fullName": null,
"prefix": null,
"suffix": null,
"businessName": null
},
"address": {
"address": "123 ST",
"city": "CITY",
"state": "CO",
"zipCode": "12345"
},
"dateOfBirth": "1962-08-05",
"licenseNumber": null,
"profession": "NURSING PROFESSION",
"additionalComments": null,
"excludedDate": "2009-12-20",
"excludingAgency": null,
"exclusionsType": "1128b4",
"listCode": "OIG",
"reinstatementDate": null,
"amendment": "License revocation, suspension, or surrender. Minimum Period: Period imposed by the state licensing authority.",
"npi": []
}
],
"sanctions": [
{
"type": "sanction::fsmb",
"detail": {
"order": "OP",
"entity": "Nevada State Board of Medical Examiners",
"actions": [
{
"code": "A0081",
"description": "ASSESSED A FINE",
"basis": {
"code": "B0009",
"description": "Failure to Conform to Minimal Standards of Acceptable Medical Practice"
}
},
{
"code": "A0074",
"description": "REPRIMANDED",
"basis": {
"code": "B0009",
"description": "Failure to Conform to Minimal Standards of Acceptable Medical Practice"
}
},
{
"code": "A0231",
"description": "ADDITIONAL CME REQUIRED",
"basis": {
"code": "B0009",
"description": "Failure to Conform to Minimal Standards of Acceptable Medical Practice"
}
}
]
}
}
]
}
}
}
]
}
}10. monitoredAdverseEssentialsChanged
The monitoredAdverseEssentialsChanged event is triggered when there is an update to a person's stored data in Propelus' AdverseCheck Essentials monitoring product. This allows us to re-verify an existing person as an initial verification to check for any new matches.
{
"eventType": "monitoredAdverseEssentialsChanged",
"detail": {
"externalId": "string",
"currentResult": [
{
"professional": {
"propelusId": "string",
"score": 60,
"npi": null,
"names": [
{
"first": "Jhon",
"last": "Doe",
"middle": null,
"fullName": "Jhon Doe",
"prefix": null,
"suffix": null
}
],
"phones": [],
"addOns": {
"exclusions": [
{
"name": {
"first": "Jhon",
"middle": null,
"last": "Doe",
"fullName": null,
"prefix": null,
"suffix": null,
"businessName": null
},
"address": {
"address": "123 ST",
"city": "CITY",
"state": "CO",
"zipCode": "12345"
},
"dateOfBirth": "1962-08-05",
"licenseNumber": null,
"profession": "NURSING PROFESSION",
"additionalComments": null,
"excludedDate": "2009-12-20",
"excludingAgency": null,
"exclusionsType": "1128b4",
"listCode": "OIG",
"reinstatementDate": null,
"amendment": "License revocation, suspension, or surrender. Minimum Period: Period imposed by the state licensing authority.",
"npi": []
}
]
}
}
}
],
"lastResult": null
}
}
11. monitoredAdverseProChanged
monitoredAdverseProChanged is triggered when there is an update to a person's stored data in Propelus' AdverseCheck Pro monitoring product. This allows us to re-verify an existing person as an initial verification to check for any new matches.
{
"eventType": "monitoredAdverseProChanged",
"detail": {
"externalId": "string",
"currentResult": [
{
"professional": {
"propelusId": "string",
"score": 60,
"npi": null,
"names": [
{
"first": "John",
"last": "Doe",
"middle": null,
"fullName": "John Doe",
"prefix": null,
"suffix": null
}
],
"phones": [],
"addOns": {
"exclusions": [
{
"name": {
"first": "John",
"middle": null,
"last": "Doe",
"fullName": null,
"prefix": null,
"suffix": null,
"businessName": null
},
"address": {
"address": "123 ST",
"city": "CITY",
"state": "CO",
"zipCode": "12345"
},
"dateOfBirth": "1970-08-05",
"licenseNumber": null,
"profession": "NURSING PROFESSION",
"additionalComments": null,
"excludedDate": "2010-12-20",
"excludingAgency": null,
"exclusionsType": "1128b4",
"listCode": "OIG",
"reinstatementDate": null,
"amendment": "License revocation, suspension, or surrender. Minimum Period: Period imposed by the state licensing authority.",
"npi": []
}
],
"sanctions": [
{
"type": "sanction::fsmb",
"detail": {
"order": "OP",
"entity": "Nevada State Board of Medical Examiners",
"actions": [
{
"code": "A0081",
"description": "ASSESSED A FINE",
"basis": {
"code": "B0009",
"description": "Failure to Conform to Minimal Standards of Acceptable Medical Practice"
}
},
{
"code": "A0074",
"description": "REPRIMANDED",
"basis": {
"code": "B0009",
"description": "Failure to Conform to Minimal Standards of Acceptable Medical Practice"
}
},
{
"code": "A0231",
"description": "ADDITIONAL CME REQUIRED",
"basis": {
"code": "B0009",
"description": "Failure to Conform to Minimal Standards of Acceptable Medical Practice"
}
}
]
}
}
]
}
}
}
],
"lastResult": null
}
}
12. monitoredAdverseEssentialsChecked
The monitoredAdverseEssentialsChecked event is triggered every time a scheduled verification is performed for a person in Propelus' AdverseCheck Essentials monitoring product. The event is sent regardless of the result. The notification will either confirm that no records were found or will include any matching records.
Found result
{
"eventType": "monitoredAdverseEssentialsChecked",
"timestamp": "2025-08-08T14:00:00.000Z",
"detail": {
"professionalId": "string",
"professionalName": "John Doe",
"externalId": "string",
"code": "found",
"message": "Data found for this professional"
"items": [
{
"professional": {
"propelusId": "string",
"score": 60,
"npi": null,
"names": [
{
"first": "John",
"last": null,
"middle": "Doe",
"fullName": "John Doe",
"prefix": null,
"suffix": null
}
],
"phones": [],
"addOns": {
"exclusions": [
{
"name": {
"first": "John",
"middle": null,
"last": "Doe",
"fullName": null,
"prefix": null,
"suffix": null,
"businessName": null
},
"address": {
"address": "123 ST",
"city": "CITY",
"state": "CO",
"zipCode": "12345"
},
"dateOfBirth": "1970-08-05",
"licenseNumber": null,
"profession": "NURSING PROFESSION",
"additionalComments": null,
"excludedDate": "2020-12-20",
"excludingAgency": null,
"exclusionsType": "1128b4",
"listCode": "OIG",
"reinstatementDate": null,
"amendment": "License revocation, suspension, or surrender. Minimum Period: Period imposed by the state licensing authority.",
"npi": []
}
]
}
}
}
]
}Not Found result
{
"eventType": "monitoredAdverseEssentialsChecked",
"timestamp": "2025-08-08T14:00:00.000Z",
"detail": {
"professionalId": "string",
"professionalName": "John Doe",
"externalId": "string",
"code": "not_found",
"message": "Data not found for this professional"
"items": []
}
13. monitoredAdverseProChecked
The monitoredAdverseProChecked event is triggered every time a scheduled verification is performed for a person in Propelus' AdverseCheck Pro Monitoring product. The event is sent regardless of the result. The notification will either confirm that no records were found or will include any matching records.
Found result
{
"eventType": "monitoredAdverseProChecked",
"timestamp": "2025-08-08T14:00:00.000Z",
"detail": {
"professionalId": "string",
"professionalName": "John Doe",
"externalId": "string",
"code": "found",
"message": "Data found for this professional"
"items": [
{
"professional": {
"propelusId": "string",
"score": 60,
"npi": null,
"names": [
{
"first": "Joe",
"last": "Doe",
"middle": null,
"fullName": "Joe Doe",
"prefix": null,
"suffix": null
}
],
"phones": [],
"addOns": {
"exclusions": [
{
"name": {
"first": "John",
"middle": null,
"last": "Doe",
"fullName": null,
"prefix": null,
"suffix": null,
"businessName": null
},
"address": {
"address": "123 ST",
"city": "CITY",
"state": "CO",
"zipCode": "12345"
},
"dateOfBirth": "1962-08-05",
"licenseNumber": null,
"profession": "NURSING PROFESSION",
"additionalComments": null,
"excludedDate": "2020-12-20",
"excludingAgency": null,
"exclusionsType": "1128b4",
"listCode": "OIG",
"reinstatementDate": null,
"amendment": "License revocation, suspension, or surrender. Minimum Period: Period imposed by the state licensing authority.",
"npi": []
}
],
"sanctions": [
{
"type": "sanction::fsmb",
"detail": {
"order": "OP",
"entity": "Nevada State Board of Medical Examiners",
"actions": [
{
"code": "A0081",
"description": "ASSESSED A FINE",
"basis": {
"code": "B0009",
"description": "Failure to Conform to Minimal Standards of Acceptable Medical Practice"
}
},
{
"code": "A0074",
"description": "REPRIMANDED",
"basis": {
"code": "B0009",
"description": "Failure to Conform to Minimal Standards of Acceptable Medical Practice"
}
},
{
"code": "A0231",
"description": "ADDITIONAL CME REQUIRED",
"basis": {
"code": "B0009",
"description": "Failure to Conform to Minimal Standards of Acceptable Medical Practice"
}
}
]
}
}
]
}
}
}
]
}Not found result
{
"eventType": "monitoredAdverseProChecked",
"timestamp": "2025-08-08T14:00:00.000Z",
"detail": {
"professionalId": "string",
"professionalName": "John Doe",
"externalId": "string",
"code": "not_found",
"message": "Data not found for this professional"
"items": []
}
Where to go next
Webhook Security Measures and Webhook Events & Payloads