153 lines
6.5 KiB
Markdown
153 lines
6.5 KiB
Markdown
---
|
||
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]]
|