Webhooks

Webhooks allow you to build or set up integrations which subscribe to certain events on the Elation Platform without polling our API for changes. When one of those events is triggered, we'll send a HTTP POST payload to the webhook's configured URL.

Support models

At the moment, you will receive events for the following models:

Model

event name

Appointment

appointments

Allergies

allergies

Bill

bills

Cardiac Orders

cardiac_orders

Delegate Permissions

delegate_permissions

Document Tags

document_tags

Drug Intolerances

drug_intolerances

Imaging Orders

imgaging_orders

Immunizations

immunizations

Insurance companies

insurance_companies

Insurance plans

insurance_plans

Lab Order Sets

lab_order_sets

Lab Order Tests

lab_order_tests

Lab Order

lab_orders

Lab Vendor Patient Sites

lab_vendor_patient_sites

Lab Vendors

lab_vendors

Letters

letters

Message Threads

message_threads

Non-visit Notes

non_visit_notes

Office Staff

office_staff

Patient

patients

Physicians

physicians

Pulmonary Orders

pulmonary_orders

Referral Orders

referral_orders

Reports

reports

Service Locations

service_locations

Sleep Orders

sleep_orders

Staff Groups

staff_groups

Visit Notes

visit_notes

Vitals

vitals

History

histories

Family History

family_histories

Acknowledging events

We are expecting status code 200 when we POST the event payload to your webhook URL. We will retry the POST for up to 72 hours until we get a status code 200 response.

You can programmatically register your event listener (e.x. webhook URL) using The Event Subscription API.

Webhook Signatures

Elation’s webhook requests are signed using the Ed25519 digital signature scheme. The base64 encoded signature can be found in the El8-Ed25519-Signature request header. The base64 encoded signing key for your webhook subscription can be in the signing_pub_key field in the response from the Subscription endpoint.

Libraries exist for all common programming languages that support the verification of Ed25519 signatures.

Example Implementation

The following is an example implementation, using Flask and PyNaCl.

from flask import Flask, request

from nacl.signing import VerifyKey
from nacl.encoding import Base64Encoder

# This base64 encoded value is obtained from the Subscription endpoint
verify_key = VerifyKey("8gUqjclkmFz6AFVB05RpWDYwTxR5MzsLzJnwZ9MlYCw=", encoder=Base64Encoder)

app = Flask(__name__)

@app.route("/", methods=["POST"])
def test_verification():
    b64_signature = request.headers["El8-Ed25519-Signature"]
    signature = Base64Encoder.decode(b64_signature)
    message = request.get_data()

    # verify() raises an exception if verification fails
    verify_key.verify(message, signature)
    return "Signature Verified"