What We Collect

Anonymous, first-party product events, published on a public dashboard, with a one-click opt-out.

livediagram measures which features get used so the project knows what works, and it does this without creepy tracking. The analytics are anonymous and first-party, and a deployment only collects them if its operator turns them on: livediagram.app does, a self-hosted copy does not unless its operator chooses to. You can switch off what your browser sends at any time. There are no third-party trackers, no ad pixels, and nothing is ever sold or shared beyond a dashboard anyone can read.

What an event looks like

When telemetry is enabled, the editor records small product events made of just three fields: a category, an action, and an optional preset type. For example, "a document was created", or "a square element was added". That is the entire shape of an event.

  • No identity. Events carry no user id, no account, and no IP address.
  • No content. They never include a document name, tab name, participant name, element text, share code, or document id.
  • Only a fixed vocabulary. The type is always a preset value from a closed list, such as a shape kind or a share role, never anything you typed.

The server checks this as well. It throws away any event whose category or action is not on its list, and it will only store a type that is a short token (at most 40 characters of letters, digits, spaces, dots, hyphens and underscores), so anything the length of a note, or carrying ordinary punctuation, is refused before it is stored. (A page view's address is checked against an even narrower rule instead: lower-case page names separated by /, nothing else.)

That second check is a backstop rather than the main protection. The protection is that the editor only ever sends a value from a fixed list in the first place: where a value could come from something you named, it is mapped to a fixed token before it is sent. A theme you built and named yourself is reported as simply "Custom", and your name for it never leaves your browser.

The same rules apply to error tracking. When something breaks, the event records only a short preset code naming the kind of failure and where in the app it happened, like "Http500.SaveTab" for a failed save or "Uncaught.Document.TypeError" for a browser-side exception. Never an error message, stack trace, URL, or anything about what you were working on. These show up on the dashboard's Exceptions view like everything else.

Page views

Every page on livediagram.app (the landing pages, the help centre, the Community, the Explorer, the editor and the telemetry dashboard) also counts a view when you open it. The event is the same three fields, with the page's address as the type, reduced in your browser before it is sent to just which page it was:

  • No query string or link fragment. Anything after a ? or #, which is where invite and share codes live, is dropped.
  • No ids. Every document is counted as the same page, /document. Any other part of the address that looks like an id is cut off the same way.
  • Deny by default. An address that doesn't reduce cleanly to a plain page name is not sent at all.

There is no referrer, no record of which pages one person visited in what order, and no cookie. The same Settings switch below turns page views off along with everything else.

How long things take

To learn whether livediagram feels fast, a few key moments are timed in your browser: a document opening, switching to a tab, a save, joining a document's live session, and how quickly each page loads and responds (its Core Web Vitals). Only the range a timing fell in is sent, like "under one second", never the exact time, as the same three fields: for example Timing, Measured, DocumentLoad.Under1000ms.

A timing is thrown away if the page was in the background at any point while it was measured (a background tab is slowed down, so the number would be wrong), saves are timed at most once a minute, and the Settings switch below turns timings off along with everything else. The dashboard's Timings view shows the results.

Which button brought you in

The buttons on our public pages that open the editor (the header's Choose Template, a template card in the landing page's gallery, a feature page's Start drawing) each carry a short label in their link naming which button it is, like Home.Header. When the New Document page opens from one, it counts that arrival, removes the label from the address bar straight away, and counts once more if you go on to create a document. That is how we learn which buttons actually help people get started.

The label comes from a fixed list of our own buttons and says nothing about you or where you were before our page. The two counts aren't linked to each other or to anything else, and the Settings switch below turns them off too.

The public dashboard

Whatever is collected is published openly at the public telemetry dashboard. It shows aggregate counts for today, the last 7 days and the last 30 days, grouped by category and action. Events are deleted automatically after 60 days, so this is recent trend data, not a permanent archive. The whole point is transparency: anyone can see precisely what is measured. The Public Telemetry Dashboard walks through each of its views.

How to opt out

You are always in control of your own browser.

SettingsEditorAppearancePanelsAccountPrivacySend Anonymous Usage Events
One switch in Settings turns telemetry off for your browser, whatever the deployment is set to.

Open Settings, from the gear near the right-hand end of the bottom bar, beside the light and dark toggle, in the editor or the Explorer.

Choose the Privacy category and switch off Send Anonymous Usage Events.

From that point on, your browser sends no events from any livediagram page (the editor, the help centre, the Community and the public pages share the one setting), whatever the deployment's setting.

The opt-out itself is the last signal your browser sends, so even leaving is recorded only as an anonymous "someone opted out", never tied to you.

A few counts only the server can make: a sign-up or sign-in, a share-link visitor's first visit, a document used by several people or an AI tool, an email sent, and a server error. The server records those itself, with the same three anonymous fields, so the browser switch does not turn them off.

The switch is on until you turn it off. It is saved with your other preferences, so when you are signed in it follows you to your other browsers once the editor has loaded there; as a guest, set it in each browser you use.

On a self-hosted deployment telemetry is off by default: it stays completely off unless the operator explicitly enables it, so a fork or private instance emits and serves nothing.

Was this article helpful?