AdministeringSecurityConcept
The audit log
What the audit log records and deliberately doesn't, how CapitolMath staff access shows in it, how far back it goes, and how to export it.
Applies toOwner · Admin
The audit log records who did what in your organization: sign-ins, members and licenses, API keys, saved views, exports, widgets, webhooks, scorecards and plan changes — and every time CapitolMath staff opened or changed the organization. It's there so an Owner, an Admin or your auditor can answer "who changed this, and when?" without asking anyone.
Owners and Admins read it from Organization → Audit log, under Activity, which shows the newest entries — changes to the organization's settings and its workflow among them; select Open the full log and export it → for all of them, with filters and the CSV download. Team members can't see it: it's a record of everyone's activity across the organization.
What's recorded#
Each entry says When, Who — a member, An API key, CapitolMath (automatic) or CapitolMath staff — What, what it was done To, and the network address it came From. Most actions succeed; one that failed or was refused is marked so. Select an entry to see its detail, including which fields changed.

| Action | Recorded as |
|---|---|
| Sign-in | |
| Signed in | auth.login |
| Signed out | auth.logout |
| Opened the single sign-on setup | auth.sso_setup_started |
| Changed the single sign-on connection | auth.sso_configured |
| Signed in with single sign-on for the first time | auth.sso_tested |
| Changed whether single sign-on is required | auth.sso_enforcement_changed |
| Signed in without single sign-on while it was required | auth.break_glass_used |
| Members & keys | |
| Invited a member | member.invited |
| Re-sent an invitation | member.invitation_resent |
| Changed an invitation | member.invitation_changed |
| Withdrew an invitation | member.invitation_rescinded |
| Joined the organization | member.joined |
| Removed a member | member.removed |
| Left the organization | member.left |
| Changed a member's role | member.role_changed |
| Gave a member a Full license | member.licence_granted |
| Took away a member's Full license | member.licence_revoked |
| Asked to change a member's email | member.email_change_requested |
| Canceled an email change | member.email_change_cancelled |
| Changed a member's name | member.name_changed |
| Recovered ownership of the organization | member.ownership_recovered |
| Turned on permissions for a member | member.permission_granted |
| Turned off permissions for a member | member.permission_revoked |
| Copied a member's permissions from another member | member.permissions_copied |
| Reset a member's permissions to their role's defaults | member.permissions_reset |
| Gave a member Read All on tracked items | member.read_all_tracked_granted |
| Changed a member's photo | member.photo_changed |
| Created a group | group.created |
| Changed a group | group.updated |
| Deleted a group | group.deleted |
| Created an API key | apikey.created |
| Revoked an API key | apikey.revoked |
| An API key lost audit-log access | apikey.audit_access_removed |
| An older API key was moved into this organization | apikey.moved_to_account |
| Completed a quarterly access review | access.review_completed |
| Started a conversation with the assistant | chat.session_started |
| Data leaving CapitolMath | |
| Downloaded a CSV | export.csv |
| Downloaded a bulk dataset | export.bulk |
| Downloaded everything in the organization | export.account |
| Created a widget | widget.created |
| Changed a widget | widget.updated |
| Published a widget | widget.published |
| Unpublished a widget | widget.unpublished |
| Replaced a widget's embed code | widget.token_rotated |
| Deleted a widget | widget.deleted |
| Exported the assistant's transcripts | chat.transcript_exported |
| Created a webhook | webhook.created |
| Changed a webhook | webhook.updated |
| Changed where a webhook sends | webhook.destination_changed |
| Took over a webhook by changing it | webhook.transferred |
| Activated a webhook | webhook.activated |
| Paused a webhook | webhook.paused |
| Resumed a webhook | webhook.resumed |
| Sent a webhook test | webhook.tested |
| Rotated a webhook's signing secret | webhook.secret_rotated |
| Replayed webhook events | webhook.replayed |
| Deleted a webhook | webhook.deleted |
| A failing webhook was disabled | webhook.auto_disabled |
| A webhook paused because someone else changed its view | webhook.paused_by_view_edit |
| A webhook paused because someone else changed a scorecard its view rates by | webhook.paused_by_scorecard_edit |
| Set up Slack or Teams for their own notifications | notification.destination_added |
| Removed their Slack or Teams notifications | notification.destination_removed |
| Downloaded a scorecard | scorecard.exported |
| Saved views | |
| Deleted a conversation with the assistant | chat.transcript_deleted |
| Saved a view | view.created |
| Changed a saved view | view.updated |
| Deleted a saved view | view.deleted |
| Renamed a view category | category.renamed |
| Deleted a view category | category.deleted |
| Merged view categories | category.merged |
| Legislator scorecards | |
| Created a scorecard | scorecard.created |
| Changed a scorecard | scorecard.updated |
| Deleted a draft scorecard | scorecard.deleted |
| Made a new version of a scorecard methodology | scorecard.methodology_versioned |
| Submitted a scorecard for review | scorecard.submitted_for_review |
| Sent a scorecard back for changes | scorecard.returned |
| Approved a scorecard | scorecard.approved |
| Published a scorecard | scorecard.published |
| Withdrew a published scorecard | scorecard.unpublished |
| Archived a scorecard | scorecard.archived |
| Froze a scorecard's scores | scorecard.frozen |
| Set a scorecard to update with new votes | scorecard.unfrozen |
| Tracking | |
| Started tracking a bill | workflow.tracked |
| Stopped tracking a bill | workflow.untracked |
| Carried a tracked bill forward to another bill | workflow.carried_forward |
| Changed a tracked bill's fields | workflow.field_changed |
| Reassigned tracked bills | workflow.owner_reassigned |
| Changed who a tracked bill is shared with | workflow.shares_changed |
| Changed the tracking statuses | workflow.statuses_edited |
| Renamed position labels | workflow.labels_renamed |
| Changed the tracking tags | workflow.tags_edited |
| Changed the workflow settings | workflow.settings_changed |
| Turned AI writing of the Weekly digest on or off | workflow.digest_writing_changed |
| Changed the custom fields | workflow.custom_fields_edited |
| Wrote a note | workflow.note_written |
| Logged a meeting | workflow.meeting_logged |
| Edited a note | workflow.note_edited |
| Deleted a note | workflow.note_deleted |
| Read a note kept to its author, with Read All | workflow.note_read_all |
| Attached a file to a note | workflow.attachment_added |
| Removed a file from a note | workflow.attachment_removed |
| Opened a file attached to a note | workflow.attachment_opened |
| A file attached to a note failed the malware check | workflow.attachment_blocked |
| Turned on a triage source | workflow.triage_source_on |
| Turned off a triage source | workflow.triage_source_off |
| Changed a triage source | workflow.triage_source_changed |
| Sent bills to an Inbox | workflow.triage_sent |
| Assigned Inbox bills to someone else | workflow.triage_assigned |
| Dismissed bills from the Inbox | workflow.triage_dismissed |
| Undid a dismissal from the Inbox | workflow.triage_dismissal_undone |
| Made a report | workflow.report_created |
| Changed a report's settings | workflow.report_changed |
| Deleted a report | workflow.report_deleted |
| Changed who a report is shared with | workflow.report_shared |
| Saved a report as one of our templates | workflow.report_template_saved |
| Took over a paused report | workflow.report_taken_over |
| Made a link to a report | workflow.report_link_created |
| Revoked a link to a report | workflow.report_link_revoked |
| Made a PDF or Word file of a report | workflow.report_file_created |
| Downloaded a report's PDF or Word file | workflow.report_file_downloaded |
| Added a report recipient | workflow.report_recipient_added |
| Removed a report recipient | workflow.report_recipient_removed |
| Approved or declined an outside recipient | workflow.report_recipient_decided |
| Sent a scheduled report | workflow.report_sent |
| Skipped a scheduled report (nothing changed, or no one to send to) | workflow.report_send_skipped |
| A scheduled report's email failed | workflow.report_send_failed |
| Left a recipient out of a scheduled report | workflow.report_recipient_refused |
| A recipient unsubscribed from a report | workflow.report_unsubscribed |
| Added tasks | workflow.task_created |
| Changed a task | workflow.task_changed |
| Deleted a task | workflow.task_deleted |
| Updated tasks together | workflow.tasks_updated |
| Reassigned a departing member's open tasks | workflow.tasks_reassigned |
| Handed a former member's tracked bills and tasks to an Owner | workflow.orphans_handed_on |
| Added a client | workflow.client_created |
| Changed a client | workflow.client_changed |
| Archived a client | workflow.client_archived |
| Made an archived client active again | workflow.client_unarchived |
| Deleted a client (restorable for 30 days) | workflow.client_deleted |
| Restored a deleted client | workflow.client_restored |
| Erased a deleted client after 30 days | workflow.client_erased |
| Changed who a client is shared with | workflow.client_shared |
| Changed a client's account manager | workflow.client_manager_changed |
| Added someone to a client's account team | workflow.client_person_added |
| Removed someone from a client | workflow.client_person_removed |
| Changed someone's access to a client | workflow.client_access_changed |
| Moved a client member to another client | workflow.client_member_reassigned |
| Refused a change that would cross the client wall | workflow.wall_refused |
| Added an automation rule | workflow.rule_created |
| Changed an automation rule | workflow.rule_changed |
| Turned on an automation rule | workflow.rule_on |
| Turned off an automation rule | workflow.rule_off |
| Removed an automation rule | workflow.rule_deleted |
| Reordered the automation rules | workflow.rules_reordered |
| Applied an automation rule to the bills it matches now | workflow.rule_applied_now |
| An automation rule changed a tracked bill | workflow.rule_applied |
| Undid an automation rule's change | workflow.rule_change_undone |
| Asked for a brief | brief.created |
| Took over a brief by changing who it's for | brief.transferred |
| Changed a brief's settings | brief.settings_changed |
| Refreshed a brief | brief.refreshed |
| Finished updating a brief | brief.update_finished |
| Discarded a brief's update | brief.update_discarded |
| Deleted a brief | brief.deleted |
| Changed a passage of a client's brief | brief.passage_changed |
| Shared a client copy with the client's members | brief.shared |
| Stopped sharing a client copy | brief.unshared |
| Downloaded a brief | brief.downloaded |
| A client member downloaded a shared client copy | brief.shared_copy_downloaded |
| Logged a meeting from a meeting brief | brief.meeting_logged |
| Plan & billing | |
| Plan changed | billing.plan_changed |
| Scheduled a plan change | billing.plan_change_scheduled |
| Canceled a scheduled plan change | billing.plan_change_cancelled |
| Changed the plan's state | billing.entitlement_changed |
| Billing status changed | billing.status_changed |
| Payment method changed | billing.payment_method_updated |
| Asked to pay yearly by invoice | billing.invoice_requested |
| Withdrew a request to pay by invoice | billing.invoice_request_withdrawn |
| CapitolMath approved paying by invoice | billing.invoice_request_approved |
| CapitolMath declined paying by invoice | billing.invoice_request_declined |
| Organization settings | |
| Created the organization | org.created |
| Changed organization details | org.settings_changed |
| Added the organization's logo | org.logo_added |
| Replaced the organization's logo | org.logo_replaced |
| Removed the organization's logo | org.logo_removed |
| Changed the contract contact | org.contract_contact_changed |
| Started verifying a domain | org.domain_claim_started |
| Verified a domain | org.domain_verified |
| Closed the organization | org.closed |
| The organization was reopened | org.reopened |
| CapitolMath staff access | |
| CapitolMath staff viewed this organization | staff.org_data_accessed |
| CapitolMath staff acted as a member of this organization | staff.impersonation_used |
| CapitolMath staff changed organization details | staff.org_updated |
| CapitolMath staff viewed site usage by person | staff.usage_by_person |
| CapitolMath staff changed the organization's status | staff.org_status_changed |
| CapitolMath staff corrected public data you follow | staff.corpus_edited |
| CapitolMath staff scheduled a legacy ingest | staff.ingest_schedule_overridden |
| CapitolMath staff overrode an ingest's cadence | staff.ingest_cadence_overridden |
| CapitolMath staff paused or resumed an ingest | staff.ingest_paused |
| CapitolMath staff deleted a quarantined bill | staff.bill_deleted |
| CapitolMath staff resent follower notifications | staff.notify_resent |
| CapitolMath staff changed when a tier of checks runs | staff.checks_schedule_changed |
| CapitolMath staff turned the checks' pre-launch mode on or off | staff.checks_prelaunch_changed |
| CapitolMath staff started a run of the checks | staff.checks_run_requested |
Filter the log by kind of action, by who acted, by outcome (Succeeded, Failed, Refused) and by dates From and To.
What's deliberately not recorded#
- What anyone looked at. Nothing records which bills, legislators or hearings someone opened, or what they searched for. A log of every bill an organization read would be a record of its strategy — valuable to an attacker and discoverable in litigation — so it isn't kept at all. Exports are recorded, because they're data leaving CapitolMath.
- The values themselves. An entry says a saved view, a name or an email address changed, not what it now says — the detail shows "changed (the value isn't recorded)". Invitations are recorded by a fingerprint of the address, never the address.
- Secrets. No API key, webhook signing secret or password is ever written to the log.
- Who views your widgets. Embedded widgets don't track the people who see them, and the log doesn't either.
CapitolMath staff access#
When CapitolMath staff open your organization for support, change its details or status, or correct public data your organization relies on, it's written to your log, not only to ours. The CapitolMath staff access bar at the top of the log counts those entries; select Show only staff access to list them. If there have been any in the period your plan keeps, the Organization page says so too.
Entries can't be changed#
Neither you nor CapitolMath can edit or delete an entry. Each one is chained to the one before it, so a removed or altered entry would show. Once a day, a fingerprint of the log is also published in a public repository; once yours is included, the log page offers Download the proof and a standalone verifier to check it with, independently of CapitolMath.
How far back it goes#
Your plan decides how far back the log reaches — see Audit log kept for in Plans and what they include. The log page shows the window and the date it starts from. Moving to a plan with a longer window shows older entries again: they're never deleted while the organization is open.
Exporting it#
- Download CSV on the log page exports the entries matching your current filters. The file holds ids rather than names.
GET /v1/audit-eventsdelivers the log to a security tool by API, with ids rather than names. It needs an API key given the Read the audit log permission, which only an Owner or Admin can give a key, on a plan that includes the audit-log API (Developer and above). If the key's creator stops being an Owner or Admin, the key loses that permission. See Authentication and permissions and the API reference.