Self-hosted Real User Monitoring

See what your users
actually experience.

Smartizy is a home made RUM stack: a tiny browser SDK, a fast ingest pipeline and dashboards for Core Web Vitals, errors and sessions. You own the data, the schema and the bill.

One script tag. No third party. ClickHouse-backed.

index.html
<!-- drop one tag, start collecting -->
<script async
  src="https://rum.example.com/v1/rum/blaise.js"
  data-app="storefront"></script>
< 5 kB
gzipped browser SDK
1 tag
to start collecting
LCP / INP / CLS
Core Web Vitals out of the box
100%
your data, your ClickHouse
Everything in one place

One beacon, the whole picture

From the first paint to the last error, Smartizy turns raw browser events into the signals you act on.

Core Web Vitals

LCP, INP and CLS captured per page and per release, rolled up hourly so regressions surface fast.

Error tracking

Unhandled exceptions and rejections grouped by fingerprint, with the session that produced them.

Session replay

Reconstruct the exact journey behind a slow page or an error, without sampling away the bad ones.

Real geography

GeoIP enrichment at ingest puts country, region and city on every beacon, no client lookups.

Per-app controls

Allowed origins, ingest tokens, IP filters, bot sampling and rate caps, all tunable per application.

You own the stack

One ClickHouse table, a documented wire contract and Docker stacks you deploy on your own boxes.

How it works

From script tag to insight in minutes

  1. 01

    Embed the SDK

    Add one async script tag with your app slug. The collector buffers Web Vitals, errors and navigation, then beacons them to your receiver.

  2. 02

    Ingest enriches

    The receiver validates the envelope, applies your origin and token policy, adds GeoIP and user-agent data, then writes to ClickHouse.

  3. 03

    Explore in the app

    Dashboards for vitals, errors and sessions, plus a deep-link Explorer to plot any metric against any dimension and share it.

The pipeline

A receiver built for the firehose

Every beacon flows through the same path: cheap rejects first, enrichment in the middle, a bounded queue draining into ClickHouse at the end.

  1. 1
    Browser SDK POST /v1/events
  2. 2
    Validate + auth origin, token, IP filter
  3. 3
    Enrich GeoIP, user-agent
  4. 4
    Sample + cap bots, rate caps
  5. 5
    ClickHouse rum.events
Self-host in an afternoon

Own your real-user data

Spin up the Docker stacks, point the edge proxy at your domain and drop the tag. No per-event pricing, no data leaving your infrastructure.