Files
obsidian-vault/personal/projects/psychologist-app/analytics.md
T

153 lines
6.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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]]