R
Observability

Real User Monitoring (RUM)

Drop-in 5KB JS SDK captures Core Web Vitals, JS errors, route changes.

How it works

A tiny script tag emits `navigator.sendBeacon()` payloads on page load (Navigation Timing API), unhandled errors, unhandled promise rejections, and single-page route changes. Funnel batches them into a partitioned `rum_events` table and renders LCP/FCP/TTFB/CLS/INP percentile charts plus a slowest-pages and top-JS-errors panel with drill-down drawers.

What this lets you do

  • Track real-user Core Web Vitals (LCP, FCP, TTFB, CLS, INP) at p75/p95
  • See which pages are slow for whom, with browser + country + device breakdown
  • Catch every uncaught JS error with stack trace and reproduction context
  • Beacon payload is fire-and-forget — zero impact on page performance

Get it running

  1. 1 Add the script tag to your HTML `<head>`
  2. 2 Set `data-project-token` to a key with scope `rum:write`
  3. 3 Set `data-endpoint` to your Funnel `/v1/rum/events` URL
  4. 4 Open `RUM` in the dashboard

Code examples

<script
  src="https://funnel.example.com/rum/funnel-rum.js"
  data-project-token="st_YOUR_KEY"
  data-endpoint="https://funnel.example.com/v1/rum/events"
  defer
></script>
Where to find it
/app/p/:org/:project/rum
Open in app →