Performance Analytics in ServiceNow: Indicators, Scores, Breakdowns, and Dashboards

Performance Analytics (PA) turns ServiceNow data into time-series metrics, trend charts, and executive dashboards. It is fundamentally different from standard reports — reports show you the current state, PA tracks change over time. Understanding how PA actually works explains both why it is powerful and why dashboards built without understanding it are often misleading.

PA vs standard reports — the critical distinction

Standard ServiceNow reports query live data — how many open incidents right now. Performance Analytics stores historical snapshots on a schedule and lets you analyse trends over time — how did incident volume change over the past 6 months, which assignment groups improved their SLA compliance, what is the seasonal pattern in request volume.

The consequence: you cannot retroactively analyse trends from before PA was collecting data. If you activate PA today, you can build trend charts starting from today — not from a year ago. This is the most common misunderstanding when stakeholders ask for historical trending on data that has been in the system for years.

Indicators — the core PA object

An Indicator defines what is being measured. It specifies: the table to query, the filter conditions, the aggregate function (COUNT, SUM, AVG), and the collection schedule. Examples:

  • "Open P1 Incidents" — COUNT of incident where active=true AND priority=1
  • "Average Resolution Time" — AVG of resolved_at minus opened_at for resolved incidents
  • "SLA Compliance Rate" — derived indicator (SLAs met / total SLAs × 100)

Score collection — how data gets into PA

PA collects Indicator scores on a schedule (daily is most common). Each run calculates the current value of the indicator and stores it as a Score record with: the indicator, the date, and the numeric value. This is what enables trend charts — a series of daily scores over time.

Navigate to Performance Analytics > Data Collector > Jobs to see and trigger collection runs. If your dashboard shows no data, check whether the collection job has run and whether scores exist for the indicator.

Breakdowns — slicing by dimension

Breakdowns let you view an indicator sliced by a category field — see "Open Incidents" broken down by Assignment Group, Priority, or Location. A breakdown is configured separately and linked to indicators.

// Example breakdown configuration:
Indicator: Active Incident Count
Table: incident
Condition: active=true
Aggregate: COUNT
Breakdown Source: Assignment Group
Breakdown Field: assignment_group
// Result: one score per group per collection period

Limit breakdowns to 20–25 values maximum. More makes charts unreadable and slows data collection.

Targets — adding red/amber/green to scorecards

Set targets on indicators to show status colours on scorecard widgets. Navigate to the Indicator record, open the Targets tab, and define threshold values and whether above or below target is good. A well-configured target turns a number into a status signal.

Building dashboards that people actually use

The most used PA dashboards have three things:

  • A headline KPI scorecard showing current values vs target (3–5 metrics maximum)
  • Trend lines for the most important metrics over the past 30–90 days
  • A breakdown chart for the metric that drives the most operational decisions

Avoid building dashboards with 20 charts — they get ignored. Three focused metrics that stakeholders act on are worth more than twenty that they scroll past.

Common mistakes that make dashboards misleading

  • Not labelling the data collection time — PA collects snapshots; if collection runs at midnight, a 3pm dashboard shows yesterday's numbers. Always label dashboards with when data was last collected.
  • SLA compliance calculated wrong — compliance = SLAs met / total SLAs closed. A common mistake is dividing by active SLAs, which excludes already-breached ones and inflates the percentage.
  • Mixing current and historical data — showing "current open incidents" next to "closed last 30 days" on the same tile implies a comparison that is not meaningful.

Related guides: PA complete guide — deeper coverage · GlideAggregate — the underlying query engine PA uses · Scheduled Jobs — how PA collection runs work

Building a PA indicator from scratch

Navigate to Performance Analytics > Indicators > Create New. Set the Table (e.g. incident), add a filter condition (active=true), select COUNT as the aggregate, and save. The indicator is now configured but has no data — you need to run the collection job to populate the first score. Navigate to Data Collector > Jobs, find the default daily collection job, and click Execute Now to generate an immediate score. After collection, navigate to the indicator and check the Scores related list — you should see a score record with today's date and the current count value.

Once scores exist, you can add the indicator to a widget on a dashboard. Navigate to a dashboard, add a Score widget, select your indicator, and configure the display (gauge, number, trend line). The trend line only shows meaningful data after multiple collection periods — daily collection for 30 days gives you a 30-day trend. This is why setting up PA early is important: the value of historical trend data is proportional to how long you have been collecting it.

Related: Performance Analytics deep dive · GlideAggregate · Scheduled Jobs · SLA management

Breakdown sources and dimension management

A Breakdown Source defines the dimension you can slice an indicator by. To break down "Open Incidents" by Assignment Group, create a Breakdown Source on the sys_user_group table with the name field as the display value. Attach that breakdown source to your indicator. On the next collection run, PA generates one score per group per time period. This gives you "Open Incidents — Network Team: 47, Service Desk: 112, Infrastructure: 23" as separate data points rather than just a total.

Limit breakdown dimensions to 20–25 values. A breakdown with 200 assignment groups generates 200 scores per collection period — this multiplies storage requirements and makes charts unreadable. Filter the breakdown to only the groups that matter for the metric being tracked. Navigate to the Breakdown Source record and add a filter condition to restrict which values are included.

Targets — making metrics actionable

A metric without a target is just a number. Configure targets on your indicators to turn numbers into status signals. On the indicator record, navigate to the Targets related list and add threshold records: a Green target at the performance level you want to achieve, an Amber target at the warning level, and a Red target at the breach level. ServiceNow renders scorecard widgets with colour coding based on target thresholds — a practitioner glancing at a dashboard sees instantly whether each metric is healthy, at risk, or breached without reading the numbers.

Target direction matters: for "Open P1 Incidents", lower is better — configure the target so that green means "below 5", amber means "5–10", red means "above 10". For "First Call Resolution Rate", higher is better — configure accordingly. Getting the direction wrong makes the dashboard misleading, showing red for good performance and green for bad performance.

Integrating PA data with external reporting

PA score data is stored in the pa_scores table and is accessible via the Table API. External reporting tools (Power BI, Tableau, Grafana) can pull PA data directly via REST to combine ServiceNow metrics with data from other systems. The query pattern: GET /api/now/table/pa_scores?sysparm_query=indicator=[indicator_sys_id]^collected_onONLast 30 days&sysparm_fields=collected_on,value,breakdown_value. This gives you the raw time-series data to build custom visualisations outside the ServiceNow platform.

Related: PA complete guide · GlideAggregate · Scheduled Jobs · Table API

Common PA configuration mistakes

PA indicators that show flat lines or zero values almost always have one of three root causes: the data collection job has never run for that indicator (check the collection job's schedule and last run time), the filter condition on the indicator excludes all records (test the condition as a GlideRecord query in Scripts - Background to verify it returns results), or the indicator is set to collect for a breakdown but the breakdown source has no matching values (verify the breakdown source filter condition returns values). PA misconfiguration can be invisible in the UI — an indicator with a misconfigured filter silently collects zero counts rather than reporting an error.

PA in the context of the platform

Performance Analytics works alongside the Notification Engine for threshold breach alerts, the Scheduled Job system for data collection, and the GlideAggregate API that powers the score calculations. The platform also surfaces PA data in dashboards through the homepage and embedded widgets, and exports it via the Table API for external reporting. Understanding PA's place in this ecosystem — rather than treating it as an isolated tool — helps you design metrics programmes that integrate with your broader ServiceNow architecture and reporting strategy.

PA and scheduled reporting

Combine PA scores with Scheduled Jobs for automated weekly or monthly digest reports. The job queries the pa_scores table for the indicators you care about, formats the data into an HTML email body, and sends it to relevant stakeholders via ServiceNow notifications. This gives executives a regular view into platform health metrics without needing to log in to ServiceNow — a common requirement in organisations where IT leadership wants operational visibility without becoming platform users themselves.

Getting started with PA today

If your instance does not have Performance Analytics activated, navigate to System Applications and search for "Performance Analytics." The base plugin is included in most enterprise licences. Start with three indicators: Open Incident Count (active=true, COUNT), P1 Open Count (active=true AND priority=1, COUNT), and Resolved Today (state=6, resolved_at=Today, COUNT). Run the collection job, check that scores appear, and add them to your IT operations dashboard. Three meaningful metrics collected consistently are more valuable than twenty metrics collected sporadically. Build from this baseline as you understand what questions your stakeholders are asking and what data would help them answer those questions.

Key PA tables

The core Performance Analytics tables developers should know: pa_indicators (indicator definitions), pa_scores (collected score records — the time-series data), pa_targets (threshold configurations), pa_breakdowns (breakdown source definitions), and pa_widgets (dashboard widget configurations). Query these tables directly when you need to programmatically access PA data, build custom PA reports, or integrate PA metrics with external reporting tools. All are accessible via the Table API with appropriate roles.

Pass your ServiceNow interview

The NowSpectrum Interview Prep Kit covers 50 Q&As including Performance Analytics, reporting, and platform administration.

Get the Interview Prep Kit →
← Back to all posts