Skip to main content
Operations

Webhooks and scriptable handlers for every identity event.

Export audit events, post to webhooks, trigger workflows. Subscribe to logins, registrations, role changes — anything Keycloak emits — and route them to your stack.

WebhooksScript HandlersFilteringRetry + DLQSigned Payloads
Events & Webhooks · architecture
The problem

Identity events shouldn't be trapped inside Keycloak.

Pain 1

Audit logs need to leave

Compliance, observability, fraud detection — all want events out of Keycloak and into your platform.

Pain 2

Workflows want a trigger

When a user joins an org, you want to create rows in your DB, post to Slack, kick off provisioning. Polling isn't the answer.

Pain 3

Keycloak's built-in SPI is too low-level

Implementing event listeners as Java SPI works, but it's painful to iterate on and not portable across clusters.

Our approach

Identity events as a normal eventing system

01

Webhooks first

POST signed JSON to any URL. Standard HTTP. No glue code.

02

Scriptable handlers

Or write a script (JS) that runs on each event — filter, map, transform.

03

Retry, DLQ, idempotency

Treat it like any other webhook system. Failures don't lose events.

04

Realm-scoped or global

Subscribe to a tenant's events or all of them.

What teams use it for

Where event routing pays off

Anywhere identity changes need to be visible somewhere else.

01
Audit log export
All identity events into S3, Datadog, or SIEM.
02
CRM sync
New signups → Salesforce / HubSpot contact.
03
Slack notifications
Alert on suspicious logins or role changes.
04
Workflow triggers
Provisioning, billing, onboarding kicks.
Key capabilities

Everything you'd want from a webhook system

Subscribe per event type

USER_LOGIN, ROLE_CHANGE, PASSWORD_RESET — opt in to what you need.

Webhook destinations

Any HTTPS URL. Standard JSON payload.

JS script handlers

Run small scripts inside Keycloak for filter / map / fanout.

Retry with backoff

Failed deliveries retry with exponential backoff.

DLQ

Events that fail repeatedly land in a dead-letter queue you can replay.

Signed payloads

HMAC-signed so the receiver can verify origin.

Get started

Three ways to ship Events & Webhooks

Self-host

Run it yourself

Pull the JAR or pre-built container into your Keycloak deployment.

Docs

Read the guides

Install steps, configuration, API reference, and migration notes.

Hosted

Let us run it

Try the hosted Phase Two — all extensions installed and configured.

Ready to Try Keycloak?
Create Your Free Deployment Today.