{"componentChunkName":"component---src-templates-docs-js","path":"/guides/monitor-website-performance/real-user-monitoring","result":{"data":{"site":{"siteMetadata":{"title":"Documentation | LoadFocus","docsLocation":""}},"mdx":{"fields":{"id":"858da28f-0142-56e6-96b5-7af3337f7d11","title":"Real User Monitoring (RUM)","slug":"/guides/monitor-website-performance/real-user-monitoring","locale":"en-GB"},"body":"var _excluded = [\"components\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\n/* @jsxRuntime classic */\n/* @jsx mdx */\n\nvar _frontmatter = {\n  \"title\": \"Real User Monitoring (RUM)\",\n  \"date\": \"2026-10-29\",\n  \"metaTitle\": \"Real User Monitoring (RUM) for Core Web Vitals | LoadFocus\",\n  \"metaDescription\": \"Add one small script to your site and see LCP, INP, CLS, FCP and TTFB from your own visitors, per page and per device, with no cookies and no stored IPs.\",\n  \"order\": 18\n};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n    props = _objectWithoutProperties(_ref, _excluded);\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"p\", null, \"Real user monitoring (RUM) measures Core Web Vitals in the browsers of the people who visit your site. You add one small script to your pages, and LoadFocus shows LCP, INP, CLS, FCP and TTFB at the 75th percentile, per page and per device. It also shows what slows them down: the elements, images and scripts behind the numbers, and how they differ by country, browser, connection and navigation type.\"), mdx(\"p\", null, \"Lab runs tell you how fast a page can be from one location on one device profile. RUM tells you how fast it is for your visitors. It also works where the \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"/docs/guides/monitor-website-performance/real-user-field-data\"\n  }, \"Chrome UX Report field data\"), \" has nothing to show, because it does not depend on Google having enough Chrome traffic for your site.\"), mdx(\"h2\", null, \"Add a site\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Click \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"RUM\"), \" in the sidebar of the page speed app, or open \", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://speed.loadfocus.com/rum\"\n  }, \"speed.loadfocus.com/rum\"), \". The page lists your sites.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Click \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Add a site\"), \", enter a \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Site name\"), \" and the \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Hostnames\"), \" the site runs on, and click \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Create site\"), \".\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Open the site and copy the snippet from \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Install\"), \". Paste it into the \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"<head>\"), \" of every page.\")), mdx(\"p\", null, \"Separate hostnames with commas, up to 10 per site. Page views are counted only from these hostnames, and \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"*.example.com\"), \" covers \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"example.com\"), \" and every subdomain. The hostname check stops casual pollution of your numbers, but the site key in the snippet is public, so treat the numbers as visitor data, not as a security control.\"), mdx(\"p\", null, \"If your site sends a strict \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"Referrer-Policy: no-referrer\"), \", the browser sends no origin with the beacon and those page views are not counted. For such a site, tick \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Accept page views from pages that send no origin\"), \" in the site's settings. The hostname is then taken from the snippet, which any page could fake, so leave it off unless your site needs it.\"), mdx(\"h2\", null, \"The snippet\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-html\"\n  }, \"<script async src=\\\"https://speed.loadfocus.com/rum.js\\\" data-site=\\\"YOUR_SITE_KEY\\\"></script>\\n\")), mdx(\"p\", null, \"The snippet on the site's page has your site key filled in. The script loads after your page and sends one small beacon when the visitor leaves the page or hides the tab.\"), mdx(\"p\", null, \"Three optional settings:\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Sampling.\"), \" \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"data-sample=\\\"0.25\\\"\"), \" measures a quarter of page views. Page views outside the sample are not measured at all. The \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Measure\"), \" choice above the snippet on the site's page sets it for you.\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Page names.\"), \" By default each page is named by its path. To group pages yourself, set \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"window.LOADFOCUS_RUM_PAGE\"), \" on the page, for example \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"window.LOADFOCUS_RUM_PAGE = \\\"/product/:id\\\";\"), \".\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"p\", {\n    parentName: \"li\"\n  }, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Pinned version.\"), \" On the site's page, \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Pin this version (Subresource Integrity)\"), \" gives you a snippet that loads a frozen copy of the script with its integrity hash:\"), mdx(\"pre\", {\n    parentName: \"li\"\n  }, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-html\"\n  }, \"<script async src=\\\"https://speed.loadfocus.com/rum.v1.js\\\" integrity=\\\"sha384-...\\\" crossorigin=\\\"anonymous\\\" data-site=\\\"YOUR_SITE_KEY\\\"></script>\\n\")), mdx(\"p\", {\n    parentName: \"li\"\n  }, \"Nothing LoadFocus deploys can change that script, and the browser refuses it if it ever differs from the hash. Copy the snippet from the site's page for the real hash. To get a later version, install the new snippet. The plain \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"rum.js\"), \" snippet always loads the current version.\"))), mdx(\"p\", null, \"If your site sends a Content-Security-Policy, allow \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"https://speed.loadfocus.com\"), \" in \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"script-src\"), \" (the script) and in \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"connect-src\"), \" (the beacon).\"), mdx(\"h2\", null, \"What is measured\"), mdx(\"table\", null, mdx(\"thead\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"thead\"\n  }, mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Metric\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Good\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Needs improvement\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Poor\"))), mdx(\"tbody\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Largest Contentful Paint (LCP)\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"<= 2.5 s\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"<= 4 s\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"> 4 s\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Interaction to Next Paint (INP)\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"<= 200 ms\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"<= 500 ms\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"> 500 ms\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Cumulative Layout Shift (CLS)\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"<= 0.1\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"<= 0.25\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"> 0.25\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"First Contentful Paint (FCP)\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"<= 1.8 s\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"<= 3 s\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"> 3 s\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Time to First Byte (TTFB)\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"<= 800 ms\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"<= 1.8 s\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"> 1.8 s\")))), mdx(\"p\", null, \"LCP, INP and CLS are the Core Web Vitals. The values follow the same rules as Google's web-vitals library: LCP stops at the first input, CLS is the largest burst of layout shifts, INP leaves out one outlier per 50 interactions, and paints in a tab opened in the background do not count. Each page view is classed as mobile or desktop.\"), mdx(\"p\", null, \"One beacon is sent per page view. A page restored from the browser's back/forward cache counts as a new page view, as Google's web-vitals library reports it.\"), mdx(\"p\", null, \"Page views from bots, crawlers, headless browsers, lab tools such as Lighthouse (LoadFocus monitors included) and scripts are not counted. The site's page shows how many were left out in the last 24 hours.\"), mdx(\"h2\", null, \"Privacy\"), mdx(\"p\", null, \"The script sets no cookies and stores nothing in the browser. Each beacon carries the page path, the device class and the numbers, plus what explains them:\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Short CSS selectors of the elements behind LCP, INP and CLS: the tag, the id and up to two class names, never text or other attributes.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"The address of the LCP image and of the slowest script, without the query string.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"The connection type and how the page was opened (normal visit, reload, back or forward).\")), mdx(\"p\", null, \"And:\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"The query string and the hash of the page are never sent.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Ids, numbers, tokens and email addresses in paths are grouped as \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \":id\"), \", so \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"/orders/48213\"), \" and \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"/orders/48214\"), \" are both counted as \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"/orders/:id\"), \".\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"The visitor's IP address is used in memory to look up the country and, as a hash that changes every day, for the rate limits. It is never stored.\")), mdx(\"p\", null, \"Paths and element ids come from your own pages. If a path can carry a name, for example \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"/u/jane.doe\"), \", give those pages one name with \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"window.LOADFOCUS_RUM_PAGE\"), \". There is nothing to add to a cookie banner.\"), mdx(\"h2\", null, \"Read the dashboard\"), mdx(\"p\", null, \"Each site has its own page. Choose the \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Period\"), \" (\", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"7 days\"), \", \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"28 days\"), \" or \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"90 days\"), \") and you get:\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"A tile per metric\"), \" with its p75, colored good, needs improvement or poor, the share of page views in each band and the share that is good.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"A daily chart\"), \" of the p75 for the metric you click, with the good and poor thresholds as dashed lines and page views as faint bars.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Pages\"), \": your most viewed pages with their views and p75 LCP, INP and CLS. Pages beyond the first 300 distinct paths in a day are counted as \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"(other pages)\"), \". Hover a page's LCP to see its four phases.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Devices\"), \": the share of page views and the p75 LCP, INP and CLS for \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Mobile\"), \" and \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Desktop\"), \".\")), mdx(\"p\", null, \"Numbers appear within a few minutes of the first visits.\"), mdx(\"p\", null, \"Each site on the \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"RUM\"), \" page shows \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Receiving data\"), \" or \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Waiting for the first page view\"), \". A p75 that stands on fewer than 30 page views is shown grey as \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Too few to rate\"), \", with its count, because it can still swing a lot. Days in the chart are UTC days.\"), mdx(\"h2\", null, \"What slows your pages\"), mdx(\"p\", null, \"Below the pages and devices, each site shows what is behind its numbers. The same snippet collects it, so there is nothing to set up.\"), mdx(\"h3\", null, \"What slows LCP\"), mdx(\"p\", null, \"A bar splits LCP into four phases, each at the 75th percentile:\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Time to first byte\"), \": until the first byte of the page arrives.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Load delay\"), \": from then until the browser starts downloading the LCP image.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Load duration\"), \": the download of the image.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Render delay\"), \": from the end of the download until the image or text is painted.\")), mdx(\"p\", null, \"A text LCP has no load delay and no load duration. Each phase is its own percentile, so the four do not add up to the LCP above. Under the bar, \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Element\"), \" lists the elements that were the LCP as a short CSS selector, with their type (\", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Image\"), \" or \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Text\"), \"), views and LCP, and \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Image\"), \" lists the LCP images by address.\"), mdx(\"h3\", null, \"What slows INP\"), mdx(\"p\", null, \"A bar splits the slowest interaction of each page view into \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Input delay\"), \" (waiting for the main thread), \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Processing\"), \" (running the event handlers) and \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Presentation\"), \" (painting the next frame). \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Slowest interactions\"), \" lists the elements people clicked, tapped or typed in, with the event. \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Scripts running during the slowest interaction\"), \" lists the script that ran longest during it, by address, with what started it (\", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Started by\"), \", for example \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"event-listener\"), \"). Only Chrome and Edge report scripts.\"), mdx(\"h3\", null, \"What shifts\"), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"What shifts\"), \" lists the element that moved most in each page view's largest burst of layout shifts, with its CLS.\"), mdx(\"p\", null, \"Each of these tables keeps up to 100 different elements, images or scripts a day per site. The rest are counted as \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"(other elements)\"), \", \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"(other images)\"), \" or \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"(other scripts)\"), \".\"), mdx(\"h3\", null, \"Breakdowns\"), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Breakdowns\"), \" shows views and p75 LCP, INP, CLS and TTFB per:\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Country\"), \": from the visitor's IP address, looked up when the page view arrives and not kept. Up to 60 countries a day per site, the rest in \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Other countries\"), \". Countries come from GeoLite2 data created by MaxMind.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Browser\"), \": Chrome, Edge, Safari, Firefox, Samsung Internet, Opera, or \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Other browsers\"), \".\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Connection\"), \": the effective connection type the browser reports (4g, 3g, 2g, slow-2g). Only Chrome, Edge and other Chromium browsers report it, so Safari and Firefox visits show as \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Not reported\"), \".\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Navigation\"), \": \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Normal visit\"), \", \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Reload\"), \", \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Back or forward\"), \", \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Back/forward cache\"), \" (a page restored instantly) and \", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Prerendered\"), \".\")), mdx(\"h2\", null, \"Alerts\"), mdx(\"p\", null, \"In \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Alerts\"), \" on a site's page, pick a metric, enter a threshold after \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"p75 above\"), \", tick the alert channels under \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Notify\"), \" and click \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Add alert\"), \". You can add up to 5 alerts per site. Each is checked every hour against today and yesterday (UTC), once at least 30 page views are measured. You get one message when the p75 goes above the threshold and one when it is back under. Alerts go to your team's \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://speed.loadfocus.com/alert-channels\"\n  }, \"alert channels\"), \".\"), mdx(\"h2\", null, \"Deploy markers\"), mdx(\"p\", null, \"To see your releases on the daily chart, post a marker with the site key (the \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"data-site\"), \" value in the snippet) as \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"configId\"), \":\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-bash\"\n  }, \"curl -X POST \\\"https://speed.loadfocus.com/api/test/applighthouse/annotations\\\" \\\\\\n  -H \\\"loadfocus-auth: YOUR_API_KEY\\\" -H \\\"content-type: application/json\\\" \\\\\\n  -d '{\\\"label\\\":\\\"Deployed v1.4.2\\\",\\\"configId\\\":\\\"YOUR_SITE_KEY\\\"}'\\n\")), mdx(\"p\", null, \"Markers posted without a \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"configId\"), \" show on every site and monitor. More in \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"/docs/guides/monitor-website-performance/ci-build-gating\"\n  }, \"CI Build Gating & Deploy Markers\"), \".\"), mdx(\"h2\", null, \"Limits\"), mdx(\"table\", null, mdx(\"thead\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"thead\"\n  }, mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Plan\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Sites\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Page views per month\"))), mdx(\"tbody\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Free\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"1\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"10,000\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"Paid\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"20\"), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": null\n  }, \"1,000,000\")))), mdx(\"p\", null, \"Page views are counted per team. The page shows how many you have used this month. Once the limit is reached, new page views are not counted until next month.\"), mdx(\"p\", null, \"To change the name or hostnames of a site, use \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Edit site\"), \". \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Delete site\"), \" removes the site and all its data.\"), mdx(\"h2\", null, \"Related\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"/docs/guides/monitor-website-performance/real-user-field-data\"\n  }, \"Real-user field data (CrUX)\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"/docs/guides/monitor-website-performance/core-web-vitals-metrics\"\n  }, \"Core Web Vitals metrics\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"/docs/guides/monitor-website-performance/largest-contentful-paint\"\n  }, \"Largest Contentful Paint\"))));\n}\n;\nMDXContent.isMDXComponent = true;","tableOfContents":{"items":[{"url":"#add-a-site","title":"Add a site"},{"url":"#the-snippet","title":"The snippet"},{"url":"#what-is-measured","title":"What is measured"},{"url":"#privacy","title":"Privacy"},{"url":"#read-the-dashboard","title":"Read the dashboard"},{"url":"#what-slows-your-pages","title":"What slows your pages","items":[{"url":"#what-slows-lcp","title":"What slows LCP"},{"url":"#what-slows-inp","title":"What slows INP"},{"url":"#what-shifts","title":"What shifts"},{"url":"#breakdowns","title":"Breakdowns"}]},{"url":"#alerts","title":"Alerts"},{"url":"#deploy-markers","title":"Deploy markers"},{"url":"#limits","title":"Limits"},{"url":"#related","title":"Related"}]},"parent":{"__typename":"File","relativePath":"en/guides/monitor-website-performance/real-user-monitoring.md"},"frontmatter":{"metaTitle":"Real User Monitoring (RUM) for Core Web Vitals | LoadFocus","metaDescription":"Add one small script to your site and see LCP, INP, CLS, FCP and TTFB from your own visitors, per page and per device, with no cookies and no stored IPs.","order":18,"noindex":null}},"allMdx":{"edges":[{"node":{"fields":{"slug":"/","title":"Welcome to the LoadFocus Documentation"}}},{"node":{"fields":{"slug":"/guides","title":"How-To Guides"}}},{"node":{"fields":{"slug":"/knowledge-base","title":"Knowledge Base"}}},{"node":{"fields":{"slug":"/pricing","title":"Pricing FAQs"}}},{"node":{"fields":{"slug":"/knowledge-base/how-to-delete-your-account","title":"How to Delete Your Account"}}},{"node":{"fields":{"slug":"/guides/api-monitoring","title":"API Monitoring"}}},{"node":{"fields":{"slug":"/knowledge-base/how-to-update-card-details","title":"How to Update Card Details for Failed Payments"}}},{"node":{"fields":{"slug":"/knowledge-base/understanding-declined-card-payments","title":"Why has my card payment been declined?"}}},{"node":{"fields":{"slug":"/knowledge-base/using-3rd-party-tools-to-load-test-website-locally","title":"How to Load Test a Locally Hosted Website or API"}}},{"node":{"fields":{"slug":"/knowledge-base/understanding-differences-between-http-and-https","title":"Differences between HTTP and HTTPS"}}},{"node":{"fields":{"slug":"/knowledge-base/using-google-analytics-and-no-requests-while-load-testing","title":"No traffic in Google Analytics while load testing"}}},{"node":{"fields":{"slug":"/knowledge-base/using-query-parameters","title":"How to Use URL Query Parameters"}}},{"node":{"fields":{"slug":"/guides/jmeter-load-testing","title":"Load Testing with Apache JMeter"}}},{"node":{"fields":{"slug":"/guides/external-reports","title":"External Reporting"}}},{"node":{"fields":{"slug":"/guides/k6-load-testing","title":"k6 Load Testing"}}},{"node":{"fields":{"slug":"/knowledge-base/what-is-an-http-method","title":"What is an HTTP request method"}}},{"node":{"fields":{"slug":"/knowledge-base/using-valid-url-endpoints","title":"What is a Valid URL for a Load Test"}}},{"node":{"fields":{"slug":"/guides/monitor-website-performance","title":"Monitor Website Performance"}}},{"node":{"fields":{"slug":"/guides/mcp","title":"AI Assistants (MCP)"}}},{"node":{"fields":{"slug":"/guides/load-testing","title":"Load Testing"}}},{"node":{"fields":{"slug":"/guides/onboarding","title":"LoadFocus Onboarding"}}},{"node":{"fields":{"slug":"/guides/monitoring-as-code","title":"Monitoring as Code"}}},{"node":{"fields":{"slug":"/guides/setup-teardown-scripts","title":"Setup and teardown scripts"}}},{"node":{"fields":{"slug":"/guides/openapi-import","title":"Import from OpenAPI / Swagger"}}},{"node":{"fields":{"slug":"/guides/teams","title":"Teams Management"}}},{"node":{"fields":{"slug":"/guides/reusable-snippets","title":"Reusable snippets"}}},{"node":{"fields":{"slug":"/guides/external-reports/azure-app-insights-integration","title":"Azure App Insights Integration"}}},{"node":{"fields":{"slug":"/guides/jmeter-load-testing/downloading-jmx-csv-files","title":"Downloading .JMX and .CSV Files in LoadFocus"}}},{"node":{"fields":{"slug":"/guides/k6-load-testing/analyzing-k6-test-results","title":"Analyzing k6 Load Test Results"}}},{"node":{"fields":{"slug":"/guides/load-testing/adding-notes-to-results","title":"Adding Notes to Test Results"}}},{"node":{"fields":{"slug":"/guides/monitor-website-performance/alert-configuration","title":"Alert Configuration"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/alert-channels","title":"Alert Channels"}}},{"node":{"fields":{"slug":"/guides/external-reports/datadog-integration","title":"Datadog Integration"}}},{"node":{"fields":{"slug":"/guides/jmeter-load-testing/how-to-run-new-apache-jmeter-load-test","title":"How to Run a New Apache JMeter Load Test"}}},{"node":{"fields":{"slug":"/guides/k6-load-testing/how-to-run-k6-load-test","title":"How to Run a New k6 Load Test"}}},{"node":{"fields":{"slug":"/guides/load-testing/ai-credits","title":"AI Credits"}}},{"node":{"fields":{"slug":"/guides/monitor-website-performance/alert-metrics","title":"Alert Metrics"}}},{"node":{"fields":{"slug":"/guides/external-reports/dynatrace-integration","title":"Dynatrace Integration"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/api-check-results","title":"Understanding API Check Results"}}},{"node":{"fields":{"slug":"/guides/jmeter-load-testing/import-to-jmeter-from-curl-har-postman-openapi","title":"Import cURL, HAR, Postman or OpenAPI to a JMeter Test"}}},{"node":{"fields":{"slug":"/guides/k6-load-testing/import-to-k6-from-curl-har-postman-openapi","title":"Import cURL, HAR, Postman or OpenAPI to a k6 Test"}}},{"node":{"fields":{"slug":"/guides/load-testing/analyzing-load-test-results","title":"How to Check Load Test Results"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/browser-checks","title":"Browser Checks"}}},{"node":{"fields":{"slug":"/guides/monitor-website-performance/ci-build-gating","title":"CI Build Gating & Deploy Markers"}}},{"node":{"fields":{"slug":"/guides/external-reports/new-relic-integration","title":"New Relic Integration"}}},{"node":{"fields":{"slug":"/guides/k6-load-testing/uploading-k6-scripts","title":"Uploading k6 Scripts and Data Files"}}},{"node":{"fields":{"slug":"/guides/load-testing/authorization-code-grant-type-oauth-2-0","title":"Authorization Code Grant Type in OAuth 2.0"}}},{"node":{"fields":{"slug":"/guides/monitor-website-performance/core-web-vitals-competitor-comparison","title":"Core Web Vitals Competitor Comparison"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/check-groups","title":"Check Groups"}}},{"node":{"fields":{"slug":"/guides/external-reports/opentelemetry-integration","title":"OpenTelemetry (OTLP) Integration"}}},{"node":{"fields":{"slug":"/guides/load-testing/baseline-comparison-between-load-tests","title":"Baseline Comparison Between Load Tests"}}},{"node":{"fields":{"slug":"/guides/jmeter-load-testing/jmeter-integration-ci-cd","title":"Run JMeter Tests with the LoadFocus API Client"}}},{"node":{"fields":{"slug":"/guides/monitor-website-performance/core-web-vitals-metrics","title":"What are the Core Web Vitals?"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/check-retries-and-alert-thresholds","title":"Check Retries and Alert Thresholds"}}},{"node":{"fields":{"slug":"/guides/jmeter-load-testing/load-generators-hardware-infrastructure-jmeter","title":"What are the hardware resources allocated to my account for load generators?"}}},{"node":{"fields":{"slug":"/guides/load-testing/client-credentials-grant-type-oauth-2-0","title":"Client Credentials Grant Type in OAuth 2.0"}}},{"node":{"fields":{"slug":"/guides/monitor-website-performance/experiments","title":"Page Speed Experiments"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/custom-domain-status-page","title":"How to Add a Custom Domain to Your Status Page"}}},{"node":{"fields":{"slug":"/guides/jmeter-load-testing/load-testing-anomalies","title":"Load Testing Anomalies"}}},{"node":{"fields":{"slug":"/guides/monitor-website-performance/getting-started","title":"Getting Started"}}},{"node":{"fields":{"slug":"/guides/load-testing/common-http-error-codes","title":"Common HTTP Error status codes"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/dashboards","title":"Dashboards"}}},{"node":{"fields":{"slug":"/guides/jmeter-load-testing/load-testing-engine-health-monitoring","title":"Engine Health Monitoring"}}},{"node":{"fields":{"slug":"/guides/monitor-website-performance/how-to-create-new-alert","title":"Create a New Alert"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/dns-monitors","title":"DNS Monitors"}}},{"node":{"fields":{"slug":"/guides/jmeter-load-testing/load-testing-error-analysis","title":"Error Analysis"}}},{"node":{"fields":{"slug":"/guides/load-testing/decoding-average-response-times","title":"Decoding Average Response Time"}}},{"node":{"fields":{"slug":"/guides/monitor-website-performance/how-to-run-new-website-performance-test","title":"Create New Website Performance Test"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/heartbeat-monitors","title":"Heartbeat (Cron Job) Monitors"}}},{"node":{"fields":{"slug":"/guides/load-testing/crafting-perfect-test-names","title":"Crafting Perfect Test Names"}}},{"node":{"fields":{"slug":"/guides/jmeter-load-testing/load-testing-insights","title":"Load Testing Insights"}}},{"node":{"fields":{"slug":"/guides/monitor-website-performance/http-authentication","title":"HTTP Authentication"}}},{"node":{"fields":{"slug":"/guides/load-testing/deep-dive-samples-in-load-testing","title":"What are Samples in Load Testing?"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/incident-management","title":"Incident Management"}}},{"node":{"fields":{"slug":"/guides/load-testing/demo","title":"Demo"}}},{"node":{"fields":{"slug":"/guides/jmeter-load-testing/load-testing-jtl-file-analysis","title":"Logs & JTL File Analysis"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/maintenance-windows","title":"Maintenance Windows"}}},{"node":{"fields":{"slug":"/guides/monitor-website-performance/largest-contentful-paint","title":"Largest Contentful Paint (LCP)"}}},{"node":{"fields":{"slug":"/guides/load-testing/end-time-in-load-testing","title":"Understanding the Significance of 'End Time' in Load Testing"}}},{"node":{"fields":{"slug":"/guides/monitor-website-performance/lighthouse-opportunities","title":"Lighthouse Opportunities"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/multistep-api-checks","title":"Multistep API Checks"}}},{"node":{"fields":{"slug":"/guides/jmeter-load-testing/load-testing-jtl-jmeter-log-file-analysis","title":"JMeter Log File Analysis"}}},{"node":{"fields":{"slug":"/guides/jmeter-load-testing/load-testing-timeline-analysis","title":"Timeline View"}}},{"node":{"fields":{"slug":"/guides/monitor-website-performance/pdf-report-branding","title":"Branded PDF Reports"}}},{"node":{"fields":{"slug":"/guides/load-testing/errors-by-type","title":"Errors by Type and Error Rate"}}},{"node":{"fields":{"slug":"/guides/load-testing/erros-and-reponse-codes","title":"Errors and Response Codes"}}},{"node":{"fields":{"slug":"/guides/jmeter-load-testing/uploading-jmeter-files-step-by-step-guide","title":"Uploading JMeter Files to LoadFocus: A Step-by-Step Guide"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/new-api-check","title":"How to Create a New API Check"}}},{"node":{"fields":{"slug":"/guides/monitor-website-performance/performance-budgets","title":"Performance Budgets & Alerts"}}},{"node":{"fields":{"slug":"/guides/monitor-website-performance/real-user-field-data","title":"Real-User Field Data (CrUX)"}}},{"node":{"fields":{"slug":"/guides/load-testing/geographical-test-location-in-load-testing","title":"Geographical Test Location in Load Testing"}}},{"node":{"fields":{"slug":"/guides/jmeter-load-testing/using-multiple-csv-files-with-jmeter-engines","title":"Using Multiple CSV Files with JMeter Engines in LoadFocus"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/recent-failures","title":"Recent Failures"}}},{"node":{"fields":{"slug":"/guides/load-testing/getting-started","title":"Getting Started"}}},{"node":{"fields":{"slug":"/guides/monitor-website-performance/real-user-monitoring","title":"Real User Monitoring (RUM)"}}},{"node":{"fields":{"slug":"/guides/load-testing/granularity-in-load-test-results-and-charts","title":"Granularity in Load Test Results and Chart Display"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/sla-slo-reports","title":"SLA & SLO Uptime Reports"}}},{"node":{"fields":{"slug":"/guides/monitor-website-performance/sitemap-import","title":"Sitemap Import"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/snippets","title":"Snippets"}}},{"node":{"fields":{"slug":"/guides/load-testing/group-filter-load-test-results-by-url","title":"Group and Filter Load Test Results by URL"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/ssl-certificate-monitoring","title":"SSL Certificate Monitoring"}}},{"node":{"fields":{"slug":"/guides/load-testing/headers-and-manage-presets","title":"Headers and Header Presets"}}},{"node":{"fields":{"slug":"/guides/monitor-website-performance/visual-regression-testing","title":"Visual Regression Testing"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/status-page-api","title":"Status Page API, RSS Feeds and Status Badge"}}},{"node":{"fields":{"slug":"/guides/load-testing/how-to-run-new-load-test","title":"How to Run a New Load Test"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/status-pages","title":"Create a Public Status Page for Your Monitors"}}},{"node":{"fields":{"slug":"/guides/load-testing/how-to-url-query-parameters","title":"Query Parameters"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/synthetic-monitoring","title":"Synthetic Monitoring"}}},{"node":{"fields":{"slug":"/guides/load-testing/http-methods-overview-load-testing","title":"HTTP Methods: An Overview"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/tcp-monitors","title":"TCP Port Monitors"}}},{"node":{"fields":{"slug":"/guides/load-testing/load-generator-saturation","title":"Load Generator Saturation"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/uptime-monitoring","title":"Uptime Monitoring"}}},{"node":{"fields":{"slug":"/guides/load-testing/implicit-grant-type-oauth-2-0","title":"Implicit Grant Type in OAuth 2.0"}}},{"node":{"fields":{"slug":"/guides/load-testing/load-generators-hardware-infrastructure","title":"What are the hardware resources allocated to my account for load generators?"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/variables","title":"Variables"}}},{"node":{"fields":{"slug":"/guides/load-testing/load-test-results-api","title":"Results Analysis API"}}},{"node":{"fields":{"slug":"/guides/load-testing/load-test-result-ai-analysis","title":"Load Testing Results AI Analysis"}}},{"node":{"fields":{"slug":"/guides/load-testing/page-speed-under-load","title":"Page Speed Under Load"}}},{"node":{"fields":{"slug":"/guides/load-testing/page-speed-under-load-trends","title":"Page Speed Under Load Trends"}}},{"node":{"fields":{"slug":"/guides/load-testing/pass-fail-thresholds","title":"Pass/Fail Thresholds"}}},{"node":{"fields":{"slug":"/guides/load-testing/password-credentials-grant-type-oauth-2-0","title":"Password Credentials Grant Type in OAuth 2.0"}}},{"node":{"fields":{"slug":"/guides/load-testing/reading-the-capacity-panel","title":"Reading the Capacity Panel"}}},{"node":{"fields":{"slug":"/guides/load-testing/performance-trend-load-test-results","title":"Performance Trend"}}},{"node":{"fields":{"slug":"/guides/load-testing/refresh-token-grant-type-oauth-2-0","title":"Refresh Token Grant Type in OAuth 2.0"}}},{"node":{"fields":{"slug":"/guides/load-testing/response-time-distribution","title":"Response Time Distribution"}}},{"node":{"fields":{"slug":"/guides/load-testing/response-time-vs-virtual-users","title":"Response Time vs. Virtual Users"}}},{"node":{"fields":{"slug":"/guides/load-testing/release-tags-and-run-annotations","title":"Release Tags and Run Annotations"}}},{"node":{"fields":{"slug":"/guides/load-testing/results-by-location","title":"Results by Location"}}},{"node":{"fields":{"slug":"/guides/load-testing/scheduled-load-tests","title":"Scheduled Load Tests"}}},{"node":{"fields":{"slug":"/guides/load-testing/share-load-test-reports","title":"Share Load Test Reports"}}},{"node":{"fields":{"slug":"/guides/load-testing/slowest-and-most-failing-requests","title":"Slowest and Most Failing Requests"}}},{"node":{"fields":{"slug":"/guides/load-testing/start-time-in-load-testing","title":"Understanding the Significance of Start Time in Load Testing"}}},{"node":{"fields":{"slug":"/guides/load-testing/using-cookies","title":"Using Cookies"}}},{"node":{"fields":{"slug":"/guides/load-testing/what-are-virtual-users-load-testing","title":"What are Virtual Users in Load Testing"}}},{"node":{"fields":{"slug":"/guides/load-testing/use-cases","title":"Use Cases"}}},{"node":{"fields":{"slug":"/guides/load-testing/what-are-iterations-load-testing","title":"What Are Iterations in Load Testing?"}}},{"node":{"fields":{"slug":"/guides/load-testing/what-is-delay-when-running-a-load-test","title":"What is Delay when running a Load Test?"}}},{"node":{"fields":{"slug":"/guides/load-testing/what-is-duration-in-load-testing","title":"What is Duration in Load Testing"}}},{"node":{"fields":{"slug":"/guides/load-testing/what-is-grant-type","title":"What is a Grant Type?"}}},{"node":{"fields":{"slug":"/guides/load-testing/what-is-oauth-2-0-authorization","title":"OAuth 2.0 Authorization"}}},{"node":{"fields":{"slug":"/guides/load-testing/what-is-ramp-up-steps-in-load-testing","title":"What is Ramp Up Steps in Load Testing"}}},{"node":{"fields":{"slug":"/guides/load-testing/what-is-ramp-up-time-in-load-testing","title":"What is Ramp Up Time in Load Testing"}}},{"node":{"fields":{"slug":"/guides/load-testing/what-is-test-run-id","title":"What is a Test Run Id?"}}},{"node":{"fields":{"slug":"/guides/load-testing/white-label-report-branding","title":"Branded PDF Reports"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/alert-channels/email","title":"Email Alerts"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/alert-channels/discord","title":"Discord Alerts"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/alert-channels/microsoft-teams","title":"Microsoft Teams Alerts"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/alert-channels/pagerduty","title":"PagerDuty Alerts"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/alert-channels/opsgenie","title":"Opsgenie Alerts"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/alert-channels/slack","title":"Slack Alerts"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/alert-channels/webhook","title":"Webhook Alerts"}}},{"node":{"fields":{"slug":"/guides/jmeter-load-testing/jmeter-integration-ci-cd/azure-devops","title":"Azure DevOps"}}},{"node":{"fields":{"slug":"/guides/jmeter-load-testing/jmeter-integration-ci-cd/circleci","title":"CircleCI"}}},{"node":{"fields":{"slug":"/guides/jmeter-load-testing/jmeter-integration-ci-cd/gitlab-ci-cd","title":"GitLab CI/CD"}}},{"node":{"fields":{"slug":"/guides/jmeter-load-testing/jmeter-integration-ci-cd/jenkins","title":"Jenkins"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/new-api-check/frequency","title":"Frequency"}}},{"node":{"fields":{"slug":"/guides/jmeter-load-testing/jmeter-integration-ci-cd/overview","title":"Integrating JMeter API Client with CI/CD Pipelines"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/new-api-check/activate-deactivate","title":"Activate/Deactivate"}}},{"node":{"fields":{"slug":"/guides/jmeter-load-testing/jmeter-integration-ci-cd/github-actions","title":"GitHub Actions"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/new-api-check/locations","title":"Locations"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/new-api-check/friendly-check-name","title":"Friendly Check Name"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/new-api-check/assertions","title":"Assertions"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/new-api-check/request-configuration","title":"Request Configuration"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/new-api-check/alert-channels","title":"Alert Channels"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/new-api-check/mute-unmute","title":"Mute/Unmute"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/new-api-check/request-preview","title":"Request Preview"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/new-api-check/retries","title":"Retries Before Alerting"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/new-api-check/response-time-limits","title":"Response Time Limits"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/new-api-check/webhook-channels","title":"Webhook Channel"}}},{"node":{"fields":{"slug":"/guides/api-monitoring/new-api-check/save-run","title":"Save and Run"}}}]}},"pageContext":{"id":"858da28f-0142-56e6-96b5-7af3337f7d11","locale":"en-GB"}},"staticQueryHashes":["361965504","361965504","417421954","417421954","445494767","445494767"]}