Skip to content

Webhook Event Reference

This page documents every webhook event Healthie emits — including the payload format, which GraphQL mutations trigger each event, and any extra fields included beyond the standard payload.

See the Webhooks overview for how to set up endpoints, verify signatures, and handle retries.

Every webhook POST body contains at minimum:

Standard payload
{
"resource_id": "12345",
"resource_id_type": "ResourceType",
"event_type": "resource.action",
"changed_fields": []
}
  • resource_id — ID of the affected record. Use this to query the resource via GraphQL after receiving the event.
  • resource_id_type — The GraphQL type name of the resource (e.g. Appointment, User, FormAnswerGroup).
  • event_type — The event that occurred.
  • changed_fields — For updated events, lists the field names that changed. Empty for created and deleted events.

Some events include additional fields beyond these four — those are documented in each event’s section below.


Fires when a new appointment is created in the system.

  • createAppointment
  • completeCheckout
{
"resource_id": "67890",
"resource_id_type": "Appointment",
"event_type": "appointment.created",
"changed_fields": [],
"resource_organization_id": "org_123"
}

Fires when an appointment is deleted from the system.

When deleteAppointment mutation is called

  • deleteAppointment
{
"resource_id": "67890",
"resource_id_type": "Appointment",
"event_type": "appointment.deleted",
"changed_fields": []
}

Fires when a participant joins an appointment.

  • Manually triggered when a user joins the appointment session
{
"resource_id": "67890",
"resource_id_type": "Appointment",
"event_type": "appointment.participant_joined",
"changed_fields": [],
"host_user_id": "1234",
"user_name": "username",
"user_email": "user@email.com"
}

Fires when a participant leaves an appointment.

  • Manually triggered when a user leaves the appointment session
{
"resource_id": "67890",
"resource_id_type": "Appointment",
"event_type": "appointment.participant_left",
"changed_fields": [],
"host_user_id": "1234",
"user_name": "username",
"user_email": "user@email.com"
}

Fires when a patient is added to an appointment.

  • Manually triggered when a patient is assigned to the appointment
{
"resource_id": "67890",
"resource_id_type": "Appointment",
"event_type": "appointment.patient_added",
"changed_fields": []
}

Fires when a patient is removed from an appointment.

  • Manually triggered when a patient is unassigned from the appointment
{
"resource_id": "67890",
"resource_id_type": "Appointment",
"event_type": "appointment.patient_removed",
"changed_fields": []
}

Fires when recording starts for an appointment.

  • Manually triggered when appointment recording begins
{
"resource_id": "67890",
"resource_id_type": "Appointment",
"event_type": "appointment.recording_started",
"changed_fields": []
}

Fires when recording stops for an appointment.

When an appointment recording stops

No GraphQL mutations trigger this webhook. Recording status is controlled by third-party services and triggered internally.

{
"resource_id": "67890",
"resource_id_type": "Appointment",
"event_type": "appointment.recording_stopped",
"changed_fields": []
}

Fires when a transcript becomes available for an appointment.

No GraphQL mutations trigger this webhook. Transcript availability is determined by third-party services and triggered internally.

{
"resource_id": "67890",
"resource_id_type": "Appointment",
"event_type": "appointment.transcript_available",
"changed_fields": []
}

Fires when an existing appointment is modified.

When updateAppointment mutation is called

  • updateAppointment
{
"resource_id": "67890",
"resource_id_type": "Appointment",
"event_type": "appointment.updated",
"changed_fields": ["date", "pm_status"],
"resource_organization_id": "org_123"
}

Fires when availability is deleted.

When deleteAvailability mutation is called

  • deleteAvailability
{
"resource_id": "40000",
"resource_id_type": "Availability",
"event_type": "availability.deleted",
"changed_fields": []
}

Fires when availability is updated.

  • updateAvailability
{
"resource_id": "40000",
"resource_id_type": "Availability",
"event_type": "availability.updated",
"changed_fields": ["day_of_week"]
}

Fires when a tag is applied to a resource.

  • bulkApply
{
"resource_id": "18000",
"resource_id_type": "AppliedTag",
"event_type": "applied_tag.created",
"changed_fields": [],
"tag_id": "12000",
"user_id": "22222"
}
  • tag_id: ID of the tag that was applied
  • user_id: ID of the user the tag was applied to

Fires when a tag is removed from a resource.

  • When removeAppliedTag mutation is called
  • removeAppliedTag
{
"resource_id": "18000",
"resource_id_type": "AppliedTag",
"event_type": "applied_tag.deleted",
"changed_fields": [],
"tag_id": "12000",
"user_id": "22222"
}
  • tag_id: ID of the tag that was removed
  • user_id: ID of the user the tag was removed from

Fires when a course membership is created.

  • When createCourseMembership mutation is called
  • createCourseMembership
{
"resource_id": "41000",
"resource_id_type": "CourseMembership",
"event_type": "course_membership.created",
"changed_fields": []
}

Fires when a course membership is deleted.

  • deleteCourseMembership
{
"resource_id": "41000",
"resource_id_type": "CourseMembership",
"event_type": "course_membership.deleted",
"changed_fields": []
}

Fires when a course membership is updated.

When updateCourseMembership mutation is called

  • updateCourseMembership
{
"resource_id": "41000",
"resource_id_type": "CourseMembership",
"event_type": "course_membership.updated",
"changed_fields": ["progress"]
}

Fires when a feature toggle is created.

  • createFeatureToggle
{
"resource_id": "52000",
"resource_id_type": "FeatureToggle",
"event_type": "feature_toggle.created",
"changed_fields": [],
"care_plan_id": "23000",
"user_id": "22222",
"user_group_id": "15000"
}
  • care_plan_id: ID of the care plan this toggle is associated with (nullable)
  • user_id: ID of the user this toggle is associated with (nullable)
  • user_group_id: ID of the user group this toggle is associated with (nullable)

Fires when a feature toggle is deleted.

  • deleteFeatureToggle
{
"resource_id": "52000",
"resource_id_type": "FeatureToggle",
"event_type": "feature_toggle.deleted",
"changed_fields": [],
"care_plan_id": "23000",
"user_id": "22222",
"user_group_id": "15000"
}
  • care_plan_id: ID of the care plan this toggle was associated with (nullable)
  • user_id: ID of the user this toggle was associated with (nullable)
  • user_group_id: ID of the user group this toggle was associated with (nullable)

Fires when a feature toggle is updated.

  • updateFeatureToggle
{
"resource_id": "52000",
"resource_id_type": "FeatureToggle",
"event_type": "feature_toggle.updated",
"changed_fields": ["enabled"],
"care_plan_id": "23000",
"user_id": "22222",
"user_group_id": "15000"
}
  • care_plan_id: ID of the care plan this toggle is associated with (nullable)
  • user_id: ID of the user this toggle is associated with (nullable)
  • user_group_id: ID of the user group this toggle is associated with (nullable)

Fires when a notification contact is created.

  • createNotificationContact
{
"resource_id": "49000",
"resource_id_type": "NotificationContact",
"event_type": "notification_contact.created",
"changed_fields": [],
"linked_client_id": "22222",
"user_id": "22222"
}
  • linked_client_id: ID of the linked client associated with this contact (nullable)
  • user_id: ID of the provider/user this notification contact belongs to

Fires when a notification contact is deleted.

When deleteNotificationContact mutation is called

  • deleteNotificationContact
{
"resource_id": "49000",
"resource_id_type": "NotificationContact",
"event_type": "notification_contact.deleted",
"changed_fields": [],
"linked_client_id": "22222",
"user_id": "22222"
}
  • linked_client_id: ID of the linked client associated with this contact (nullable)
  • user_id: ID of the provider/user this notification contact belonged to

Fires when a notification contact is updated.

When updateNotificationContact mutation is called

  • updateNotificationContact
{
"resource_id": "49000",
"resource_id_type": "NotificationContact",
"event_type": "notification_contact.updated",
"changed_fields": ["email"],
"linked_client_id": "22222",
"user_id": "22222"
}
  • linked_client_id: ID of the linked client associated with this contact (nullable)
  • user_id: ID of the provider/user this notification contact belongs to

Fires when a notification setting is created.

Automatically created when notification preferences are configured

No GraphQL mutations trigger notification setting creation. Settings are created automatically through internal mechanisms.

{
"resource_id": "56000",
"resource_id_type": "NotificationSetting",
"event_type": "notification_setting.created",
"changed_fields": [],
"user_id": "22222"
}
  • user_id: ID of the user this notification setting belongs to (nullable)

Fires when a notification setting is deleted.

Triggers internally at custom requests

No graphql mutations trigger this.

{
"resource_id": "56000",
"resource_id_type": "NotificationSetting",
"event_type": "notification_setting.deleted",
"changed_fields": [],
"user_id": "22222"
}
  • user_id: ID of the user this notification setting belonged to (nullable)

Fires when a notification setting is updated.

  • updateNotificationSetting
{
"resource_id": "56000",
"resource_id_type": "NotificationSetting",
"event_type": "notification_setting.updated",
"changed_fields": ["enabled"],
"user_id": "22222"
}
  • user_id: ID of the user this notification setting belongs to (nullable)

Fires when an alternate ID is added to a provider.

  • After an OtherIdNumber record is created (triggered internally)

No dedicated mutation exists for OtherIdNumber. Other ID numbers are created as nested inputs within createCms1500 and updateCms1500 mutations.

{
"resource_id": "38000",
"resource_id_type": "OtherIdNumber",
"event_type": "other_id_number.created",
"changed_fields": []
}

Fires when an alternate ID is removed.

  • After an OtherIdNumber record is destroyed (triggered internally)

No mutation exists for deleting OtherIdNumber records. Deletions are handled internally.

{
"resource_id": "38000",
"resource_id_type": "OtherIdNumber",
"event_type": "other_id_number.deleted",
"changed_fields": []
}

Fires when an alternate ID is updated.

  • After an OtherIdNumber record is updated (triggered internally)

No dedicated mutation exists for OtherIdNumber. Other ID numbers are updated as nested inputs within updateCms1500 mutation.

{
"resource_id": "38000",
"resource_id_type": "OtherIdNumber",
"event_type": "other_id_number.updated",
"changed_fields": ["id_number"]
}

Fires when a new patient is created.

When createClient, completeCheckout, or createNotificationContact mutation is called

  • createClient - Creates a new patient/client record
  • completeCheckout - Completes a checkout process which can create a patient
  • createNotificationContact - Creates a notification contact which can trigger patient creation
{
"resource_id": "45678",
"resource_id_type": "User",
"event_type": "patient.created",
"changed_fields": []
}

Fires when two patient records are merged.

When two patient records are merged together

  • mergeClients
{
"resource_id": "45678",
"resource_id_type": "User",
"event_type": "patient.merged",
"changed_fields": [],
"destination_user_id": "1234",
"source_user_id": "5678"
}

Fires when an existing patient is modified.

When updateClient, bulkUpdateClients, or toggleCarePlanStatusForSpecificUser mutation is called, or when patient fields are modified through form submissions or appointment check-ins

  • updateClient - Updates a patient/client record
  • bulkUpdateClients - Updates multiple patient records at once
  • toggleCarePlanStatusForSpecificUser - Activates/deactivates a care plan for a specific patient
  • Also fires when form submissions or appointment check-ins update patient fields
{
"resource_id": "45678",
"resource_id_type": "User",
"event_type": "patient.updated",
"changed_fields": ["first_name", "email"]
}

appointment_form_answer_group_connection.created

Section titled “appointment_form_answer_group_connection.created”

Fires when a form is connected to an appointment.

{
"resource_id": "42000",
"resource_id_type": "AppointmentFormAnswerGroupConnection",
"event_type": "appointment_form_answer_group_connection.created",
"changed_fields": [],
"appointment_id": "10000",
"form_answer_group_id": "14000"
}
  • appointment_id: ID of the appointment this form is connected to
  • form_answer_group_id: ID of the form answer group connected to this appointment

appointment_form_answer_group_connection.deleted

Section titled “appointment_form_answer_group_connection.deleted”

Fires when a form is disconnected from an appointment.

{
"resource_id": "42000",
"resource_id_type": "AppointmentFormAnswerGroupConnection",
"event_type": "appointment_form_answer_group_connection.deleted",
"changed_fields": [],
"appointment_id": "10000",
"form_answer_group_id": "14000"
}
  • appointment_id: ID of the appointment this form was connected to
  • form_answer_group_id: ID of the form answer group that was connected to this appointment

appointment_form_answer_group_connection.updated

Section titled “appointment_form_answer_group_connection.updated”

Fires when a form-appointment connection is updated.

When a form-appointment connection is updated

{
"resource_id": "42000",
"resource_id_type": "AppointmentFormAnswerGroupConnection",
"event_type": "appointment_form_answer_group_connection.updated",
"changed_fields": [],
"appointment_id": "10000",
"form_answer_group_id": "14000"
}
  • appointment_id: ID of the appointment this form is connected to
  • form_answer_group_id: ID of the form answer group connected to this appointment

Fires when an onboarding item is completed.

  • createCompletedOnboardingItem
{
"resource_id": "39000",
"resource_id_type": "CompletedOnboardingItem",
"event_type": "completed_onboarding_item.created",
"changed_fields": []
}

Fires when a completed onboarding item is deleted.

After a CompletedOnboardingItem record is destroyed (triggered internally)

No delete mutation exists for CompletedOnboardingItem. Deletions are handled internally.

{
"resource_id": "39000",
"resource_id_type": "CompletedOnboardingItem",
"event_type": "completed_onboarding_item.deleted",
"changed_fields": []
}

Fires when a completed onboarding item is updated.

After a CompletedOnboardingItem record is updated (triggered internally)

No update mutation exists for CompletedOnboardingItem. Updates are handled internally.

{
"resource_id": "39000",
"resource_id_type": "CompletedOnboardingItem",
"event_type": "completed_onboarding_item.updated",
"changed_fields": ["response"]
}

Fires when a custom module form is created.

When createCustomModuleForm mutation is called

  • createCustomModuleForm
{
"resource_id": "44000",
"resource_id_type": "CustomModuleForm",
"event_type": "custom_module_form.created",
"changed_fields": []
}

Fires when a custom module form is deleted.

When deleteCustomModuleForm mutation is called

  • deleteCustomModuleForm
{
"resource_id": "44000",
"resource_id_type": "CustomModuleForm",
"event_type": "custom_module_form.deleted",
"changed_fields": []
}

Fires when a custom module form is updated.

When updateCustomModuleForm mutation is called

  • updateCustomModuleForm
{
"resource_id": "44000",
"resource_id_type": "CustomModuleForm",
"event_type": "custom_module_form.updated",
"changed_fields": ["name"]
}

Fires when a custom module is created.

When createCustomModule mutation is called

  • createCustomModule
{
"resource_id": "45000",
"resource_id_type": "CustomModule",
"event_type": "custom_module.created",
"changed_fields": [],
"custom_module_form_id": "31000"
}
  • custom_module_form_id: ID of the custom module form this module belongs to (nullable)

Fires when a custom module is deleted.

When deleteCustomModule mutation is called

  • deleteCustomModule
{
"resource_id": "45000",
"resource_id_type": "CustomModule",
"event_type": "custom_module.deleted",
"changed_fields": [],
"custom_module_form_id": "31000"
}
  • custom_module_form_id: ID of the custom module form this module belonged to (nullable)

Fires when a custom module is updated.

When updateCustomModule mutation is called

  • updateCustomModule
{
"resource_id": "45000",
"resource_id_type": "CustomModule",
"event_type": "custom_module.updated",
"changed_fields": ["label"],
"custom_module_form_id": "31000"
}
  • custom_module_form_id: ID of the custom module form this module belongs to (nullable)

Fires when a form submission is created.

  • createFormAnswerGroup
{
"resource_id": "98765",
"resource_id_type": "FormAnswerGroup",
"event_type": "form_answer_group.created",
"changed_fields": []
}

Fires when a form submission is deleted.

When deleteFormAnswerGroup mutation is called

  • deleteFormAnswerGroup
{
"resource_id": "98765",
"resource_id_type": "FormAnswerGroup",
"event_type": "form_answer_group.deleted",
"changed_fields": []
}

Fires when a form submission is locked.

When lockFormAnswerGroup mutation is called

  • lockFormAnswerGroup
{
"resource_id": "98765",
"resource_id_type": "FormAnswerGroup",
"event_type": "form_answer_group.locked",
"changed_fields": []
}

Fires when a form submission is signed.

  • createFormAnswerGroupSigning
{
"resource_id": "98765",
"resource_id_type": "FormAnswerGroup",
"event_type": "form_answer_group.signed",
"changed_fields": []
}

Fires when a form submission is unlocked.

When unlockFormAnswerGroup mutation is called

  • unlockFormAnswerGroup
{
"resource_id": "98765",
"resource_id_type": "FormAnswerGroup",
"event_type": "form_answer_group.unlocked",
"changed_fields": []
}

Fires when a generated form answer group is created.

{
"resource_id": "11223",
"resource_id_type": "GeneratedFormAnswerGroup",
"event_type": "generated_form_answer_group.created",
"changed_fields": [],
"patient_id": "22222"
}
  • patient_id: ID of the patient this generated form answer group belongs to

Fires when a form is requested to be completed.

  • createRequestedFormCompletion
{
"resource_id": "15000",
"resource_id_type": "RequestedFormCompletion",
"event_type": "requested_form_completion.created",
"changed_fields": []
}

Fires when a requested form completion is deleted.

When a requested form completion is deleted

  • deleteRequestedForm
{
"resource_id": "15000",
"resource_id_type": "RequestedFormCompletion",
"event_type": "requested_form_completion.deleted",
"changed_fields": []
}

Fires when a requested form completion is updated.

When a requested form completion is updated

  • `
{
"resource_id": "15000",
"resource_id_type": "RequestedFormCompletion",
"event_type": "requested_form_completion.updated",
"changed_fields": ["is_complete"]
}

Fires when a user is added to a conversation.

When createConversationMembership mutation is called

  • createConversationMembership
{
"resource_id": "14000",
"resource_id_type": "ConversationMembership",
"event_type": "conversation_membership.created",
"changed_fields": []
}

Fires when a user is removed from a conversation.

When deleteConversationMembership mutation is called

  • deleteConversationMembership
{
"resource_id": "14000",
"resource_id_type": "ConversationMembership",
"event_type": "conversation_membership.deleted",
"changed_fields": []
}

Fires when a user views a conversation.

No GraphQL mutations trigger the conversation_membership.viewed webhook. Viewing status is updated through internal mechanisms.

{
"resource_id": "14000",
"resource_id_type": "ConversationMembership",
"event_type": "conversation_membership.viewed",
"changed_fields": []
}

Fires when a new conversation is started.

When a new conversation is started

  • createConversation
{
"resource_id": "13000",
"resource_id_type": "Conversation",
"event_type": "conversation.created",
"changed_fields": []
}

Fires when a conversation is updated.

When updateConversation mutation is called

  • updateConversation
{
"resource_id": "13000",
"resource_id_type": "Conversation",
"event_type": "conversation.updated",
"changed_fields": ["name"]
}

Fires when a new message is sent.

When createNote mutation is called

  • createNote
{
"resource_id": "55443",
"resource_id_type": "Note",
"event_type": "message.created",
"changed_fields": []
}

Fires when a message is deleted.

When deleteNote mutation is called

  • deleteNote
{
"resource_id": "55443",
"resource_id_type": "Note",
"event_type": "message.deleted",
"changed_fields": []
}

Fires when a scheduled message is sent.

{
"resource_id": "46000",
"resource_id_type": "NoteScheduler",
"event_type": "scheduled_message.sent",
"changed_fields": []
}

Fires when an accepted insurance plan is added.

  • createAcceptedInsurancePlan
{
"resource_id": "47000",
"resource_id_type": "AcceptedInsurancePlan",
"event_type": "accepted_insurance_plan.created",
"changed_fields": []
}

Fires when an accepted insurance plan is removed.

  • deleteAcceptedInsurancePlan
{
"resource_id": "47000",
"resource_id_type": "AcceptedInsurancePlan",
"event_type": "accepted_insurance_plan.deleted",
"changed_fields": []
}

Fires when a new billing item is created.

When createBillingItem mutation is called

  • createBillingItem
  • completeCheckout
{
"resource_id": "55555",
"resource_id_type": "BillingItem",
"event_type": "billing_item.created",
"changed_fields": [],
"requested_payment_id": "40000"
}
  • requested_payment_id: ID of the requested payment this billing item was created for (nullable)

Fires when a billing item is deleted.

When deleteBillingItem mutation is called

  • deleteBillingItem
{
"resource_id": "55555",
"resource_id_type": "BillingItem",
"event_type": "billing_item.deleted",
"changed_fields": [],
"requested_payment_id": "40000"
}
  • requested_payment_id: ID of the requested payment this billing item was created for (nullable)

Fires when a billing item is updated.

When updateBillingItem mutation is called

  • updateBillingItem
{
"resource_id": "55555",
"resource_id_type": "BillingItem",
"event_type": "billing_item.updated",
"changed_fields": ["amount", "code"],
"requested_payment_id": "40000"
}
  • requested_payment_id: ID of the requested payment this billing item was created for (nullable)

Fires when a chargeback is created.

No GraphQL mutations directly trigger this webhook. It’s triggered internally when a chargeback is created by the payment processor.

{
"resource_id": "54000",
"resource_id_type": "ChargeBack",
"event_type": "charge_back.created",
"changed_fields": [],
"billing_item_id": "55555"
}
  • billing_item_id: ID of the billing item this chargeback is associated with

Fires when a chargeback is deleted.

No GraphQL mutations directly trigger this webhook. It’s triggered internally when a chargeback is deleted by the payment processor.

{
"resource_id": "54000",
"resource_id_type": "ChargeBack",
"event_type": "charge_back.deleted",
"changed_fields": [],
"billing_item_id": "55555"
}
  • billing_item_id: ID of the billing item this chargeback was associated with

Fires when a chargeback is updated.

  • updateChargeBack
{
"resource_id": "54000",
"resource_id_type": "ChargeBack",
"event_type": "charge_back.updated",
"changed_fields": ["status"],
"billing_item_id": "55555"
}
  • billing_item_id: ID of the billing item this chargeback is associated with

Fires when a claim submission is created.

When a claim submission is created

{
"resource_id": "55000",
"resource_id_type": "ClaimSubmission",
"event_type": "claim_submission.created",
"changed_fields": [],
"cms1500_id": "32000"
}
  • cms1500_id: ID of the CMS 1500 form associated with this claim submission

Fires when a claim submission is deleted.

  • After a ClaimSubmission record is destroyed (triggered internally)

No mutation exists for deleting ClaimSubmission records. Deletions are handled internally.

{
"resource_id": "55000",
"resource_id_type": "ClaimSubmission",
"event_type": "claim_submission.deleted",
"changed_fields": [],
"cms1500_id": "32000"
}
  • cms1500_id: ID of the CMS 1500 form associated with this claim submission

Fires when a claim submission is updated.

{
"resource_id": "55000",
"resource_id_type": "ClaimSubmission",
"event_type": "claim_submission.updated",
"changed_fields": ["status"],
"cms1500_id": "32000"
}
  • cms1500_id: ID of the CMS 1500 form associated with this claim submission

Fires when a CMS1500 is created.

When a CMS1500 is created

  • createCms1500
{
"resource_id": "88888",
"resource_id_type": "Cms1500",
"event_type": "cms1500.created",
"changed_fields": []
}

Fires when a CMS1500 form is deleted.

When a CMS1500 is deleted

  • deleteCms1500
{
"resource_id": "88888",
"resource_id_type": "Cms1500",
"event_type": "cms1500.deleted",
"changed_fields": []
}

Fires when a CMS1500 updated.

When a CMS1500 is updated

  • updateCms1500
{
"resource_id": "88888",
"resource_id_type": "Cms1500",
"event_type": "cms1500.updated",
"changed_fields": ["status"]
}

Fires when an insurance authorization is created.

When createInsuranceAuthorization mutation is called

  • createInsuranceAuthorization
{
"resource_id": "17000",
"resource_id_type": "InsuranceAuthorization",
"event_type": "insurance_authorization.created",
"changed_fields": []
}

Fires when an insurance authorization is deleted.

When deleteInsuranceAuthorization mutation is called

  • deleteInsuranceAuthorization
{
"resource_id": "17000",
"resource_id_type": "InsuranceAuthorization",
"event_type": "insurance_authorization.deleted",
"changed_fields": []
}

Fires when an insurance authorization is updated.

When updateInsuranceAuthorization mutation is called

  • updateInsuranceAuthorization
{
"resource_id": "17000",
"resource_id_type": "InsuranceAuthorization",
"event_type": "insurance_authorization.updated",
"changed_fields": ["units_authorized"]
}

Fires when an insurance policy is created.

  • updateClient
{
"resource_id": "16000",
"resource_id_type": "Policy",
"event_type": "policy.created",
"changed_fields": []
}

Fires when an insurance policy is deleted.

  • updateClient
{
"resource_id": "16000",
"resource_id_type": "Policy",
"event_type": "policy.deleted",
"changed_fields": []
}

Fires when an insurance policy is updated.

When updatePolicy mutation is called

  • updatePolicy
{
"resource_id": "16000",
"resource_id_type": "Policy",
"event_type": "policy.updated",
"changed_fields": ["holder_relationship"]
}

Fires when a recurring payment is set up.

When a recurring payment is created via internal mechanisms

  • createBillingItem
{
"resource_id": "77777",
"resource_id_type": "RecurringPayment",
"event_type": "recurring_payment.created",
"changed_fields": []
}

Fires when a recurring payment is modified.

  • When updateBillingItem or cancelRecurringPayment mutation is called
  • updateBillingItem
  • cancelRecurringPayment
{
"resource_id": "77777",
"resource_id_type": "RecurringPayment",
"event_type": "recurring_payment.updated",
"changed_fields": ["amount"]
}

Fires when a payment request is created.

  • createRequestedPayment
{
"resource_id": "66666",
"resource_id_type": "RequestedPayment",
"event_type": "requested_payment.created",
"changed_fields": []
}

Fires when a payment request is deleted.

When deleteRequestedPayment mutation is called

  • deleteRequestedPayment
{
"resource_id": "66666",
"resource_id_type": "RequestedPayment",
"event_type": "requested_payment.deleted",
"changed_fields": []
}

Fires when a payment request is updated.

When updateRequestedPayment mutation is called

  • updateRequestedPayment
{
"resource_id": "66666",
"resource_id_type": "RequestedPayment",
"event_type": "requested_payment.updated",
"changed_fields": ["is_paid"]
}

Fires when Stripe customer details are created.

  • createStripeCustomerDetail
{
"resource_id": "48000",
"resource_id_type": "StripeCustomerDetail",
"event_type": "stripe_customer_detail.created",
"changed_fields": [],
"user_id": "22222"
}
  • user_id: ID of the user these Stripe customer details belong to

Fires when Stripe customer details are deleted.

  • deleteStripeCustomerDetail
{
"resource_id": "48000",
"resource_id_type": "StripeCustomerDetail",
"event_type": "stripe_customer_detail.deleted",
"changed_fields": [],
"user_id": "22222"
}
  • user_id: ID of the user these Stripe customer details belonged to

Fires when Stripe customer details are updated.

  • updateStripeCustomerDetail
{
"resource_id": "48000",
"resource_id_type": "StripeCustomerDetail",
"event_type": "stripe_customer_detail.updated",
"changed_fields": ["stripe_id"],
"user_id": "22222"
}
  • user_id: ID of the user these Stripe customer details belong to

Fires when a superbill is created.

When createSuperBill mutation is called

  • createSuperBill
{
"resource_id": "53000",
"resource_id_type": "SuperBill",
"event_type": "super_bill.created",
"changed_fields": [],
"patient_id": "22222"
}
  • patient_id: ID of the patient this superbill is for (nullable)

Fires when a superbill is deleted.

When deleteSuperBill mutation is called

  • deleteSuperBill
{
"resource_id": "53000",
"resource_id_type": "SuperBill",
"event_type": "super_bill.deleted",
"changed_fields": [],
"patient_id": "22222"
}
  • patient_id: ID of the patient this superbill was for (nullable)

Fires when a superbill is updated.

  • updateSuperBill
{
"resource_id": "53000",
"resource_id_type": "SuperBill",
"event_type": "super_bill.updated",
"changed_fields": ["status"],
"patient_id": "22222"
}
  • patient_id: ID of the patient this superbill is for (nullable)

Fires when an allergy or sensitivity is recorded.

When createAllergySensitivity mutation is called

  • createAllergySensitivity
{
"resource_id": "25000",
"resource_id_type": "AllergySensitivity",
"event_type": "allergy_sensitivity.created",
"changed_fields": [],
"user_id": "22222"
}
  • user_id: ID of the patient this allergy or sensitivity belongs to

Fires when an allergy or sensitivity is removed.

When deleteAllergySensitivity mutation is called

  • deleteAllergySensitivity
{
"resource_id": "25000",
"resource_id_type": "AllergySensitivity",
"event_type": "allergy_sensitivity.deleted",
"changed_fields": [],
"user_id": "22222"
}
  • user_id: ID of the patient this allergy or sensitivity belonged to

Fires when an allergy or sensitivity is updated.

When updateAllergySensitivity mutation is called

  • updateAllergySensitivity
{
"resource_id": "25000",
"resource_id_type": "AllergySensitivity",
"event_type": "allergy_sensitivity.updated",
"changed_fields": ["category"],
"user_id": "22222"
}
  • user_id: ID of the patient this allergy or sensitivity belongs to

Fires when a care plan is activated.

When a care plan is set as the active plan for a patient or user group

{
"resource_id": "23000",
"resource_id_type": "CarePlan",
"event_type": "care_plan.activated",
"changed_fields": []
}

Fires when a care plan is created.

When createCarePlan mutation is called

  • createCarePlan
{
"resource_id": "23000",
"resource_id_type": "CarePlan",
"event_type": "care_plan.created",
"changed_fields": [],
"patient_id": "22222",
"user_group_id": "15000"
}
  • patient_id: ID of the patient this care plan belongs to (nullable)
  • user_group_id: ID of the user group this care plan belongs to (nullable)

Fires when a care plan is deactivated.

When a care plan is removed as the active plan

{
"resource_id": "23000",
"resource_id_type": "CarePlan",
"event_type": "care_plan.deactivated",
"changed_fields": []
}

Fires when a care plan is deleted.

When deleteCarePlan mutation is called

  • deleteCarePlan
{
"resource_id": "23000",
"resource_id_type": "CarePlan",
"event_type": "care_plan.deleted",
"changed_fields": [],
"patient_id": "22222",
"user_group_id": "15000"
}
  • patient_id: ID of the patient this care plan belonged to (nullable)
  • user_group_id: ID of the user group this care plan belonged to (nullable)

Fires when a care plan is updated.

When updateCarePlan mutation is called

  • updateCarePlan
{
"resource_id": "23000",
"resource_id_type": "CarePlan",
"event_type": "care_plan.updated",
"changed_fields": ["name"],
"patient_id": "22222",
"user_group_id": "15000"
}
  • patient_id: ID of the patient this care plan belongs to (nullable)
  • user_group_id: ID of the user group this care plan belongs to (nullable)

Fires when an addendum is added to a charting note.

When createAddendum mutation is called

  • createAddendum
{
"resource_id": "28000",
"resource_id_type": "ChartingNoteAddendum",
"event_type": "charting_note_addendum.created",
"changed_fields": []
}

Fires when a charting note addendum is deleted.

When a charting note addendum is destroyed

{
"resource_id": "28000",
"resource_id_type": "ChartingNoteAddendum",
"event_type": "charting_note_addendum.deleted",
"changed_fields": []
}

Fires when a charting note addendum is updated.

{
"resource_id": "28000",
"resource_id_type": "ChartingNoteAddendum",
"event_type": "charting_note_addendum.updated",
"changed_fields": ["content"]
}

Fires when a diagnosis is added.

{
"resource_id": "26000",
"resource_id_type": "Diagnosis",
"event_type": "diagnosis.created",
"changed_fields": [],
"icd_code_id": "67890",
"user_id": "22222"
}

Fires when a diagnosis is removed.

{
"resource_id": "26000",
"resource_id_type": "Diagnosis",
"event_type": "diagnosis.deleted",
"changed_fields": [],
"icd_code_id": "67890",
"user_id": "22222"
}

Fires when a diagnosis is updated.

{
"resource_id": "26000",
"resource_id_type": "Diagnosis",
"event_type": "diagnosis.updated",
"changed_fields": ["code"],
"icd_code_id": "67890",
"user_id": "22222"
}

Fires when a DoseSpot notification is received.

No GraphQL mutations trigger this webhook. It’s triggered by external notifications from DoseSpot’s prescription system.

{
"resource_id": "29000",
"resource_id_type": "DosespotNotification",
"event_type": "dosespot_notification.created",
"changed_fields": []
}

Fires when a new journal entry is created.

  • createEntry
{
"resource_id": "22222",
"resource_id_type": "Entry",
"event_type": "entry.created",
"changed_fields": []
}

Fires when a journal entry is deleted.

When deleteEntry mutation is called

  • deleteEntry
{
"resource_id": "22222",
"resource_id_type": "Entry",
"event_type": "entry.deleted",
"changed_fields": []
}

Fires when a journal entry is updated.

  • updateEntry
{
"resource_id": "22222",
"resource_id_type": "Entry",
"event_type": "entry.updated",
"changed_fields": ["description"]
}

Fires when a family history condition is recorded.

  • createFamilyHistory
{
"resource_id": "27000",
"resource_id_type": "FamilyHistoryCondition",
"event_type": "family_history_condition.created",
"changed_fields": [],
"user_id": "22222"
}
  • user_id: ID of the patient this family history condition belongs to

Fires when a family history condition is removed.

  • deleteFamilyHistory
{
"resource_id": "27000",
"resource_id_type": "FamilyHistoryCondition",
"event_type": "family_history_condition.deleted",
"changed_fields": [],
"user_id": "22222"
}
  • user_id: ID of the patient this family history condition belonged to

Fires when a family history condition is updated.

  • updateFamilyHistory
{
"resource_id": "27000",
"resource_id_type": "FamilyHistoryCondition",
"event_type": "family_history_condition.updated",
"changed_fields": ["deceased"],
"user_id": "22222"
}
  • user_id: ID of the patient this family history condition belongs to

Fires when goal history is recorded.

  • When createGoalHistory mutation is called
  • createGoalHistory
{
"resource_id": "44444",
"resource_id_type": "GoalHistory",
"event_type": "goal_history.created",
"changed_fields": [],
"goal_id": "33333",
"user_id": "22222"
}
  • goal_id: ID of the goal this history entry belongs to
  • user_id: ID of the user who recorded the goal history

Fires when goal history is deleted.

  • deleteGoalHistory
{
"resource_id": "44444",
"resource_id_type": "GoalHistory",
"event_type": "goal_history.deleted",
"changed_fields": [],
"goal_id": "33333",
"user_id": "22222"
}
  • goal_id: ID of the goal this history entry belonged to
  • user_id: ID of the user who recorded the goal history

Fires when a goal template is created.

No GraphQL mutations trigger goal template creation directly. Goal templates are created internally when goals are favorited via createGoal.

{
"resource_id": "24000",
"resource_id_type": "GoalTemplate",
"event_type": "goal_template.created",
"changed_fields": [],
"goal_id": "33333",
"parent_id": "11111",
"user_id": "22222"
}
  • goal_id: ID of the goal this template was created from (nullable)
  • parent_id: ID of the parent goal template for sub-templates (nullable)
  • user_id: ID of the user this template belongs to (nullable)

Fires when a goal template is deleted.

No GraphQL mutations directly trigger this webhook. Goal templates are managed internally through the UI.

{
"resource_id": "24000",
"resource_id_type": "GoalTemplate",
"event_type": "goal_template.deleted",
"changed_fields": [],
"goal_id": "33333",
"parent_id": "11111",
"user_id": "22222"
}
  • goal_id: ID of the goal this template was created from (nullable)
  • parent_id: ID of the parent goal template for sub-templates (nullable)
  • user_id: ID of the user this template belonged to (nullable)

Fires when a goal template is updated.

No GraphQL mutations directly trigger this webhook. Goal templates are managed internally through the UI.

{
"resource_id": "24000",
"resource_id_type": "GoalTemplate",
"event_type": "goal_template.updated",
"changed_fields": ["name"],
"goal_id": "33333",
"parent_id": "11111",
"user_id": "22222"
}
  • goal_id: ID of the goal this template was created from (nullable)
  • parent_id: ID of the parent goal template for sub-templates (nullable)
  • user_id: ID of the user this template belongs to (nullable)

Fires when a new goal is created for a patient.

  • createGoal
{
"resource_id": "33333",
"resource_id_type": "Goal",
"event_type": "goal.created",
"changed_fields": [],
"care_plan_id": "67890",
"parent_id": "11111",
"user_id": "22222"
}
  • care_plan_id: ID of the care plan this goal belongs to
  • parent_id: ID of the parent goal (for subgoals)
  • user_id: ID of the patient this goal is assigned to

Fires when a goal is deleted.

When deleteGoal mutation is called

  • deleteGoal
{
"resource_id": "33333",
"resource_id_type": "Goal",
"event_type": "goal.deleted",
"changed_fields": [],
"care_plan_id": "67890",
"parent_id": "11111",
"user_id": "22222"
}
  • care_plan_id: ID of the care plan this goal belonged to (nullable)
  • parent_id: ID of the parent goal for subgoals (nullable)
  • user_id: ID of the patient this goal was assigned to

Fires when a goal is updated.

  • updateGoal
{
"resource_id": "33333",
"resource_id_type": "Goal",
"event_type": "goal.updated",
"changed_fields": ["name", "repeat"]
}

Since Goal includes webhook association data, the actual payload will also contain:

{
"resource_id": "33333",
"resource_id_type": "Goal",
"event_type": "goal.updated",
"changed_fields": ["name", "repeat"],
"care_plan_id": "67890",
"parent_id": "11111",
"user_id": "22222"
}

These additional fields are included in the webhook payload.


Fires when a lab order is created.

When createLabOrder mutation is called

  • createLabOrder
{
"resource_id": "19000",
"resource_id_type": "LabOrder",
"event_type": "lab_order.created",
"changed_fields": []
}

Fires when a lab order is updated.

When updateLabOrder mutation is called

  • updateLabOrder
{
"resource_id": "19000",
"resource_id_type": "LabOrder",
"event_type": "lab_order.updated",
"changed_fields": ["status"]
}

Fires when a lab result is received.

When createLabResult mutation is called

  • createLabResult
{
"resource_id": "20000",
"resource_id_type": "LabResult",
"event_type": "lab_result.created",
"changed_fields": [],
"lab_order_id": "16000",
"document_id": "17000",
"patient_id": "22222",
"ordering_physician_id": "19000"
}
  • lab_order_id: ID of the lab order this result belongs to
  • document_id: ID of the document associated with this lab result
  • patient_id: ID of the patient this lab result belongs to (nullable)
  • ordering_physician_id: ID of the ordering physician

Fires when a lab result is updated.

  • updateLabResult
{
"resource_id": "20000",
"resource_id_type": "LabResult",
"event_type": "lab_result.updated",
"changed_fields": ["file_string"],
"lab_order_id": "16000",
"document_id": "17000",
"patient_id": "22222",
"ordering_physician_id": "19000"
}
  • lab_order_id: ID of the lab order this result belongs to
  • document_id: ID of the document associated with this lab result
  • patient_id: ID of the patient this lab result belongs to (nullable)
  • ordering_physician_id: ID of the ordering physician

Fires when a medication is added to a patient’s profile.

This webhook is triggered by the following GraphQL mutations:

  • createMedication
{
"resource_id": "21000",
"resource_id_type": "Medication",
"event_type": "medication.created",
"changed_fields": []
}

Since Medication includes webhook association data, the actual payload will also contain:

{
"resource_id": "21000",
"resource_id_type": "Medication",
"event_type": "medication.created",
"changed_fields": [],
"user_id": "22222"
}

The user_id field is included in the webhook payload.


Fires when a medication is removed.

  • deleteMedication
{
"resource_id": "21000",
"resource_id_type": "Medication",
"event_type": "medication.deleted",
"changed_fields": [],
"user_id": "22222"
}

The user_id field is included in the webhook payload.


Fires when a medication is modified.

This webhook is triggered by the following GraphQL mutations:

  • updateMedication
{
"resource_id": "21000",
"resource_id_type": "Medication",
"event_type": "medication.updated",
"changed_fields": ["active"]
}

Since Medication includes webhook association data, the actual payload will also contain:

{
"resource_id": "21000",
"resource_id_type": "Medication",
"event_type": "medication.updated",
"changed_fields": [],
"user_id": "22222"
}

The user_id field is included in the webhook payload.


Fires when a new metric entry is created.

  • createEntry
{
"resource_id": "11111",
"resource_id_type": "Entry",
"event_type": "metric_entry.created",
"changed_fields": []
}

Fires when a metric entry is deleted.

When deleteEntry mutation is called

  • deleteEntry
{
"resource_id": "11111",
"resource_id_type": "Entry",
"event_type": "metric_entry.deleted",
"changed_fields": []
}

Fires when a metric entry is updated.

When updateEntry mutation is called

  • updateEntry
{
"resource_id": "11111",
"resource_id_type": "Entry",
"event_type": "metric_entry.updated",
"changed_fields": ["value", "category"]
}

Fires when a prescription is updated.

When a prescription is updated

No GraphQL mutations trigger prescription updates directly. Prescriptions are updated through internal mechanisms or third-party integrations.

{
"resource_id": "22000",
"resource_id_type": "Prescription",
"event_type": "prescription.updated",
"changed_fields": ["status"]
}

Fires when a referral is created.

This webhook is triggered by the following GraphQL mutations:

  • createReferral
{
"resource_id": "32000",
"resource_id_type": "Referral",
"event_type": "referral.created",
"changed_fields": []
}

Fires when a referral is deleted.

When deleteReferral mutation is called

  • deleteReferral
{
"resource_id": "32000",
"resource_id_type": "Referral",
"event_type": "referral.deleted",
"changed_fields": []
}

Fires when a referral is updated.

This webhook is triggered by the following GraphQL mutations:

  • updateReferral
{
"resource_id": "32000",
"resource_id_type": "Referral",
"event_type": "referral.updated",
"changed_fields": ["status"]
}

Fires when a referring physician is added.

When a referring physician is added

  • createReferringPhysician
{
"resource_id": "33000",
"resource_id_type": "ReferringPhysician",
"event_type": "referring_physician.created",
"changed_fields": []
}

Fires when a referring physician is removed.

When a referring physician is removed

{
"resource_id": "33000",
"resource_id_type": "ReferringPhysician",
"event_type": "referring_physician.deleted",
"changed_fields": []
}

Fires when a referring physician is updated.

When a referring physician is updated

  • updateReferringPhysician
{
"resource_id": "33000",
"resource_id_type": "ReferringPhysician",
"event_type": "referring_physician.updated",
"changed_fields": ["business_name"]
}

Fires when a new document is uploaded.

  • createDocument
{
"resource_id": "99999",
"resource_id_type": "Document",
"event_type": "document.created",
"changed_fields": []
}

Fires when a document is deleted.

  • deleteDocument
{
"resource_id": "99999",
"resource_id_type": "Document",
"event_type": "document.deleted",
"changed_fields": []
}

Fires when a document is updated.

When updateDocument mutation is called

  • updateDocument
{
"resource_id": "99999",
"resource_id_type": "Document",
"event_type": "document.updated",
"changed_fields": ["display_name"]
}

Fires when a folder is shared.

  • createSharings
{
"resource_id": "50000",
"resource_id_type": "FolderSharing",
"event_type": "folder_sharing.created",
"changed_fields": [],
"folder_id": "30000",
"user_id": "22222"
}
  • folder_id: ID of the folder being shared
  • user_id: ID of the user the folder is shared with

Fires when folder sharing is removed.

  • destroySharings
{
"resource_id": "50000",
"resource_id_type": "FolderSharing",
"event_type": "folder_sharing.deleted",
"changed_fields": [],
"folder_id": "30000",
"user_id": "22222"
}
  • folder_id: ID of the folder that was shared
  • user_id: ID of the user the folder was shared with

Fires when a fax is received.

External webhook ingestion

{
"resource_id": "30000",
"resource_id_type": "ReceivedFax",
"event_type": "received_fax.created",
"changed_fields": []
}

Fires when a fax is sent.

When a fax is sent

  • createSentFax
{
"resource_id": "31000",
"resource_id_type": "SentFax",
"event_type": "sent_fax.created",
"changed_fields": []
}

Fires when a sent fax status changes.

When a fax transmission status changes

{
"resource_id": "31000",
"resource_id_type": "SentFax",
"event_type": "sent_fax.status_changed",
"changed_fields": []
}

Fires when a sent fax status is updated.

{
"resource_id": "31000",
"resource_id_type": "SentFax",
"event_type": "sent_fax.updated",
"changed_fields": ["status"]
}

Fires when a new task is created.

This webhook is triggered by the following GraphQL mutations:

  • createTask
{
"resource_id": "11000",
"resource_id_type": "Task",
"event_type": "task.created",
"changed_fields": []
}

Task does not have webhook association data configured, so no additional fields are included beyond the standard payload shown above.


Fires when a task is deleted.

  • deleteTask
{
"resource_id": "11000",
"resource_id_type": "Task",
"event_type": "task.deleted",
"changed_fields": []
}

Fires when a task is updated.

  • updateTask
{
"resource_id": "11000",
"resource_id_type": "Task",
"event_type": "task.updated",
"changed_fields": ["complete", "completed_by_id"]
}

Fires when availability is created.

This webhook is triggered by the following GraphQL mutations:

  • createAvailability
  • bulkCreateAvailability
{
"resource_id": "40000",
"resource_id_type": "Availability",
"event_type": "availability.created",
"changed_fields": []
}

Fires when a location is created.

This webhook is triggered by the following GraphQL mutations:

  • createLocation
{
"resource_id": "34000",
"resource_id_type": "Location",
"event_type": "location.created",
"changed_fields": []
}

Fires when a location is deleted.

This webhook is triggered by the following GraphQL mutations:

  • deleteLocation
{
"resource_id": "34000",
"resource_id_type": "Location",
"event_type": "location.deleted",
"changed_fields": []
}

Fires when a location is updated.

This webhook is triggered by the following GraphQL mutations:

  • updateLocation
{
"resource_id": "34000",
"resource_id_type": "Location",
"event_type": "location.updated",
"changed_fields": ["name", "line1"]
}

Fires when organization info is created.

  • createOrganization
{
"resource_id": "37000",
"resource_id_type": "OrganizationInfo",
"event_type": "organization_info.created",
"changed_fields": []
}

Fires when organization info is deleted.

  • deleteOrganizationInfo
{
"resource_id": "37000",
"resource_id_type": "OrganizationInfo",
"event_type": "organization_info.deleted",
"changed_fields": []
}

Fires when organization info is updated.

  • updateOrganization
{
"resource_id": "37000",
"resource_id_type": "OrganizationInfo",
"event_type": "organization_info.updated",
"changed_fields": ["name"]
}

Fires when an organization member is updated.

update, updateOrganizationMember

{
"resource_id": "36000",
"resource_id_type": "OrganizationMember",
"event_type": "organization_member.updated",
"changed_fields": []
}

Fires when an organization membership is created.

  • When createOrganizationMembership mutation is called
  • createOrganizationMembership
{
"resource_id": "35000",
"resource_id_type": "OrganizationMembership",
"event_type": "organization_membership.created",
"changed_fields": []
}

Fires when an organization membership is updated.

  • When updateOrganizationMembership mutation is called
  • updateOrganizationMembership
{
"resource_id": "35000",
"resource_id_type": "OrganizationMembership",
"event_type": "organization_membership.updated",
"changed_fields": ["user_group_id"]
}

Fires when a new comment is posted.

  • createComment
{
"resource_id": "12000",
"resource_id_type": "Comment",
"event_type": "comment.created",
"changed_fields": []
}

Fires when a comment is deleted.

  • deleteComment
{
"resource_id": "12000",
"resource_id_type": "Comment",
"event_type": "comment.deleted",
"changed_fields": []
}

Fires when a comment is edited.

When updateComment mutation is called

  • updateComment
{
"resource_id": "12000",
"resource_id_type": "Comment",
"event_type": "comment.updated",
"changed_fields": ["content"]
}

Fires when external calendar authorization encounters an error.

{
"resource_id": "43000",
"resource_id_type": "ExternalCalendar",
"event_type": "external_calendar.authorization_error",
"changed_fields": []
}

Fires when a notification is sent.

When a notification is sent

{
"resource_id": "51000",
"resource_id_type": "SentNotificationRecord",
"event_type": "sent_notification_record.created",
"changed_fields": []
}

Fires when a sent notification record is updated.

When a sent notification record is updated

{
"resource_id": "51000",
"resource_id_type": "SentNotificationRecord",
"event_type": "sent_notification_record.updated",
"changed_fields": ["status"]
}

Test webhook event used for verifying webhook configuration.

No GraphQL mutations trigger test webhooks. Test events are manually triggered for configuration verification only.

  • Used for webhook setup verification
  • Does not correspond to an actual resource
{
"resource_id": "12345",
"resource_id_type": "Test",
"event_type": "test.created",
"changed_fields": []
}