Skip to main content
Audit logs record security-sensitive actions performed within your Cal.com organization. Each event captures who performed the action, what changed, and when it happened. Use audit logs to monitor access control changes, investigate security incidents, and satisfy compliance requirements.
Audit logs are an enterprise feature available to organizations on Cal.com. Events are recorded automatically — no configuration is required.

Tracked events

Cal.com automatically records audit events across three categories: security, access control, and API credential lifecycle.

Security events

EventDescription
LOGINA user logged in. Failed login attempts are recorded with a FAILURE result.
PASSWORD_CHANGEDA user changed their password.
PASSWORD_RESET_REQUESTEDA password reset was initiated.
TWO_FACTOR_ENABLEDTwo-factor authentication was turned on.
TWO_FACTOR_DISABLEDTwo-factor authentication was turned off.
IMPERSONATION_STARTAn admin began impersonating another user.
IMPERSONATION_STOPAn admin stopped impersonating another user.
EMAIL_CHANGEDA user’s email address was updated.
ACCOUNT_LOCKEDA user account was locked.
ACCOUNT_UNLOCKEDA user account was unlocked.

Access control events

These events are recorded when organization or team memberships change.
EventDescriptionData captured
MEMBER_ADDEDA user was invited to join a team or organization.Invited user and assigned role
MEMBER_REMOVEDA user was removed from a team or organization.Removed member and team IDs
ROLE_CHANGEDA member’s role was updated.Previous role and new role

API credential events

EventDescription
API_KEY_CREATEDA new API key was generated.
API_KEY_REVOKEDAn existing API key was revoked.

Event structure

Each audit event captures a consistent set of fields:
FieldDescription
ActionThe type of event (e.g., ROLE_CHANGED, LOGIN).
ActorThe user who performed the action.
ResultWhether the action succeeded (SUCCESS), failed (FAILURE), or was denied (DENIED).
SourceWhere the action originated (e.g., webapp, API v1, API v2, SAML, OAuth).
TargetThe resource affected by the action, identified by type and ID (e.g., a specific user, team, or membership).
Previous / new valueFor mutation events like ROLE_CHANGED, the value before and after the change.
TimestampWhen the event occurred.
IP addresses are stored as HMAC hashes for privacy. Raw IP addresses are never persisted in audit logs.

Access control event examples

Role change

When an admin changes a team member’s role, the audit log captures both the previous and new role values:
  • Action: ROLE_CHANGED
  • Target type: membership
  • Previous value: MEMBER
  • New value: ADMIN

Member removal

When members are removed from a team, an audit event is recorded for each member and team combination:
  • Action: MEMBER_REMOVED
  • Target type: membership
  • Target ID: The affected member’s ID

Member invitation

When new members are invited, the audit log records the invitation details:
  • Action: MEMBER_ADDED
  • Target type: membership

PBAC permissions for audit logs

If your organization uses PBAC (Permission-Based Access Control), audit log access is governed by dedicated permissions:
PermissionScope
booking.readOrgAuditLogsView audit logs across the entire organization
booking.readTeamAuditLogsView audit logs for a specific team
Assign these permissions to custom roles to control who can access audit log data.