Event types
The three that alert a person
The last three exist to alert whoever works the queue, not to move data into another system. Slack, Teams, email and SMS connections are driven from these events too: Settings → Integrations.case.assigned is separate from case.updated. An analyst who wants to be told when work
lands on their plate should not have to subscribe to every edit of every case to find out — a
channel that receives everything gets muted, and after that nothing is heard at all.
decision.review_required is likewise separate from decision.created: the overwhelming
majority of decisions are approvals, and a channel that receives all of them is a channel
nobody reads.
The escalation sweep records the breach and raises this event — but it still does not reassign
or reroute. Telling somebody is not the same as deciding who picks it up.
Verifying the signature
Krino follows the Standard Webhooks format. Every request carries three headers:
The signed string is:
Node.js example
What your endpoint must honour
1
Answer quickly
Return
2xx and queue the work. Do not do anything slow inside the request.2
Tolerate duplicates
The same event can arrive more than once. Store
webhook-id and ignore ids you
have already seen.3
Do not rely on ordering
Events may not arrive in the order they were produced. Decide from the timestamp in
the body, not from arrival order.
Retries
If your endpoint returns anything other than2xx or times out, Krino retries with
increasing intervals. Endpoints that keep failing are surfaced under Settings →
Webhooks.