🔔 What are webhooks?
A webhook is a lightweight HTTP request sent from Ownright to your server when a specific event occurs. For example, when a referral is converted into a matter, you’ll receive a webhook event immediately — no need to poll for updates. Webhooks enable:- Real-time updates to your internal systems
- Triggering business logic or workflows (e.g. status sync, UI changes)
- Scalable and event-driven integrations
🎯 Why we use webhooks
Real estate transactions move fast. Webhooks help you:- Stay informed the moment something progresses
- Automatically update client records or timelines
- Reduce polling overhead and keep your app performant
📬 Webhook subscriptions
To get started with webhooks you will need to create a “webhook subscription”. Webhook subscriptions allow you to register your server to receive specific events. Each subscription includes:- A callback URL: The endpoint Ownright will send events to
- A list of event types the URL should receive
- A webhook secret used to verify authenticity
Registering a webhook subscription
Webhook subscriptions are registered via the API. Refer to your API’s reference section for the specific mutations available. When creating a subscription, Ownright will:- Generate a verification token
- Send an HTTP POST request to your callback URL with the token
- Expect a response with the same token in the body
Verification example
Request sent by Ownright:📦 Receiving webhook events
When an event occurs, we send an HTTP POST request to your callback URL with a JSON payload.| Header | HTTP Status |
|---|---|
X-Ownright-Webhook-Signature | HMAC SHA256 signature of the request |
X-Ownright-Webhook-Timestamp | Timestamp of the request (used to prevent replay attacks) |
Verifying the webhook
To confirm that a webhook request is legitimate:- Concatenate:
"{timestamp}.{raw_request_body}" - Hash it using
HMAC SHA256with your webhook secret - Compare the result to the value in
X-Ownright-Webhook-Signature
Tip: You can also use the timestamp to reject requests that are too old (e.g.,
more than 5 minutes) to guard against replay attacks.
🗂 Supported events
The specific events available depend on which API you are using. Refer to the Webhooks section in your API’s reference for the full list of supported events and their schemas.💡 Best practices
- Respond with a 2xx status code within 5 seconds to acknowledge receipt
- Retry logic is built in — failed deliveries will be retried with exponential backoff
- Your webhook URL should be HTTPS and publicly accessible
- Always verify webhook signatures for security