RUM overview
Failior RUM is a browser collector for page-speed signals, page views, and optional shared API failure incidents. It is designed to stay small, use one script tag by default, and keep the backend in charge of sanitization, geo inference, browser parsing, and incident grouping.
What it captures
Page views, LCP, INP, CLS, FCP, TTFB, browser family, device type, coarse country, and optional shared request failure samples when incident logging is enabled.
What it does not capture
Query strings, request bodies, response bodies, auth headers, page content, or unrestricted custom data. Paths and request signatures are normalized before storage.
Install and configure
The cleanest install path is: create a RUM site in the product, set allowed hosts, optionally enable shared API failure incidents, then paste the generated script tag into the page head.
Leave incident logging off unless you explicitly want shared API failure grouping. Page-speed telemetry works without it.
Generated script tag
<script
async
src="https://rum.failior.com/rum/v1/rum.js"
data-site-token="rum_pub_xxxxx"
data-endpoint="https://api.failior.com/api/rum/ingest"
data-environment="production"
data-capture-api-errors="true"
></script>
ESM package install
import { bootFailiorRUM } from "@failior/rum-browser";
bootFailiorRUM({
siteToken: "rum_pub_xxxxx",
endpoint: "https://api.failior.com/api/rum/ingest",
environment: "production",
captureApiErrors: true
});
- Create a site in the RUM tab, add the exact hosts you want to allow, and copy the generated script tag.
- Paste the tag into the page head of the site you want to monitor.
- If you want shared request-failure incidents, enable the checkbox during site setup so the tag includes
data-capture-api-errors="true".
Configuration fields
| Field | Purpose |
|---|---|
data-site-token |
Public site identifier used by ingest. |
data-endpoint |
Where telemetry is posted. |
data-environment |
Optional environment tag such as production or staging. |
data-release |
Optional deployment label if your team wants it. Not required for incidents. |
data-capture-api-errors |
Opt-in shared request failure sampling for the incidents tab. |
Speed signals
The dashboard groups page-speed data under speed signals. The exact labels can switch between developer acronyms and simpler wording in preferences, but the underlying measurements stay the same.
What to expect in the dashboard
Overviewfocuses on page traffic plus one selected speed signal at a time.Segmentsbreaks the same data down by host, browser, device, and country.Incidentsappears when the site has incident logging enabled and shared failure patterns exist.
Incident logging
Shared API failure incidents are deliberately opt-in. When enabled, the browser collector samples failing request patterns and the backend promotes only shared, repeated failures into incidents.
One browser failing one request once is treated as noise. Incidents are created only when multiple sessions share the same normalized request pattern and failure type.
What is grouped
- Request host
- Normalized request path
- HTTP method
- Failure kind such as
http_5xxornetwork - Session spread and failure rate
What is ignored
- Repeated identical failures from the same session within a short window
- The RUM ingest request itself
- The localhost simulator control request
- Single-session noise that never spreads
Auto-resolution behavior
Incidents resolve only after the backend sees convincing healthy traffic after the last failure. They are not marked resolved just because traffic went quiet.
CSP requirements
If your site uses a strict Content Security Policy, you need to allow the Failior browser script to load and the ingest endpoint to receive telemetry. The generated script tag already contains the right public URLs, but your CSP still needs to permit them.
Minimum CSP additions
script-src 'self' https://rum.failior.com;
connect-src 'self' https://api.failior.com;
When they matter
script-srcmust allow the RUM script origin.connect-srcmust allow the ingest endpoint.- If your CSP is report-only, use it to confirm the integration before enforcing.
Example policy fragment
Content-Security-Policy:
default-src 'self';
script-src 'self' https://rum.failior.com;
connect-src 'self' https://api.failior.com;
Keep using the generated script tag from the product UI. If your organization uses different Failior subdomains, mirror those exact script and ingest origins in CSP instead of hard-coding the example hosts above.
Graph SDK
The graph SDK is for backend or workflow instrumentation. It lets your application send graph packets to Failior so teams can see which node failed and what path was affected.
How graph ingest works
- Create a stable graph id for the workflow you want to trace.
- Emit node ids in the order the workflow executes.
- Send one packet when the workflow ends so Failior can map the path and any failure.
Minimal shape
{
"graph_id": "checkout-flow",
"node_id_list": ["api", "db", "queue"],
"did_error": false,
"timestamp": "2026-03-30T12:00:00Z"
}
Download SDKs
These downloads are the public source files for the current SDK examples. Use them as a starting point, then set your graph id and Failior ingress base URL in application code.
Go example
t := failiorsdk.Track(
ctx,
"<graph id>",
failiorsdk.WithBaseURL("https://api.failior.com"),
)
defer t.End(&err)
t.Node("<node id 1>")
t.Node("<node id 2>")
JavaScript example
const failior = require("/sdk/javascript-download.js");
const t = failior.track("<graph id>", {
baseURL: "https://api.failior.com",
});
t.node("<node id 1>");
t.node("<node id 2>");
await t.end(err);