Guide

Real users

A monitor tells you the site answers. This tells you how it felt to the person who was on it — from their browser, their phone and their network.

Step by step

  1. Go to Real users and press + New application. One application per site, not per page.
  2. Name it the way you would say it out loud. Allowed origins is a comma-separated list of the domains that may report; leave it empty and any origin is accepted.
  3. LCP target and INP target are what “good” means for your site. 2500 ms and 200 ms are the standard thresholds; leave them alone unless you have a reason.
  4. Press Create application, open it, and go to Setup. The tag is there with your own key already in it — copy that one, not the one below.
  5. Paste it before </body> on every page of the site. It loads deferred, weighs under 3 KB and sends when the page is being left, so it is never on the critical path.
  6. The first visit shows up within a minute. Until one does, the application says so rather than showing you an empty chart.

What you paste

Paste before </body>
<script async src="https://hopmango.com/rum/rum.min.js"
        data-key="hmr_your_ingest_key"
        data-endpoint="https://api.hopmango.com/v1/rum/ingest"
        data-control="https://api.hopmango.com/rum/control/ping"></script>

The key in data-key is public by design: it travels in your page source and only grants writing metrics for this application. data-control measures the baseline latency of each visitor’s own connection, which is what separates “the site got slower” from “today’s visitors were on worse networks”. Never remove it.

The five numbers

  • LCP · Loading. When the main content is on screen. Good at 2500 ms or less.
  • INP · Responsiveness. How long a tap or click takes to show a response. Good at 200 ms or less.
  • CLS · Visual stability. How much the page jumps around while loading. Good at 0.1 or less.
  • TTFB · Server response. Server and network before the first byte arrives. Good at 800 ms or less.
  • FCP · First paint. When anything at all is painted. Good at 1800 ms or less.

Where the numbers appear

The application’s own page opens with one sentence — your site loads fast for most visitors, or it does not and here is the country or the page that is slow — and then the five numbers at the typical visitor (p75): three of four visits were faster than that. Averages are not shown, because one slow phone on a bad train drags an average to a number no real visitor experienced.

Underneath, the same numbers over time, by page, by country, and the JavaScript errors your visitors actually hit, per thousand views. Below twenty visits in the window nothing is rated at all: it says too few visits to judge, which is an honest answer and a green tick from three samples is not.

What we never collect, and how much we count

No cookies, no identifiers, nothing that follows a person between sessions: the visitor’s address is truncated before anything is stored and only the country survives it, the user agent is reduced to a browser family and a device type, and paths are normalized with the query string thrown away. That is the default, and it is why the tag needs no consent banner — if you would rather it waited for yours, Setup has the switch.

Page views are counted per UTC month, bots excluded: 10,000 on Free, 250,000 on Team, 2,000,000 on Business. Past it, visits stop being recorded until the month resets, and the screen says so with the number it did not record.

The one thing people get wrong

Pasting the tag on the home page only. The page people land on is almost never the page that is slow — the checkout, the search results and the product page are — and a site measured at its front door reports numbers that are true and useless. The other half of the same mistake is editing data-control out of the tag to save a request: percentiles from two different weeks then stop being comparable, and you will not be told.

Where to go next

Then turn a number into something that wakes somebody, and decide where it goes.