Skip to content

Analytics

Garon edited this page Jun 22, 2026 · 6 revisions

What we track

Event Properties Why
app_installed (none) Measures new installs.
app_started (none) Measures how many people actively use Glimpse.
app_exited uptime_seconds, transcription_count Shows session length and overall usage volume.
app_crashed crashed_version, location, crash_type Diagnoses native crashes from a small on-disk marker: code location and a bounded category, never the crash message.
frontend_crashed window, source, error_kind, fingerprint Diagnoses UI errors (window errors and unhandled rejections). The fingerprint is a short non-identifying hash, never the error text.
transcription_completed mode, model, llm_cleaned, audio_duration_seconds, transcription_duration_seconds, word_count, audio_source Reveals which models and features people actually use, and how fast transcription runs.
transcription_failed stage, mode, model, reason, audio_duration_seconds, audio_source Helps diagnose and fix failures faster. reason is a bounded code, never the raw error.
transcription_fallback remote_model, local_model, reason, outcome Tracks when remote (cloud) speech falls back to a local model, and why.
recording_failed stage, reason, input Diagnoses audio capture / input-device problems.
model_downloaded model Shows which models are most popular so support can be prioritized.
model_download_failed model, stage, reason Diagnoses failed model downloads/installs.
update_failed source, stage, version, reason Diagnoses failed manual or automatic updates.
onboarding_step_viewed step Shows where people drop off during first-run setup. Only a bounded step name, never form contents.
onboarding_completed (none) Measures how many users complete setup.
settings_changed setting, from, to Records toggles for a small set of features (cleanup, edit mode, remote speech, auto-dictionary) so we know which are used.
analytics_opt_out (none) Recorded once if you turn analytics off, so we know the opt-out rate.

Every event also carries the app version and your OS (platform). Once per install we record a profile with the app version, OS, your CPU architecture (arch, Apple Silicon or Intel/x86), and an install date. This tells us which platforms and versions to support, for example whether to keep optimizing for Intel Macs.

All reason / stage / crash_type values are mapped to a fixed set of bounded codes (see classify_failure_reason and classify_panic in the analytics source). Free-form error text is never sent.

Each event is associated with a random install ID, not your name, your identity, or your IP address. All data is stored in the EU via PostHog EU.

What we never track

  • Transcripts or audio
  • API keys or prompts
  • Crash or error messages (only bounded category codes and a code location)
  • Any personally identifiable information

Opting out

Analytics can be disabled at any time in Settings → App. The change takes effect as soon as the setting is saved.

Why analytics matter

Building Glimpse means constantly making decisions: what to build next, what to improve, and just as importantly, what to cut. Analytics help make those decisions based on what people actually use.

A good example: Glimpse once supported Moonshine models on the transcribe-rs backend. After about a month, the data showed they'd been used exactly once, by us. That's the kind of signal that saves everyone time. Without it, features can linger long past their expiration date.

Privacy is important. For many people, it's the main reason they use Glimpse. So a final reassurance: when analytics are enabled, they are fully anonymous and GDPR compliant. The data is only accessible to the Glimpse team and is used strictly to improve the app. Your data will never be sold. This applies to cloud mode as well.

Your data is yours, not ours to share.

Getting Started

Features

Help

Clone this wiki locally