Audit log
The audit log is a read-only record of significant actions in a workspace. It lives at /settings/audit-log and requires admin access.
It is gated by the AUDIT_LOGS entitlement, which is Enterprise only — Free, Pro, and Business all resolve to no access, and the page renders a blurred sample table behind an upgrade prompt.
What the timeline contains
Section titled “What the timeline contains”Two sources are merged into one timeline, sorted newest first.
| Source | Entries |
|---|---|
| Audit log | Authenticated actions taken by a workspace user |
| Survey access log | Anonymous participant access to surveys, surfaced with the entity type SURVEY_ACCESS and the action ACCESS |
Access-log entries have no actor identity: the actor column shows Anonymous, and the actor name and email are null.
Entry fields
Section titled “Entry fields”| Column | Contents |
|---|---|
| Timestamp | Relative age — just now, 17m ago, 3h ago, 12d ago, then a date past 30 days. The full local timestamp appears on hover |
| Actor | Name over email. Unknown when the actor cannot be resolved, Anonymous for ACCESS entries |
| Action | One of the nine action types below, as a badge |
| Entity Type | The kind of object acted on, e.g. api_key, DATA_RETENTION_POLICY, AUDIT_LOG, SURVEY_ACCESS |
| Entity ID | The object’s identifier, truncated to 16 characters with the full value on hover and a copy control |
| Details | Expands to the entry’s metadata as formatted JSON. Shows -- when the entry has none |
Each entry also stores an IP address and user agent. For access-log entries the metadata carries the requested endpoint, HTTP method, and status code.
Action types
Section titled “Action types”| Action | Meaning |
|---|---|
ACCESS | An object was read. Used for anonymous survey access |
ARCHIVE | An object was archived |
CONFIGURE | A configuration value was changed |
CREATE | An object was created |
DELETE | An object was deleted or revoked |
EXPORT | Data was exported |
LOGIN | A session was started |
LOGOUT | A session was ended |
UPDATE | An object was modified |
Actions verified as writing audit entries include API key creation and revocation (CREATE / DELETE on api_key), retention policy changes (CONFIGURE on DATA_RETENTION_POLICY, with the previous value in metadata), retention runs, and audit log exports.
Filters
Section titled “Filters”Four filters sit above the table and are held in the URL, so a filtered view can be linked or bookmarked.
| Filter | Values |
|---|---|
| Action | All Actions, or one of the nine action types |
| Entity Type | All Entity Types, or one of the entity types actually present in this workspace’s log |
| Start Date | A date; entries on or after it |
| End Date | A date; entries on or before it |
Clear Filters appears once any filter is set, and changing a filter resets to page one. The table paginates at 50 entries per page; the API accepts up to 100.
The entity type list is derived from the workspace’s own data, so it grows as new kinds of object are acted on.
CSV export
Section titled “CSV export”Export CSV downloads the current filtered view as audit-log-YYYY-MM-DD.csv, with these columns:
Timestamp,Actor Name,Actor Email,Action,Entity Type,Entity ID,MetadataTimestamps are ISO 8601. An entry with no resolvable actor is exported with the actor name System. Metadata is JSON-encoded into a single field.
Two properties are worth knowing:
- Exports are capped at 10,000 rows. Narrow the date range to stay under it.
- Exporting is itself audited. Each export writes an
EXPORTentry against the entity typeAUDIT_LOG, recording the row count and the filters that produced it.
Retention
Section titled “Retention”Audit entries are never deleted by a retention policy. The purge that removes expired feedback explicitly excludes them.