Supported events
Payload format
All webhook payloads follow the same envelope structure:application.opened
Fired when the end user opens their Klara portal link for the first time.application.company_selected
Fired when the end user picks their company from the registry name search. The application’scompany_name and company_number now carry the registry-validated identity.
data fields
application.stage_completed
Fired each time a stage of the application form transitions to complete — for example when the end user finishes the company details step and moves on. Use it to track progress in real time instead of polling.data fields
stage_data
The shape depends on the stage type:- Content stages (e.g.,
company,questionnaire) carrystage_data.fields— the stage’s visible field values. Sensitive fields are excluded, same asapplication.submitted. - People stages (
directors,owners,representatives) carrystage_data.people— confirmed people for that stage, each withfull_name,first_name,last_name,roles, andnationalitywhen known.
Stages can complete more than once — if the end user edits a completed stage and re-completes it, another event fires. The confirmation step does not emit
stage_completed; listen for application.submitted instead.application.submitted
Fired when the end user submits their application.data fields
application.decision_received
Fired when a downstream provider decision is reported to Klara via the Record Decision endpoint.data fields
webhook.test
Sent when you click Send test in the dashboard.Configuring webhooks
- Go to Settings → Integrations → Webhooks in your Klara dashboard
- Click Add Endpoint
- Enter your HTTPS URL and select the events you want to receive
- Copy the signing secret — you’ll need it to verify payloads
You can configure up to 5 webhook endpoints per organization. Webhook URLs must use HTTPS.
Delivery & retries
Klara delivers webhooks asynchronously. If your endpoint is unavailable, delivery is retried automatically:Auto-disable
If an endpoint fails 5 consecutive deliveries (across any events), it is automatically disabled. You must re-enable it manually from the dashboard. The failure counter resets on any successful delivery.Verifying signatures
Every webhook includes HMAC-SHA256 signatures so you can verify payloads are genuinely from Klara. See the Webhook Signatures guide for implementation details.Best practices
- Respond quickly — return a
200response before processing the event. Use a queue for heavy work. - Handle duplicates — use the
idfield for idempotency. The same event may be delivered more than once. - Verify signatures — always validate the
X-Klara-Signatureheader before trusting the payload. - Use HTTPS — webhook URLs must use HTTPS. HTTP URLs are rejected.
