ServiceNow Platform Performance KPIs and Metrics That Matter
Performance measures on a ServiceNow instance are only useful when each is written as a definition people can dispute and checked before it reaches a dashboard. This page covers page load time, API response time, database query performance, table size, availability, concurrent users, error rate and data freshness, with the data source and the typical misuse for each, then the monitoring cadence and when a percentile is the wrong choice.
Page Load Time: User Experience
Page load time (time from user click to page fully rendered) should be within a target you set for routine pages (list views, forms), with a longer target for complex pages (dashboards with multiple widgets). Measure load time for representative pages: incident list, change form, dashboard. Track over time; if load time is creeping upward compared with an earlier baseline, investigate and optimize.
Data source: ServiceNow monitoring, browser developer tools (Network tab), APM tools if deployed. Measure p50 (median), p95 (95th percentile, excludes slow outliers), p99 (99th percentile, shows worst-case). Track by browser, network location (office vs remote), time of day (load time often worse during peak hours).
Typical misuse: targeting average load time ignores outliers. If most of pages load in 3 seconds but occasional errors take 60 seconds, average looks fine but users perceive poor performance. Focus on p95 or p99, not average.
API Response Time: System Health
API response time (time from API call to response received) should stay within targets you set for queries and for complex operations. Measure for representative APIs: incident list query, update record, search. Track by API endpoint, response size (small queries faster than large result sets), time of day.
Data source: ServiceNow REST logs, integration logs, API monitoring tools. Measure latency distribution: what share of requests meet your targets, and how long the slowest ones take. Alert if p95 response time exceeds your threshold.
Common issue: slow API response is often caused by inefficient query or missing database index. If incident list API takes 10 seconds, check the query: is it filtering on indexed fields? Is it joining many tables? Database tuning is typically the fix.
Database Query Performance: Foundation
All page load time and API response time issues trace back to database queries. Measure query execution time: how long does it take to fetch incident list, to update a record, to run an aggregation. Baseline: record current timings for simple and complex queries, then set targets from that baseline.
Data source: the ServiceNow slow query log under System Diagnostics (Stats Tools), the transaction logs and the performance dashboard (Admin > System Diagnostics), slow query logs. Identify slow queries: which queries are taking longest, how often are they executed (top-100 by total time = top by optimization value).
Optimization is typically: add database index on frequently filtered fields, optimize query (avoid table scans, join only needed tables), archive old data (fewer rows to scan). Database tuning is your highest-ROI performance optimization.
Database Table Size: Scalability Indicator
As tables grow, queries slow. Measure table sizes (row count, disk space). Incident table might grow to 10M+ rows; at that size, unoptimized queries are very slow. Plan for growth: if incident table is growing 1M rows per year, in 5 years you will have 5M rows; design for that scale now, not later.
Strategy: archive old data (move closed incidents older than 1 year to archive table), partition large tables (split by date range), optimize queries (ensure indexes are used). Monitoring should alert if table size grows unexpectedly (indicates more data than anticipated or data not being archived).
Platform Availability: Reliability
Availability: what percentage of time is the system working? Target a level agreed for the system (higher for critical systems), and convert it into allowed downtime per month or per week when you set it. Measure: (total time – downtime) / total time = availability percentage.
Data source: status page, uptime monitoring tools, incident tracking. Track planned downtime (maintenance windows) separately from unplanned downtime (outages). Aim to minimize both.
Typical issues: database issues, platform performance degradation (so slow it is unusable), integration failures cascading to platform. Monitor for these; alert when they occur.
Concurrent Users: Load Test
Test system behavior under load: how many concurrent users can the system support before performance degrades? Stress test: simulate 100, 200, 500 concurrent users performing typical workflows (creating records, updating, querying). Measure how response time and error rate change with load.
Baseline: system should support the full expected concurrent user count with p95 response time still acceptable. If you expect 500 concurrent users, stress test to 500+ users; if performance degrades significantly, you need optimization before launch.
Error Rate and Reliability
Track failed transactions: what percentage of requests fail, what are failure reasons? Error rate should be very low, with nearly all requests succeeding. Errors are typically: timeout, database connection failure, API unavailable. Monitor error trends; if error rate is rising, investigate and fix root cause.
Data Freshness: Reporting Accuracy
If your reporting and dashboards are based on data synced from other systems (HR data, financial data), measure sync delay: how often is data updated, is it always current or is lag acceptable? If reporting data lags by 24 hours, is that acceptable? Define SLA for data freshness and monitor adherence.
Performance Monitoring Cadence
Track metrics weekly or daily for critical systems (platform supporting a large user base), monthly for smaller systems. Set alerts: if page load time exceeds threshold for a sustained period, alert. If the error rate rises above its usual level, alert. Use dashboards to visualize trends; review in weekly ops standup to surface issues early.
Writing each measure as a definition people can dispute
A performance measure is only useful if two people who read it arrive at the same number. A common reason a dashboard loses the trust of its audience is that the definition lives in one analyst’s head. When the business owner asks why the figure moved, nobody can say whether a maintenance window was excluded, which user groups were counted or what the percentile was calculated over. The fix is to write every measure as a short definition card that can be checked and challenged.
| Field on the card | What to write | Common omission |
|---|---|---|
| What is counted | The events, requests or views included, named in plain terms | Counting background calls alongside user actions |
| The statistic | Median, a high percentile, or a count, stated explicitly | Reporting an average without saying it is an average |
| The window | The period and the time zone used to split it | Mixing a daily figure with a weekly one on the same chart |
| Exclusions | Planned maintenance, known outages, test accounts | Excluding maintenance quietly in one report but not another |
| Segments | The user groups or locations the figure is split by | Showing one global figure that hides a single affected office |
| Owner and review date | The named person who takes questions about the figure | Nobody named, so questions go unanswered |
Checking a measure before it reaches a dashboard
A new measure should pass a short test before anyone relies on it. The steps are simple, and they catch many of the arguments that would otherwise happen after the first bad week.
- Calculate the figure by hand for one known day, using the raw records, and compare it with the platform’s output.
- Change the window by a day and confirm the figure moves in the direction you expect.
- Find one day with a known incident and check that the measure shows it.
- Ask the business owner to explain the figure back in their own words. Any part they cannot explain needs rewriting.
- Publish the card next to the measure, and set a date to review it.
When a percentile is the wrong choice
High percentiles are useful for showing how bad the worst regular experience is, but they are unstable for small groups. A team with a small group of users in a given hour will see a high percentile jump with one slow request. In that case a median or a count of slow requests, with a stated threshold, will tell a more stable story. Choose the statistic to match the group size and the decision the figure supports, and write the reason on the card.
Measures that often cause disagreement
Expect disagreement about two measures in particular. The first is the start point for a page load, since a timing that begins at the click can include time the user spent elsewhere, while one that begins at the request can miss the time before it. The second is what counts as available. A platform that is reachable but unusable for a key screen is available in one definition and down in another. Settle both points on the card before the first report is sent, and record who made the decision.
Should the same measure be used for every team?
The definition should be the same across teams so the numbers can be compared, but the segments and targets can differ. A dispatch team and a finance team may share a measure and still have different acceptable figures.
How often should a definition card be reviewed?
When the platform changes in a way that affects what is counted, and at least when a question about the figure has been asked twice in a quarter. A card that never changes is often a card nobody reads.
Why do two reports disagree on the same measure?
Treat it as a defect in the definitions, not in the dashboards. Find the difference in window, exclusions or statistic, pick one definition, and rename the other measure so the name matches what it counts.
Can a measure be dropped?
Yes, and it should be when nobody uses it to make a decision. Keeping unused measures makes the important ones harder to find.
For the choice of what to measure at all, the article on monitoring dashboard decisions is a useful companion, and the platform performance overview shows where these measures sit in the wider section.
Related guides: ServiceNow Platform Performance: Roles, Responsibilities and RACI.
Frequently asked questions
What page load time should we target?
Set separate targets for routine pages (lists, forms) and complex pages (dashboards). These are user-experience targets; faster is always better. If you are already meeting your targets, focus on other optimizations. If you are far above them, optimization will have high ROI.
How do we know if performance is degrading?
Track metrics over time. Page load time was 2 seconds six months ago; if now 4 seconds, that is degradation. Set alerts: alert if p95 load time exceeds baseline meaningfully from baseline. This catches gradual degradation before users complain.
What should we do if database queries are slow?
First, identify the slow query (use the slow query log under System Diagnostics or the performance dashboard). Most common causes: missing index, inefficient join, full table scan. Add index on filtered fields; optimize query to avoid full scans. If table is very large (10M+ rows), archive old data to reduce scan time.
Related guides
Related Oblytech services
Where this topic turns into delivery work, these are the Oblytech services that cover it.
Planning, running or fixing a ServiceNow programme? Tell us where you are and we will suggest a sensible next step.
Contact us