epok
← All use cases
USE CASE

Watch the user hit the bug.
Stitched to the trace that broke.

Real user monitoring and session replay on the same platform — and the same meter — as your logs, metrics, and traces. Core Web Vitals and frontend errors from the browser, plus DOM-level session replay that is linked to the backend trace by a shared trace ID. So from a failing trace you jump straight to the recording of the user who hit it, seeked to the moment it broke.

THE PROBLEM

Frontend and backend telemetry live in different products, priced per seat and per session. Session replay is its own tool, RUM is another, and neither knows about the trace that actually failed. You watch a replay, you read a trace — and you connect them in your head, by timestamp, hoping it's the same request.

So the most valuable question — show me the user who hit this exact error — takes ten minutes of cross-referencing, or never gets answered at all.

HOW EPOK HANDLES IT

Session replay, stitched to the trace

The one that changes the 3am workflow: the browser propagates a trace context on every request, so each replay is linked to the backend trace it generated. From an errored trace on the investigation canvas, one click opens the session replay — seeked to the moment of failure, with the lead-up a scrub away. Click the trace that broke, watch the user hit it.

Core Web Vitals, per page and per release

LCP, INP, and CLS measured from real sessions, broken down by page and tied to the deploy — so a vitals regression points at the release that caused it, not just the day it started.

Frontend errors, correlated to the backend

JavaScript errors and failed requests captured from the browser and grouped by shape — then correlated to the backend spans and logs on the same trace, so a client-side error and its server-side cause land as one story.

One snippet — no per-seat tax

A lightweight browser snippet turns on RUM and replay. There is no per-seat RUM tier and no per-session replay charge — it rides the same flat meter as every other signal.

Private by default

Replay masks every input value by default — nothing a user types is ever recorded — and the capture key is ingest-only, safe to ship in browser JS. Tune the masking in one place; it never loosens on its own.

On the same investigation, not a separate tab

RUM and replay are panels on the same cross-signal canvas as logs, traces, metrics, and infrastructure — so "who was affected and what did they see" is answered on the incident, beside the cause, not in another product.

WHAT YOU GET
  • From a failing trace, one click to the session replay of the user who hit it — seeked to the error
  • Core Web Vitals and frontend errors tied to the deploy and the backend trace, not just a timestamp
  • RUM and session replay on one flat bill — no per-seat tier, no per-session charge, no cardinality tax

See it on the live demo — no signup: open the checkout incident, click a failing trace, and watch the recorded session jump to the moment it broke.

Watch it catch this one. No signup.

The live demo runs detection on real-shape data — every alert cited back to the line behind it. Or send your own logs in the 14-day trial.

OTHER USE CASES