Real-User Monitoring (Core Web Vitals)
Real-User Monitoring, or RUM, measures how fast your pages actually load for real visitors and charts the results on your dashboard. It collects Core Web Vitals from real pageviews instead of a synthetic lab test.
What this does
When RUM is enabled, xSpeed Cache prints a small script (about 1 KB) on your frontend pages. That script measures five Core Web Vitals as each visitor uses the page and sends the values back to your own database:
- LCP — Largest Contentful Paint (loading)
- INP — Interaction to Next Paint (responsiveness)
- CLS — Cumulative Layout Shift (visual stability)
- FCP — First Contentful Paint
- TTFB — Time to First Byte
The values are stored in a custom table in your WordPress database. The dashboard then reads them back and shows the 50th, 75th, and 95th percentile for each metric over a time window (24 hours by default).
Note: The script loads the web-vitals library from a CDN (
unpkg.com) to do the measuring. The metric values themselves are sent only to your own site’s REST endpoint, not to any third party.
Why use it
Lab tools like PageSpeed Insights test one page from one location. RUM tells you what your real audience experiences across devices and connections. Percentiles matter here: the p75 and p95 show what your slower visitors are dealing with, not just the average.
Privacy
RUM is built to be light on data. It records the page URL, the device type (mobile or desktop), and the metric values. It does not record user identifiers, IP addresses, or the Referer. Everything stays in your own database.
RUM is off by default. If you prefer not to store visited URLs at all, leave it off.
Requirements
- xSpeed Cache Pro must be active. Real-User Monitoring is a Pro feature.
- The metrics table is created in your database when the module is activated.
How to set it up
- Open the xSpeed Cache dashboard and go to the Real-User Monitoring panel (the eye icon).
- Turn on Enable RUM beacon.
- Adjust the sample rate and the logged-in exclusion if you want (see below).
- Save. The beacon starts loading on frontend pages right away.
- Let real traffic come in, then check the panel for percentile charts. Low-traffic sites need time to gather enough samples.
Settings explained
| Setting | What it does | Default |
|---|---|---|
| Enable RUM beacon | Loads the ~1 KB measuring script on frontend pages and reports Core Web Vitals to your own database. | Off |
| Sample rate (%) | The fraction of pageviews to measure. Range 1–100. | 100 |
| Exclude logged-in users | Skips measurement for logged-in users so editor and admin pageviews do not skew the chart. | On |
Sample rate (%). At 100%, every pageview is measured. Lowering it reduces database writes on high-traffic sites, at the cost of a noisier picture. If your site gets a lot of traffic, a lower rate still gives a reliable percentile chart.
Exclude logged-in users. Editors and admins usually see uncached pages, which are slower. Including them would pull the chart toward the worst case, so this is on by default.
How the data is stored
Each measured pageview adds up to five rows to a custom database table (one row per metric). The table is capped at 10,000 rows by default; the oldest rows are pruned automatically as new ones come in. This keeps the table from growing without limit while still holding a useful recent history.
How to read the chart
For each metric, the panel shows three percentiles:
- p50 — the median visitor.
- p75 — the value 75% of visitors are at or below. This is the threshold Google uses for Core Web Vitals.
- p95 — your slowest visitors.
A metric is healthy when its p75 is in the “good” range. If p95 is far above p75, a subset of pages or devices is struggling and worth investigating.
Best practices
- Keep Exclude logged-in users on for a chart that reflects real visitor experience.
- On a busy site, lower the sample rate before turning RUM off entirely. You keep the data, with fewer writes.
- Give it time. Percentiles are only meaningful once you have a reasonable number of samples.
Troubleshooting
The chart is empty. RUM may have just been enabled, or your site may not have enough frontend traffic yet. Samples only come from non-admin pageviews. Confirm the beacon is enabled and wait for traffic.
Logged-in users are not showing up. That is expected. Exclude logged-in users is on by default. Turn it off if you want to include them.
Some metrics have data and others do not. Certain metrics, like INP, are only reported when a visitor interacts with the page. A page with no interaction will not produce an INP sample.
FAQ
Does RUM send my visitors’ data to a third party? No. Metric values go only to your own site. The script library is fetched from a CDN, but the measurements stay in your database.
Will the beacon slow down my pages? The script is about 1 KB and reports after the page is done, using the browser’s background beacon. It is designed to stay out of the critical path.
What is the difference between RUM and PageSpeed Insights? RUM is real visitors over time. PageSpeed Insights is a single lab audit run on demand. They answer different questions and work well together.
Related
- PageSpeed Insights Integration
- Reading the Cache Health Dashboard
- Performance Recommendations