Event webhooks
The requests the server sends a webhook to deliver the project's events, one page per event type.
The server can deliver the project's events to a webhook as it stores them. Each event type has a page here: what happened, and the event the request carries.
Delivery
- One
POSTper event, withContent-Type: application/json. The body is the event asGET /eventsreturns it; itsevent_typenames the page that describes it. - Any 2xx status acknowledges the event. Any other status, a failed connection, or no response within 10 seconds leaves it undelivered: the server sends it again on its next pass, and holds back the project's later events until it is delivered. Other projects' events keep going.
- Within a project, events arrive in the order they were stored.
- Delivery is at least once, so an event can arrive twice. Drop duplicates by
its
id. - A request carries no signature and no credentials.
- Retention deletes events by age, 30 days by default, whether they were delivered or not. An event the webhook hasn't taken by then is lost.
Setting the webhook
The webhook is part of the server's configuration, not of the API, so a
project can't register one yet. On a server you run yourself, set it under
events.export:
events:
export:
enabled: true
sinks:
- type: webhook
url: https://siem.example.com/zitadel/eventsThe server delivers the events of claimed projects only. A project's events from before its claim go out once it is claimed, and a new webhook URL starts with the oldest event still retained.
Event types
| Event type | Description |
|---|---|
auth.attempt.created | An authentication attempt started. |
auth.attempt.handed_off | An authentication attempt was handed off to a session. |
auth.check.failed | A check in an authentication attempt failed, such as a wrong password. |
auth.check.succeeded | A check in an authentication attempt succeeded. |
auth.factor.passkey.enrolled | A passkey was enrolled for a user. |
auth.factor.password.set | A user's password was set. |
auth.sso.authorization.failed | The identity provider answered an SSO sign-in with an error, access_denied included, or the callback carried no code. |
auth.sso.exchange.failed | An SSO sign-in failed after its code arrived: the token exchange, the ID token or userinfo validation, or the connection's configuration failed. |
auth.sso.exchange.succeeded | The code an SSO sign-in returned was exchanged. |
auth.token.issued | A token was issued. |
auth.token.revoked | A token was revoked. |
authz.granted | A role on a project was granted. |
authz.revoked | A role on a project was revoked. |
branding.created | A branding revision was created. |
deployment.created | A release was deployed, or a deployment rolled back. |
flowdef.created | A flow definition was created. |
flowdef.deleted | A flow definition was deleted. Deprecated. |
flowdef.updated | A flow definition was updated. Deprecated. |
idp.created | An identity provider connection was created. |
idp.identity_link.created | A user was linked to an account at an identity provider, by an SSO sign-in that created the user. |
idp.updated | An identity provider connection was revised. |
origin.added | An origin was added to a project. |
origin.removed | An origin was removed from a project. |
policy.created | A project published the first revision of its policy for an operation. |
policy.updated | A project published a new revision of its policy for an operation. |
preview.removed | A preview was removed before its expiry. |
project.created | A project was created. |
project.deleted | A project was deleted. |
project.updated | A project was updated. |
release.created | A release was created. |
release.revoked | A release was revoked. |
request.api | An API request in the project completed. |
schema.created | A schema was created. |
session.deleted | A session was revoked. |
session.established | A session was established, by a sign-in or by exchanging a session. |
team.created | A team was created. |
team.deactivated | A team was deactivated. |
team.updated | A team was updated. |
user.create.failed | Creating a user failed because a unique attribute was already taken. |
user.created | A user was created. |
user.deleted | A user was deleted. |
user.updated | A user's attributes were updated. |
variable.removed | A variable's value was removed. |
variable.set | A variable was given a value, new or replacing one. |
Was this helpful?