Skip to main content

Webhooks

Webhooks notify your application in real-time when resources change. Every webhook payload is HMAC-SHA256 signed for security.

Setting Up Webhooks

  1. Go to Webhooks in the Developer Dashboard
  2. Click Create Webhook
  3. Enter your endpoint URL (must be HTTPS)
  4. Select which events to subscribe to
  5. Save — you’ll receive a webhook secret for signature verification

Event Format

Events follow the pattern {resource}.{action}:

Payload Structure

Headers

Verifying Signatures

Always verify the signature before processing a webhook:

Event Subscription

You can subscribe to:

Available Events

All 62 resource types support .created, .updated, and .deleted events: Clinical: patient, encounter, observation, condition, allergy, assessment, care-plan, care-team, goal, risk-assessment, family-member-history Medications: medication, prescription, medication-dispense, medication-statement, medication-knowledge, immunization, immunization-evaluation, immunization-recommendation, nutrition-order Scheduling: appointment, appointment-response, schedule, slot Documentation: note, document, consent, intake, media Diagnostics: lab, specimen, imaging-study Administrative: practitioner, practitioner-role, organization, location, healthcare-service, person Workflow: task, service-request, device-request, activity-definition, plan-definition Devices: device, device-use-statement Billing and Insurance: account, charge-item, claim, claim-response, coverage, eligibility-request, eligibility-response, explanation-of-benefit, invoice, payment-notice, payment-reconciliation, enrollment-request, enrollment-response, vision-prescription Quality and Audit: measure, measure-report, audit-event

Retry Policy

Failed deliveries are retried with exponential backoff: After 5 failed attempts, the delivery is marked as failed. You can view delivery logs in the Dashboard under Analytics > Webhook Logs.

Best Practices

  • Always return 200 quickly — process events asynchronously
  • Use the X-Clinik-Delivery-Id header for idempotency
  • Verify signatures on every request
  • Use specific event subscriptions instead of * when possible