Skip to main content

Analytics

The page-admin Analytics screen gives operators a bounded, page-scoped summary of how the public status page and notification system are performing.

This guide is based on:

  • application/frontend/src/pages/admin/StatusPageAnalytics.jsx
  • application/backend/internal/handlers/analytics.go
  • application/backend/internal/service/status_page_analytics_service.go
  • application/backend/internal/models/analytics_models.go

What the analytics screen covers

The current analytics workspace supports 7, 30, and 90 day windows.

Top-level cards show:

  • page views
  • unique visitors
  • net subscriber growth
  • delivery success

The detailed sections include:

  • traffic totals for page views, estimated unique visitors, hosted badge impressions, and hosted widget impressions
  • subscriber totals for total, deliverable, non-deliverable, new, and unsubscribed subscribers
  • activity totals for active incidents, incidents created, incidents resolved, active maintenances, maintenances created, and maintenances completed
  • delivery totals for notification events, attempts, successes, failures, suppressions, retries, and delivery-channel breakdowns
  • a daily breakdown across traffic, subscriber, incident, and delivery metrics

Unique visitors are estimated with page-scoped visitor hashing so the summary can stay lightweight and privacy-conscious.

API and MCP access

The same bounded summary is available through the authenticated admin API:

curl "$STATIBEAT_BASE_URL/api/v1/admin/analytics/summary?window_days=30" \
-H "Authorization: Bearer $STATIBEAT_TOKEN"

window_days defaults to 30 and must be between 1 and 90.

Hosted MCP exposes analytics through statibeat://pages/{page_id}/analytics/summary?window_days={window_days} when the client has mcp.analytics.read and the signed-in user has analytics read permission. The page MCP server exposes the same shape at statibeat://page/analytics/summary?window_days={window_days}.

What analytics is not

Analytics is operational reporting, not durable page configuration. It is available in the app, API, and MCP, but it is not managed by Terraform resources or exported as Terraform state.