Идентичность
install_id, user_id и как из них получаются люди в отчётах.
Каждое событие несёт install_id — идентификатор установки — и, если пользователь вошёл,
user_id — идентификатор его аккаунта. Отчёты по умолчанию считают людей, а не устройства: несколько
установок одного аккаунта — один человек.
install_id
UUID, который приложение генерирует один раз при первом запуске и хранит постоянно. Любая версия UUID
подходит, кроме нулевого 00000000-0000-0000-0000-000000000000; рекомендуем UUIDv4 в нижнем
регистре.
| Платформа | Где хранить | Переживает переустановку |
|---|---|---|
| iOS, macOS | Keychain | Да |
| Android | SharedPreferences с Auto Backup | Да, если включён бэкап |
| Веб | localStorage | Нет: очистка данных сайта — новая установка |
| Бот | Выводится из ID чата через HMAC | Да |
| Бэкенд | Конфигурация или база | Да |
Если install_id теряется, пользователь выглядит новым, а retention занижается. Не генерируйте
install_id заново на каждом запуске.
user_id
Непрозрачный ID аккаунта из бэкенда приложения: первичный ключ, UUID, внутренний номер. Длина — от 1
до 128 символов. Передавайте user_id во всех событиях, пока пользователь вошёл, и не передавайте
после выхода.
Сервер отклоняет user_id, похожий на email или телефон, с кодом user_id_looks_like_pii. Чисто
цифровые строки разрешены, но Telegram ID и другие публичные номера лучше хешировать на своей
стороне — см. Боты и бэкенды.
Как считаются люди
Склейка выполняется при построении отчёта, сырые события не переписываются:
- Событие с
user_idпринадлежит человекуu:<user_id>. - Анонимные события установки принадлежат «первому владельцу» — пользователю из самого раннего
события этой установки с
user_id. Дни до входа задним числом приписываются ему. - Установка, на которой никто не входил, — отдельный человек
i:<install_id>.
Пример: установка I1 три дня работала анонимно, на четвёртый пользователь вошёл как A. Все четыре
дня — один активный человек u:A, а новым он стал в первый день, а не в день входа.
Если на одном устройстве входили два аккаунта, анонимные события достаются первому из них, а события
с явным user_id — своему аккаунту.
Люди на нескольких платформах
Приложение объединяет все свои платформы, и склейка работает сквозь них: пользователь, который вошёл
как A на iOS и в вебе, — один человек u:A. Поэтому сводные отчёты считают людей, а не сумму по
платформам. Склеивает только user_id: анонимные установки на разных платформах остаются разными
людьми, поэтому передавайте один и тот же user_id везде, где пользователь вошёл.
Переключатель платформ над отчётами оставляет события одной платформы. Человек, активный на iOS и в вебе, учтён в каждой из них, поэтому сумма по платформам может быть больше итога. Так же считаются доли платформ в портфеле.
Если платформы одного продукта подключены как отдельные приложения, люди между ними не склеиваются. Объедините такие приложения в настройках — см. Слияние приложений.
persons и installs
Отчёты и Read API принимают параметр unit:
persons(по умолчанию) — люди по правилам выше;installs— каждая установка отдельно, как в AppMetrica. Этот режим нужен для сверки цифр с AppMetrica.
Профиль человека открывается по person_key — u:<user_id> или i:<install_id>. В URL двоеточие
допустимо, а / внутри user_id кодируется как %2F.