Webhooks are available on accounts created on PracticeHub 2.0. Existing accounts get them when they complete their move to 2.0 — until then, poll
deleted_entities and updated filters as before.Setting up an endpoint
1
Open the portal
In PracticeHub go to Developers → Webhooks → Manage endpoints. This opens the account’s webhook portal.
2
Add your endpoint
Enter your HTTPS URL, choose which event types it should receive (or all), and save. The portal shows the endpoint’s signing secret — copy it into your service.
3
Watch it work
The portal lists every delivery attempt with the response your endpoint returned, lets you replay any message, and can send a test event.
What you receive
Payloads are deliberately thin — the event type and the record’s id, never the record itself — so no clinical or personal data leaves PracticeHub through a webhook. Fetch the record from the API with your own key:id is unique per event — use it to de-duplicate, since a delivery may be retried after a timeout. Events for one record are not guaranteed to arrive in order; the record you fetch is always current.
Event types
Every resource below emits{resource}.created, {resource}.updated and {resource}.deleted (a delete or void). The full, current list — with the semantic appointment events — is on Developers → Webhooks and in the portal when you add an endpoint.
Several saves to one record within a single operation are reported once. A
patients.deleted or payments.deleted means the record was soft-deleted or voided — it will no longer be returned by the API.
Verifying signatures
Every delivery is signed. Verify it before trusting it — the signature scheme is Standard Webhooks, so use the library for your language with the endpoint’s signing secret from the portal:Delivery and retries
Respond with any2xx within a few seconds — do the work afterwards. Non-2xx responses and timeouts are retried with exponential backoff over roughly a day; an endpoint that keeps failing is disabled and you are notified in the portal, where you can re-enable it and replay what was missed.