Overview
Security webhook events notify your SIEM or security tooling when identity and access management (IAM) actions occur in Gu1: member lifecycle, role changes, sign-in/out, failed logins, admin password actions, and selected security settings. Configure them like any other webhook in Settings → Webhooks and subscribe only to thesecurity.* events you need.
Payload Shape (All Security Events)
Every security webhook uses the standard envelope plus a normalized inner payload:Available Events
Members (security.member.*)
context.teamType (e.g. production, sandbox) and context.teamRole apply to team events. For environment access, context.environment is "production" or "sandbox", with context.environmentOrganizationId and context.environmentOrganizationName. On security.member.environment_changed, use context.fromAccess / context.toAccess ("both" | "production" | "sandbox" | "none") and changes.environmentAccess. Channel webhooks fire on the parent organization context; context.channelOrganizationId identifies the channel.
Invitation lifecycle (security.member.invited → security.member.created)
If you subscribe to both events, expect two separate deliveries in this order:
Integrator expectations:
- Do not expect
security.member.createdat the same time assecurity.member.invited. The invitee must accept first; delivery is typically seconds to minutes later. - On
security.member.created,actorandaffectedUserusually refer to the new member (same Gu1 user UUID).affectedUser.emailis the invited address. payload.descriptionis normally"Member accepted organization invitation". In rare cases where secondary setup (paired sandbox access, granular roles, or team assignment) could not be fully applied in the same pass, the description may read"Member accepted organization invitation (environment sync incomplete)". The member still has access in the invitation organization context — treat the webhook as a successful member creation for SIEM and access-governance use cases.- If you receive
invitedbut nevercreatedafter the user confirms they joined Gu1, check that your endpoint returned HTTP 2xx when Gu1 delivered events around acceptance time, then contact Gu1 support with the approximate timestamp andorganizationId. - Use
payload.context.invitationIdto correlateinvitedandcreatedfor the same invite (same UUID on both events when acceptance succeeds).
context fields (present on security.member.invited and security.member.created when applicable):
Example
security.member.invited payload:
security.member.created payload:
security.member.environment_granted, security.member.team_added, security.member.channel_granted, security.role.assigned.
Roles & RBAC (security.role.*, security.rbac.*)
Authentication (security.auth.*)
Security Settings
Limitations
The following are not covered by Gu1 security webhooks today:- End-user self-service password change in Clerk (IdP-only)
- MFA / SSO configuration changes in Clerk
- Machine-to-machine API key authentication (separate from user login)
- Clerk dashboard session revocations that never touch Gu1 API
security.member.password_*.