Lewati ke konten utama

Audit Log

The audit log provides a complete record of significant actions taken within your organization. It is essential for security, compliance (21 CFR Part 11, GDPR Article 30), and troubleshooting.

Accessing the Audit Log​

Navigate to Settings > Audit Log. Only organization Owners and Admins can access the audit log. Full audit log access requires the Enterprise plan (feature gate level 3).

How It Works​

Activities are logged by mutation handlers throughout the application using the logActivity helper function. The activity log serves two purposes:

  1. Entity-level audit trail -- "What happened to this item/board/project?"
  2. Org-level activity feed -- "What has been happening across the organization?"

Each log entry is scoped to the organization via organizationId for multi-tenant isolation.

What Is Logged​

The audit log captures the following categories of events:

Authentication Events​

  • User login (successful and failed).
  • User logout.
  • Password changes and resets.
  • Two-factor authentication enabled, disabled, or backup codes regenerated.
  • SSO login events and configuration changes.

Organization Events​

  • Organization settings changes (name, slug, branding).
  • Member invited, added, role changed, or removed.
  • Integration connected, toggled, or disconnected.
  • API key created, revoked, rotated, or deleted.
  • Billing and plan changes.

Workspace Events​

  • Workspace created, updated, archived, or deleted.
  • Workspace member added or removed.
  • Workspace role changes.

Board Events​

  • Board created, updated, or deleted.
  • Items created, updated, or deleted.
  • Field definitions added, modified, or removed.
  • Comments added, edited, or deleted.
  • KPI values recorded or modified.
  • Form submissions.

Event Details​

Each log entry contains:

FieldTypeDescription
IDStringUnique identifier for the log entry (cuid2)
TimestampDateTimeWhen the event occurred (UTC)
ActorObjectThe user who performed the action (name, email, image)
ActionStringWhat was done (e.g., item.updated, member.invited)
Entity TypeStringType of object affected (e.g., item, board, member)
Entity IDStringThe unique ID of the affected object
MetadataJSONBAdditional context (e.g., field changed from X to Y)
Organization IDStringThe organization this event belongs to

Querying the Audit Log​

By Entity​

Retrieve all activity for a specific entity (item, board, project):

  • Specify the entity type (e.g., item, board, project, comment).
  • Specify the entity ID (the primary key of the entity).
  • Results are ordered by most recent first, with a default limit of 50 entries (max 200).

By Organization​

Retrieve a feed of recent activity across the entire organization for the dashboard. Results include actor details (name, email, avatar) for rendering the activity feed.

Filtering and Searching​

Use the filter bar at the top of the audit log to narrow results:

  • Date range -- View events within a specific time period.
  • Actor -- Filter by the user who performed the action.
  • Action type -- Filter by event category (auth, org, workspace, board).
  • Target -- Search for events related to a specific item, board, or member.

Exporting the Audit Log​

Click Export to download the audit log as a CSV file. You can export the full log or apply filters first to export a subset.

Retention​

PlanRetention Period
Free7 days
Pro90 days
EnterpriseUnlimited (configurable)

Enterprise customers can configure custom retention periods and forward audit log events to an external SIEM system via the API.

Implementation Details​

The audit log is powered by the activity_log database table. Key implementation details:

  • Write path -- Mutations log events via the logActivity helper function, which inserts a record with the actor ID, action, entity reference, and JSONB metadata.
  • Read path -- The activity router provides two query endpoints: listByEntity (for entity-specific history) and listByOrg (for the organization-wide feed).
  • Actor enrichment -- Log entries are joined with the users table to include actor name, email, and avatar for rendering the activity feed.
  • Pagination -- The default query limit is 50 entries (max 200) to prevent excessive data transfer. The frontend can implement "load more" pagination.
  • Tenant scoping -- All queries include a WHERE organizationId = ? clause to ensure strict multi-tenant isolation.