Skip to content

Analytics overview

The Analytics page is a single dashboard that summarizes policy performance across your tenant — which policies trigger most, how often users accept vs. dismiss violations, and which teams are generating the most activity. It’s read-only and privacy-preserving by design.

  • Admin — yes. Admins have the VIEW_ANALYTICS permission.
  • Policy Lead, Policy Editor, User — no. Analytics is an admin-only view.

Navigate to Analytics in the top menu. If you don’t see the menu item, you don’t have the permission.

Four headline metrics, each with a delta against the previous equivalent period (e.g., “last 30 days” compared to “the 30 days before that”):

  • Active policies — how many policies are currently PUBLISHED and in their effective window.
  • Violations flagged — total detections across all surfaces (web app authoring, browser extension, Mac app).
  • Fixed — users clicked Apply fix or accepted a suggestion.
  • Self-resolved — violations that disappeared because the user edited their text, without clicking anything in the violation card.

A fifth metric, Ignored (user dismissed the card or took no action) is surfaced in the Top Policies table and CSV export.

A paginated table, 5 rows per page by default, showing each policy’s activity over the selected date range:

ColumnWhat it means
Policy NameClick to view the policy
Policy AreaThe Area this policy belongs to
TriggersTotal violations detected
FixedUser accepted a suggestion
Self ResolvedUser edited away from the violation
IgnoredUser dismissed or took no action
Severity1–10 (policy’s configured severity)

Sort by any column. High-severity policies are colored red (≥8), medium orange (4–7), low yellow (≤3).

A horizontal bar chart showing flagged violations by Policy Area. Derived by joining each violation event to its policy’s current Policy Area assignment.

Uncategorized violations (no Area assigned) are bucketed as Uncategorized.

A column chart with three buckets:

  • High (8–10) — red
  • Medium (4–7) — orange
  • Low (1–3) — yellow

A fourth Unknown column surfaces violations whose severity couldn’t be determined (rare — usually a data migration artifact).

A table grouping activity by Division. Columns: Team, Usage (events), Violations, Fixed, Self-resolved, Ignored.

This table enforces the 5-person floor. Divisions with fewer than 5 assigned users are hidden. A footer note shows how many teams were suppressed. See Privacy & the 5-person floor for why.

A dropdown at the top of the dashboard:

  • Last 7 days
  • Last 30 days (default)
  • Last 90 days

Custom ranges are supported in the API but not yet exposed in the UI.

Click Export CSV at the top of the dashboard. You get a download named inpolicy-analytics.csv containing the current Top Policies table with all policies (not just the first page) over the selected date range.

Columns: policy_id, policy_title, policy_area, triggers, fixed, self_resolved, ignored, severity.

The export uses RFC 4180 quoting and strips CSV-injection vectors (formulas prefixed with a leading =, +, -, or @ are escaped).

PDF export and scheduled email reports are not shipped. If those matter to your workflow, pipe the CSV into your own reporting tool for now.

Analytics data is near-real-time: it updates roughly every 60 seconds. The dashboard re-fetches data on load and every minute while the tab is open.

Violation events are written synchronously when a violation is detected (in-browser, Mac, or in the web authoring sidebar) and are available for analytics immediately.

This release of analytics focuses on violation detection. These things are tracked internally but not yet visualized:

  • Engagement metrics — session heartbeats and app-installed events are collected but there’s no dedicated view yet.
  • Acknowledgement metrics — acknowledgement workflows are not shipped in this release, so there’s nothing to display.
  • Drill-down per policy — clicking a policy name opens the policy, not a dedicated analytics detail view with timeline and user breakdowns.
  • Per-user attribution — violations are anonymized by design; you can never see who triggered a specific violation.