Unreal Ops Analytics
Product analytics for Flutter and web

What people actually do in your app.

Crash data tells you what broke. This tells you what was happening before that, and what happens on the days when nothing breaks at all: which screens people reach, where they stop, and whether the people who came back this month are the ones who came back last month. Same project as Monitor, same login, one allowance.

Read this before you decide. The collection half is written and running, and this site is one of the things it counts. There is one screen to read your numbers on. No funnels, no retention, no dashboards you build yourself, and no way to pay for any of it. If that is too early, it is too early. It is public so you can argue with the scope while changing it is still free.

What it does today

Every item here is something the running system does. Where an item needs a client in your app, all three exist: a script tag, an npm package and a Dart package.

Page views and custom events

A script tag for a site, an npm package for an app with a build step, and a Dart package for Flutter. All three send the same shape and refuse the same things, because a privacy property that holds through one installation route and not another is not a property.

Visitors and sessions

Sessions are worked out on the server from a thirty minute idle window rather than taken from the browser. Every SDK's session id lives on a device the app author does not control, so a killed app starts a new one mid journey and two tabs are two sessions with neither being wrong.

Pages, sources and events

The three breakdowns most questions start from, on one screen, over any window up to a year.

Aggregated on the way in

There is no table of raw events. That is why it stays fast and cheap, and it is why a property carrying a user id is bounded at the door rather than quietly turning a summary into a table nobody can query.

What it refuses to do

Most analytics is a bad trade: a company you have never heard of gets a record of everything your visitors do, and you get a chart. These are the parts of that trade we do not make. Each one is enforced in the pipeline rather than promised in a policy, which is why they can be stated as facts rather than intentions.

No cookies, and no fingerprint

The visitor id is a random value in local storage that a visitor can delete. An id derived from screen size, fonts and user agent survives deletion, and surviving deletion is exactly what makes a fingerprint a fingerprint.

Query strings never reach storage

Password reset tokens, magic login links and email addresses all travel in them. The path is kept and everything after the question mark is dropped before anything is written.

Referrers are reduced to a host

A full referrer is a URL somebody else's site chose, and it can carry anything at all.

Do Not Track is honoured

The browser script returns without sending. There is no setting that overrides it.

Ids you send are pseudonymized

Salted per project on the server, so the same person in two customers' apps is two unrelated visitors. Pseudonymized rather than anonymized: anybody holding the salt and a guess could confirm the guess, and the salt never leaves the server.

What is missing

Named here rather than left out. On a page whose only asset is being believed, a list of what does not exist is worth more than another feature bullet.

Funnels

Scoped, not written. An ordered set of steps with the drop between each one, over whatever range and release you choose.

Retention and cohorts

Scoped, not written. Cohorts by first seen week, so growth and churn stay separable numbers instead of one line that only goes up.

Dashboards you assemble

Scoped, not written. Today there is one screen and you get the numbers it shows.

A way to pay

There is no billing. The free allowance is what exists, and nothing is being sold.

One account, both products

Analytics and Monitor share a project list, a login and an organization. If you already use Monitor, Analytics is a write key away, and a drop on a funnel step and a spike in errors on the same release are one investigation rather than two tools lined up by hand.