--- title: "Analytics — Privacy-First" aliases: - "Аналитика приватность" - "App Analytics" - "privacy analytics" created: '2026-05-19' updated: '2026-05-24' tags: - project - app - psychology - analytics - privacy related: - "[[personal/projects/psychologist-app/overview]]" - "[[personal/projects/psychologist-app/privacy-legal]]" - "[[personal/projects/psychologist-app/onboarding-ux]]" --- # Analytics — Privacy-First > Stage 1: понять воронку и аудиторию без Google Analytics и без нарушения GDPR. > Связан с: [[privacy-legal]], [[onboarding-ux]] --- ## Принципы 1. **Никакого Google Analytics** — Google = третья сторона, data sharing, GDPR nightmare для mental health data 2. **Анонимность по умолчанию** — никаких идентифицирующих данных в аналитике 3. **Прозрачность** — пользователь видит что собирается, может отключить 4. **Self-hosted или privacy-first SaaS** — данные не уходят в рекламные экосистемы --- ## Что собирать (Stage 1) ### Демография (при онбординге, анонимно) | Поле | Формат | GDPR | |------|--------|------| | Пол | male / female / other / prefer_not | Не PII если без связки с ID | | Возраст | bucket: 18-24 / 25-34 / 35-44 / 45+ | Не PII | | Страна | ISO код: RU / KZ / KG / US | Не PII | | Семейный статус | single / relationship / married / other | Не PII | | Занятость | employed / self / student / unemployed / other | Не PII | **Как сделать GDPR-совместимо**: - Собирать как агрегированные bucket'ы, не точные значения - Хранить отдельно от user_id (разные таблицы, разные ключи) - Лучше: хранить только в агрегированных счётчиках — никакой строки на пользователя вообще - Указать в Privacy Policy и на экране онбординга ### Продуктовые метрики (поведенческие, анонимные) **Воронка онбординга**: - Установил → открыл анкету → завершил анкету → дошёл до диалога → зарегистрировался → подписался **Активность**: - DAU / MAU (считать по анонимным session токенам, не user_id) - Среднее число сессий в неделю - Средняя длина сессии (в мин) - Churn: не открывал N дней (когортный анализ) - Retention D1, D7, D30 **Сессии**: - Завершена / брошена / частичная - На каком шаге бросают (без содержимого ответов — только step index) - Время между сессиями --- ## Инструменты ### Self-hosted (рекомендовано) **PostHog** (self-hosted на Fly.io / VPS) - Open source, GDPR-friendly, EU data residency - Product analytics: фunnels, cohorts, retention, DAU/MAU - Feature flags (нужны будут для A/B) - Self-hosted = данные не уходят никуда - Fly.io: ~$5-10/мес за инстанс **Plausible** (self-hosted или EU cloud, $9/мес) - Легче чем PostHog, только web/product metrics - Без cookies, GDPR-compliant by design - Если нужна только базовая воронка — достаточно ### Privacy-first SaaS (если не хочется поднимать инфраструктуру) | Сервис | Цена | Плюсы | |--------|------|-------| | **PostHog Cloud (EU)** | Бесплатно до 1M events | EU серверы, GDPR, self-serve | | **Plausible Cloud** | $9/мес | Простота, no cookies | | **Mixpanel** | Бесплатно до 20K users | Мощный, но US-hosted — хуже для GDPR | | **Amplitude** | Бесплатно tier | Хорош для cohorts, но US-hosted | **Рекомендация Stage 1**: PostHog Cloud EU (бесплатный tier) → при росте мигрировать на self-hosted. --- ## Архитектура: как не нарушить GDPR ### Разделение данных ``` user_id (UUID) ← идентификатор, хранится в основной БД ↕ НЕТ связи analytics_session_id ← анонимный токен для аналитики ``` События аналитики отправляются с `analytics_session_id`, не с `user_id`. Демография (пол, возраст) — агрегируется при сборе, строки на пользователя не хранятся. ### Что НЕ логировать никогда - Текст сообщений из сессий - Ответы на вопросы анкеты (только шаг завершён / нет) - IP-адрес в полном виде (только /24 префикс для гео) - Точный timestamp + user_id вместе (профилирование) --- ## Воронка (что мерить в первую очередь) ``` Install └─ Open app ← install → open rate └─ Complete questionnaire ← questionnaire completion └─ Complete session 1 ← session 1 completion (ключевой показатель) └─ Register ← registration rate └─ Subscribe ← conversion rate └─ D7 active ← early retention └─ D30 active ← retention ``` Главный ранний индикатор здоровья продукта: **Session 1 completion rate**. Если меньше 50% — проблема в онбординге. --- ## Открытые вопросы - [ ] PostHog self-hosted vs Cloud EU — решить до Stage 1 launch - [ ] Как считать DAU без user_id (anonymous session token lifecycle?) - [ ] A/B тесты онбординга — нужны feature flags (PostHog умеет) ## Связанные заметки - [[personal/projects/psychologist-app/overview]] - [[personal/projects/psychologist-app/privacy-legal]] - [[personal/projects/psychologist-app/onboarding-ux]]