Webhook Subscriptions

Currently supported subscriptions

resource_typeeventdescription
Appointmentappointment_insertionFires upon acomplete or failed response when inserting an appointment into the health record system.
Appointmentappointment_createdFires when NexHealth detects a new appointment in the health record system.
Appointmentappointment_updatedFires when NexHealth detects a change to an appointment object in the health record system.
Appointmentappointment_requestedFires when NexHealth detects a new appointment has been requested but not (yet) inserted into the health record system. This is only for offices using the NexHealth webapp without an integrated health record system.
FormRequestform_request_completedFires when a patient submits a completed form.
FormResponseform_response_insertionFires upon a complete or failed response when inserting a form into the health record system.
Patientpatient_createdFires when NexHealth detects a new patient has been created in the health record system.
Patientpatient_updatedFires when NexHealth detects a change to a patient object.
PatientInsuranceCoveragepatient_insurance_createdFires when patient insurance is created.
PatientInsuranceCoveragepatient_insurance_updatedFires when patient insurance is updated.
Procedureprocedure_createdFires when NexHealth detects a new procedure has been created in the health record system.
Procedureprocedure_updatedFires when NexHealth detects a change to a procedure object in the health record system (ex: status from scheduled to completed or inactive).
SyncStatussync_status_read_changeFires when an integration's read functionality status changes from red to green (in other words, when reads functionality comes back online).

Currently, the webhook does not trigger from green to red. Instead, we recommend using the read_status_at field from the sync status endpoint response to determine the last successful read timestamp. Keep in mind that outside business hours—especially on weekends and holidays—the read_status_at value may show a delay of several hours or days.
SyncStatussync_status_write_changeFires when an integration's write status changes from red to green (in other words, when writes functionality comes back online).

Currently, the webhook does not trigger from green to red. Instead, we recommend using the write_status_at field from the sync status endpoint response to determine the last successful write timestamp. Keep in mind that outside business hours—especially on weekends and holidays—the write_status_at value may show a delay of several hours or days.

You can find example payloads for each subscription below.

Appointment
{
  "institution_id": 1,
  "subdomain": "test-subdomain",
  "webhook_subscription_id": 2,
  "resource_type": "Appointment",
  "event_name": "appointment_insertion.complete",
  "event_time": "2024-03-21T17:52:47.824Z",
  "data": {
    "appointment": {
      "id": 1822,
      "patient_id": 2897,
      "provider_id": 104,
      "provider_name": "Dr. John Smith",
      "start_time": "2020-06-05T20:16:57.007Z",
      "confirmed": true,
      "patient_missed": false,
      "created_at": "2020-06-05T20:16:57.007Z",
      "updated_at": "2020-06-05T20:16:57.007Z",
      "note": "Patient has been having a cough for 3 days",
      "end_time": "2020-06-05T20:16:57.007Z",
      "unavailable": false,
      "cancelled": false,
      "timezone": "America/New_York",
      "institution_id": 1,
      "appointment_type_id": 0,
      "checkin_at": null,
      "location_id": 1,
      "foreign_id": "94",
      "foreign_id_type": "msg-dentrix-DataSource-100",
      "misc": {
        "is_booked_on_nexhealth": true
      },
      "last_sync_time": "2020-06-05T20:16:57.007Z",
      "patient_confirmed": 0,
      "created_by_user_id": 197,
      "is_guardian": false,
      "patient_confirmed_at": null,
      "cancelled_at": null,
      "is_new_clients_patient": false,
      "confirmed_at": null,
      "sooner_if_possible": null,
      "operatory_id": 181,
      "deleted": false,
      "checked_out": false,
      "checked_out_at": null,
      "referrer": "http://mypractice.com/book",
      "is_past_patient": true,
      "timezone_offset": "-4:00"
    }
  }
}
{
  "institution_id": 1,
  "subdomain": "test-subdomain",
  "webhook_subscription_id": 2,
  "resource_type": "Appointment",
  "event_name": "appointment_created",
  "event_time": "2024-03-21T17:52:47.824Z",
  "data": {
    "appointments": [
      {
        "id": 1822,
        "patient_id": 2897,
        "provider_id": 104,
        "provider_name": "Dr. John Smith",
        "start_time": "2020-06-05T20:16:57.007Z",
        "confirmed": true,
        "patient_missed": false,
        "created_at": "2020-06-05T20:16:57.007Z",
        "updated_at": "2020-06-05T20:16:57.007Z",
        "note": "Patient has been having a cough for 3 days",
        "end_time": "2020-06-05T20:16:57.007Z",
        "unavailable": false,
        "cancelled": false,
        "timezone": "America/New_York",
        "institution_id": 1,
        "appointment_type_id": 0,
        "checkin_at": null,
        "location_id": 1,
        "foreign_id": "94",
        "foreign_id_type": "msg-dentrix-DataSource-100",
        "misc": {
          "is_booked_on_nexhealth": true
        },
        "last_sync_time": "2020-06-05T20:16:57.007Z",
        "patient_confirmed": 0,
        "created_by_user_id": 197,
        "is_guardian": false,
        "patient_confirmed_at": null,
        "cancelled_at": null,
        "is_new_clients_patient": false,
        "confirmed_at": null,
        "sooner_if_possible": null,
        "operatory_id": 181,
        "deleted": false,
        "checked_out": false,
        "checked_out_at": null,
        "referrer": "http://mypractice.com/book",
        "is_past_patient": true,
        "timezone_offset": "-4:00",
        "patient": {
          "id": 415,
          "email": "[email protected]",
          "first_name": "John",
          "middle_name": "Anthony",
          "last_name": "Smith",
          "name": "John Smith",
          "created_at": "2020-06-05T20:16:57.007Z",
          "updated_at": "2020-06-05T20:16:57.007Z",
          "institution_id": null,
          "foreign_id": null,
          "foreign_id_type": "--DataSource-",
          "bio": {
            "city": "New York",
            "state": "NY",
            "gender": "Female",
            "zip_code": "20814",
            "new_patient": false,
            "non_patient": true,
            "phone_number": "5163042196",
            "date_of_birth": "1964-05-03",
            "address_line_1": "",
            "address_line_2": "",
            "street_address": "",
            "cell_phone_number": "",
            "home_phone_number": "",
            "work_phone_number": ""
          },
          "inactive": false,
          "last_sync_time": null,
          "guarantor_id": null,
          "unsubscribe_sms": true,
          "balance": {
            "amount": "62.00",
            "currency": "USD"
          },
          "billing_type": "Standard Billing - finance charges",
          "chart_id": "017407",
          "preferred_language": "es",
          "preferred_locale": "es",
          "location_ids": [
            101,
            102,
            103
          ],
          "address": {
            "line_1": null,
            "line_2": null,
            "postal_code": null,
            "city": null,
            "region": null
          }
        },
        "descriptors": [
          {
            "id": 1822,
            "descriptor_type": "Procedure Code",
            "name": "Emr Descriptor Name",
            "code": "Emr Descriptor Code",
            "location_id": 13,
            "foreign_id": "94",
            "foreign_id_type": "msg-dentrix-DataSource-100",
            "data": {},
            "active": true,
            "last_sync_time": "2021-05-21T16:23:03.046Z",
            "created_at": "2021-05-21T16:23:03.046Z",
            "updated_at": "2021-05-21T16:23:03.046Z"
          }
        ]
      }
    ]
  }
}
{
  "institution_id": 1,
  "subdomain": "test-subdomain",
  "webhook_subscription_id": 2,
  "resource_type": "Appointment",
  "event_name": "appointment_updated",
  "event_time": "2024-03-21T17:52:47.824Z",
  "data": {
    "appointment": {
      "id": 1822,
      "patient_id": 2897,
      "provider_id": 104,
      "provider_name": "Dr. John Smith",
      "start_time": "2020-06-05T20:16:57.007Z",
      "confirmed": true,
      "patient_missed": false,
      "created_at": "2020-06-05T20:16:57.007Z",
      "updated_at": "2020-06-05T20:16:57.007Z",
      "note": "Patient has been having a cough for 3 days",
      "end_time": "2020-06-05T20:16:57.007Z",
      "unavailable": false,
      "cancelled": false,
      "timezone": "America/New_York",
      "institution_id": 1,
      "appointment_type_id": 0,
      "checkin_at": null,
      "location_id": 1,
      "foreign_id": "94",
      "foreign_id_type": "msg-dentrix-DataSource-100",
      "misc": {
        "is_booked_on_nexhealth": true
      },
      "last_sync_time": "2020-06-05T20:16:57.007Z",
      "patient_confirmed": 0,
      "created_by_user_id": 197,
      "is_guardian": false,
      "patient_confirmed_at": null,
      "cancelled_at": null,
      "is_new_clients_patient": false,
      "confirmed_at": null,
      "sooner_if_possible": null,
      "operatory_id": 181,
      "deleted": false,
      "checked_out": false,
      "checked_out_at": null,
      "referrer": "http://mypractice.com/book",
      "is_past_patient": true,
      "timezone_offset": "-4:00",
      "patient": {
        "id": 415,
        "email": "[email protected]",
        "first_name": "John",
        "middle_name": "Anthony",
        "last_name": "Smith",
        "name": "John Smith",
        "created_at": "2020-06-05T20:16:57.007Z",
        "updated_at": "2020-06-05T20:16:57.007Z",
        "institution_id": null,
        "foreign_id": null,
        "foreign_id_type": "--DataSource-",
        "bio": {
          "city": "New York",
          "state": "NY",
          "gender": "Female",
          "zip_code": "20814",
          "new_patient": false,
          "non_patient": true,
          "phone_number": "5163042196",
          "date_of_birth": "1964-05-03",
          "address_line_1": "",
          "address_line_2": "",
          "street_address": "",
          "cell_phone_number": "",
          "home_phone_number": "",
          "work_phone_number": ""
        },
        "inactive": false,
        "last_sync_time": null,
        "guarantor_id": null,
        "unsubscribe_sms": true,
        "balance": {
          "amount": "62.00",
          "currency": "USD"
        },
        "billing_type": "Standard Billing - finance charges",
        "chart_id": "017407",
        "preferred_language": "es",
        "preferred_locale": "es",
        "location_ids": [
          101,
          102,
          103
        ],
        "address": {
          "line_1": null,
          "line_2": null,
          "postal_code": null,
          "city": null,
          "region": null
        }
      },
      "descriptors": [
        {
          "id": 1822,
          "descriptor_type": "Procedure Code",
          "name": "Emr Descriptor Name",
          "code": "Emr Descriptor Code",
          "location_id": 13,
          "foreign_id": "94",
          "foreign_id_type": "msg-dentrix-DataSource-100",
          "data": {},
          "active": true,
          "last_sync_time": "2021-05-21T16:23:03.046Z",
          "created_at": "2021-05-21T16:23:03.046Z",
          "updated_at": "2021-05-21T16:23:03.046Z"
        }
      ]
    },
    "previous_attributes": {
      "confirmed": false,
      "created_at": null
    }
  }
}
{
  "institution_id": 1,
  "subdomain": "test-subdomain",
  "webhook_subscription_id": 2,
  "resource_type": "Appointment",
  "event_name": "appointment_requested",
  "event_time": "2024-03-21T17:52:47.824Z",
  "data": {
    "appointments": [
      {
        "id": 1822,
        "patient_id": 2897,
        "provider_id": 104,
        "provider_name": "Dr. John Smith",
        "start_time": "2020-06-05T20:16:57.007Z",
        "confirmed": true,
        "patient_missed": false,
        "created_at": "2020-06-05T20:16:57.007Z",
        "updated_at": "2020-06-05T20:16:57.007Z",
        "note": "Patient has been having a cough for 3 days",
        "end_time": "2020-06-05T20:16:57.007Z",
        "unavailable": false,
        "cancelled": false,
        "timezone": "America/New_York",
        "institution_id": 1,
        "appointment_type_id": 0,
        "checkin_at": null,
        "location_id": 1,
        "foreign_id": "94",
        "foreign_id_type": "msg-dentrix-DataSource-100",
        "misc": {
          "is_booked_on_nexhealth": true
        },
        "last_sync_time": "2020-06-05T20:16:57.007Z",
        "patient_confirmed": 0,
        "created_by_user_id": 197,
        "is_guardian": false,
        "patient_confirmed_at": null,
        "cancelled_at": null,
        "is_new_clients_patient": false,
        "confirmed_at": null,
        "sooner_if_possible": null,
        "operatory_id": 181,
        "deleted": false,
        "checked_out": false,
        "checked_out_at": null,
        "referrer": "http://mypractice.com/book",
        "is_past_patient": true,
        "timezone_offset": "-4:00",
        "patient": {
          "id": 415,
          "email": "[email protected]",
          "first_name": "John",
          "middle_name": "Anthony",
          "last_name": "Smith",
          "name": "John Smith",
          "created_at": "2020-06-05T20:16:57.007Z",
          "updated_at": "2020-06-05T20:16:57.007Z",
          "institution_id": null,
          "foreign_id": null,
          "foreign_id_type": "--DataSource-",
          "bio": {
            "city": "New York",
            "state": "NY",
            "gender": "Female",
            "zip_code": "20814",
            "new_patient": false,
            "non_patient": true,
            "phone_number": "5163042196",
            "date_of_birth": "1964-05-03",
            "address_line_1": "",
            "address_line_2": "",
            "street_address": "",
            "cell_phone_number": "",
            "home_phone_number": "",
            "work_phone_number": ""
          },
          "inactive": false,
          "last_sync_time": null,
          "guarantor_id": null,
          "unsubscribe_sms": true,
          "balance": {
            "amount": "62.00",
            "currency": "USD"
          },
          "billing_type": "Standard Billing - finance charges",
          "chart_id": "017407",
          "preferred_language": "es",
          "preferred_locale": "es",
          "location_ids": [
            101,
            102,
            103
          ],
          "address": {
            "line_1": null,
            "line_2": null,
            "postal_code": null,
            "city": null,
            "region": null
          }
        },
        "descriptors": [
          {
            "id": 1822,
            "descriptor_type": "Procedure Code",
            "name": "Emr Descriptor Name",
            "code": "Emr Descriptor Code",
            "location_id": 13,
            "foreign_id": "94",
            "foreign_id_type": "msg-dentrix-DataSource-100",
            "data": {},
            "active": true,
            "last_sync_time": "2021-05-21T16:23:03.046Z",
            "created_at": "2021-05-21T16:23:03.046Z",
            "updated_at": "2021-05-21T16:23:03.046Z"
          }
        ]
      }
    ]
  }
}
FormRequest
{
  "institution_id": 1,
  "subdomain": "test-subdomain",
  "webhook_subscription_id": 2,
  "resource_type": "FormRequest",
  "event_name": "form_request_completed",
  "event_time": "2024-03-21T17:52:47.824Z",
  "data": {
    "formrequest": {
      "id": "d2594a76862247209d4c35a92e0902f8",
      "location_id": 1,
      "appointment_id": 1
    }
  }
}
FormResponse
{
  "institution_id": 1,
  "subdomain": "test-subdomain",
  "webhook_subscription_id": 2,
  "resource_type": "FormResponse",
  "event_name": "form_response_insertion.complete",
  "event_time": "2024-03-21T17:52:47.824Z",
  "data": {
    "formresponse": {
      "id": 435,
      "status": "complete",
      "response_documents": [
        {
          "id": 435,
          "pdf_url": "/api/documents/ee0913ee13af4e0aa4df2af1738d43d6.pdf"
        }
      ],
      "form_request_id": "d1b3b3b3-3b3b-3b3b-3b3b-3b3b3b3b3b3b",
      "patient_id": 415
    }
  }
}
Patient
{
  "institution_id": 1,
  "subdomain": "test-subdomain",
  "webhook_subscription_id": 2,
  "resource_type": "Patient",
  "event_name": "patient_created",
  "event_time": "2024-03-21T17:52:47.824Z",
  "data": {
    "patients": [
      {
        "id": 415,
        "email": "[email protected]",
        "first_name": "John",
        "middle_name": "Anthony",
        "last_name": "Smith",
        "name": "John Smith",
        "created_at": "2020-06-05T20:16:57.007Z",
        "updated_at": "2020-06-05T20:16:57.007Z",
        "institution_id": null,
        "foreign_id": null,
        "foreign_id_type": "--DataSource-",
        "bio": {
          "city": "New York",
          "state": "NY",
          "gender": "Female",
          "zip_code": "20814",
          "new_patient": false,
          "non_patient": true,
          "phone_number": "5163042196",
          "date_of_birth": "1964-05-03",
          "address_line_1": "",
          "address_line_2": "",
          "street_address": "",
          "cell_phone_number": "",
          "home_phone_number": "",
          "work_phone_number": ""
        },
        "inactive": false,
        "last_sync_time": null,
        "guarantor_id": null,
        "unsubscribe_sms": true,
        "balance": {
          "amount": "62.00",
          "currency": "USD"
        },
        "billing_type": "Standard Billing - finance charges",
        "chart_id": "017407",
        "preferred_language": "es",
        "preferred_locale": "es",
        "location_ids": [
          1,
          2,
          3
        ],
        "address": {
          "line_1": null,
          "line_2": null,
          "postal_code": null,
          "city": null,
          "region": null
        }
      }
    ]
  }
}
{
  "institution_id": 1,
  "subdomain": "test-subdomain",
  "webhook_subscription_id": 2,
  "resource_type": "Patient",
  "event_name": "patient_updated",
  "event_time": "2024-03-21T17:52:47.824Z",
  "data": {
    "patient": {
      "id": 415,
      "email": "[email protected]",
      "first_name": "John",
      "middle_name": "Anthony",
      "last_name": "Smith",
      "name": "John Smith",
      "created_at": "2020-06-05T20:16:57.007Z",
      "updated_at": "2020-06-05T20:16:57.007Z",
      "institution_id": null,
      "foreign_id": null,
      "foreign_id_type": "--DataSource-",
      "bio": {
        "city": "New York",
        "state": "NY",
        "gender": "Female",
        "zip_code": "20814",
        "new_patient": false,
        "non_patient": true,
        "phone_number": "5163042196",
        "date_of_birth": "1964-05-03",
        "address_line_1": "",
        "address_line_2": "",
        "street_address": "",
        "cell_phone_number": "",
        "home_phone_number": "",
        "work_phone_number": ""
      },
      "inactive": false,
      "last_sync_time": null,
      "guarantor_id": null,
      "unsubscribe_sms": true,
      "balance": {
        "amount": "62.00",
        "currency": "USD"
      },
      "billing_type": "Standard Billing - finance charges",
      "chart_id": "017407",
      "preferred_language": "es",
      "preferred_locale": "es",
      "location_ids": [
        1,
        2,
        3
      ],
      "address": {
        "line_1": null,
        "line_2": null,
        "postal_code": null,
        "city": null,
        "region": null
      }
    },
    "previous_attributes": {
      "inactive": true
    }
  }
}
PatientInsuranceCoverage
{
  "institution_id": 1,
  "subdomain": "test-subdomain",
  "webhook_subscription_id": 2,
  "resource_type": "PatientInsuranceCoverage",
  "event_name": "patient_insurance_created",
  "event_time": "2024-03-21T17:52:47.824Z",
  "data": {
    "patient_insurance_coverages": [
      {
        "id": 18,
        "subscription_relation": "self",
        "patient_id": 25,
        "priority": 2,
        "subscriber_num": "123456789",
        "effective_date": "2022-01-01",
        "expiration_date": "2022-12-31",
        "insurance_type": "dental"
      }
    ]
  }
}
{
  "institution_id": 1,
  "subdomain": "test-subdomain",
  "webhook_subscription_id": 2,
  "resource_type": "PatientInsuranceCoverage",
  "event_name": "patient_insurance_updated",
  "event_time": "2024-03-21T17:52:47.824Z",
  "data": {
    "patient_insurance_coverage": {
      "id": 18,
      "subscription_relation": "self",
      "patient_id": 25,
      "priority": 2,
      "subscriber_num": "123456789",
      "effective_date": "2022-01-01",
      "expiration_date": "2022-12-31",
      "insurance_type": "dental"
    },
    "previous_attributes": {
      "priority": 1
    }
  }
}
Procedure
{
  "institution_id": 1,
  "subdomain": "test-subdomain",
  "webhook_subscription_id": 2,
  "resource_type": "Procedure",
  "event_name": "procedure_created",
  "event_time": "2024-03-21T17:52:47.824Z",
  "data": {
    "procedures": [
      {
        "id": 11,
        "location_id": 21,
        "patient_id": 162,
        "provider_id": 84,
        "appointment_id": 283,
        "code": "D6100",
        "name": "Implant Removal",
        "status": "referred",
        "updated_at": "2020-06-05T20:16:57.007Z",
        "body_site": null,
        "fee": {
          "amount": "62.00",
          "currency": "USD"
        },
        "start_date": "2022-06-24",
        "end_date": "2022-06-24"
      }
    ]
  }
}
{
  "institution_id": 1,
  "subdomain": "test-subdomain",
  "webhook_subscription_id": 2,
  "resource_type": "Procedure",
  "event_name": "procedure_updated",
  "event_time": "2024-03-21T17:52:47.824Z",
  "data": {
    "procedure": {
      "id": 11,
      "location_id": 21,
      "patient_id": 162,
      "provider_id": 84,
      "appointment_id": 283,
      "code": "D6100",
      "name": "Implant Removal",
      "status": "referred",
      "updated_at": "2020-06-05T20:16:57.007Z",
      "body_site": null,
      "fee": {
        "amount": "62.00",
        "currency": "USD"
      },
      "start_date": "2022-06-24",
      "end_date": "2022-06-24"
    },
    "previous_attributes": {
      "status": "scheduled"
    }
  }
}
SyncStatus
{
  "institution_id": 1,
  "subdomain": "test-subdomain",
  "webhook_subscription_id": 2,
  "resource_type": "SyncStatus",
  "event_name": "sync_status_read_change.green",
  "event_time": "2024-03-21T17:52:47.824Z",
  "data": {
    "syncstatus": {
      "institution_id": 1,
      "sync_source_type": "DataSource",
      "sync_source_name": "My Source",
      "emr": {
        "id": 11,
        "name": "dentrix",
        "display_name": "Dentrix",
        "type": [
          "cloud",
          "onprem"
        ]
      },
      "read_status": "green",
      "read_status_at": "2020-06-05T20:16:57.007Z",
      "write_status": "red",
      "write_status_at": "2020-06-05T20:16:57.007Z",
      "locations": null
    }
  }
}
{
  "institution_id": 1,
  "subdomain": "test-subdomain",
  "webhook_subscription_id": 2,
  "resource_type": "SyncStatus",
  "event_name": "sync_status_write_change.red",
  "event_time": "2024-03-21T17:52:47.824Z",
  "data": {
    "syncstatus": {
      "institution_id": 1,
      "sync_source_type": "DataSource",
      "sync_source_name": "My Source",
      "emr": {
        "id": 11,
        "name": "dentrix",
        "display_name": "Dentrix",
        "type": [
          "cloud",
          "onprem"
        ]
      },
      "read_status": "green",
      "read_status_at": "2020-06-05T20:16:57.007Z",
      "write_status": "red",
      "write_status_at": "2020-06-05T20:16:57.007Z",
      "locations": null
    }
  }
}