Docs

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 POST per event, with Content-Type: application/json. The body is the event as GET /events returns it; its event_type names 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:

nextgen.yaml
events:
  export:
    enabled: true
    sinks:
      - type: webhook
        url: https://siem.example.com/zitadel/events

The 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 typeDescription
auth.attempt.createdAn authentication attempt started.
auth.attempt.handed_offAn authentication attempt was handed off to a session.
auth.check.failedA check in an authentication attempt failed, such as a wrong password.
auth.check.succeededA check in an authentication attempt succeeded.
auth.factor.passkey.enrolledA passkey was enrolled for a user.
auth.factor.password.setA user's password was set.
auth.sso.authorization.failedThe identity provider answered an SSO sign-in with an error, access_denied included, or the callback carried no code.
auth.sso.exchange.failedAn 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.succeededThe code an SSO sign-in returned was exchanged.
auth.token.issuedA token was issued.
auth.token.revokedA token was revoked.
authz.grantedA role on a project was granted.
authz.revokedA role on a project was revoked.
branding.createdA branding revision was created.
deployment.createdA release was deployed, or a deployment rolled back.
flowdef.createdA flow definition was created.
flowdef.deletedA flow definition was deleted. Deprecated.
flowdef.updatedA flow definition was updated. Deprecated.
idp.createdAn identity provider connection was created.
idp.identity_link.createdA user was linked to an account at an identity provider, by an SSO sign-in that created the user.
idp.updatedAn identity provider connection was revised.
origin.addedAn origin was added to a project.
origin.removedAn origin was removed from a project.
policy.createdA project published the first revision of its policy for an operation.
policy.updatedA project published a new revision of its policy for an operation.
preview.removedA preview was removed before its expiry.
project.createdA project was created.
project.deletedA project was deleted.
project.updatedA project was updated.
release.createdA release was created.
release.revokedA release was revoked.
request.apiAn API request in the project completed.
schema.createdA schema was created.
session.deletedA session was revoked.
session.establishedA session was established, by a sign-in or by exchanging a session.
team.createdA team was created.
team.deactivatedA team was deactivated.
team.updatedA team was updated.
user.create.failedCreating a user failed because a unique attribute was already taken.
user.createdA user was created.
user.deletedA user was deleted.
user.updatedA user's attributes were updated.
variable.removedA variable's value was removed.
variable.setA variable was given a value, new or replacing one.

Was this helpful?