Amplitude: инструкция для новичков, часть 2

Как система определяет пользователей и задает им ID

В прошлый раз рассказал, как зарегистрироваться и настроить рабочее пространство в Amplitude. Но чтобы аналитика была эффективна, необходимо правильно отслеживать пользователей и связанные с ними события. О событиях поговорим в следующий раз, сегодня на очереди пользователи.

Расскажу, как Amplitude считает, опознает их и назначает User ID. В этой статье — компиляция из нескольких разделов документации Amplitude. Перевел, перекомпоновал, переписал по-русски.

Мама, он и меня посчитал unsplash.com
Мама, он и меня посчитал unsplash.com

Что такое User ID

User ID — это уникальный идентификатор пользователя и его нельзя изменить. Присваивают User ID, когда пользователь уже зарегистрировался в приложении или сервисе, статистику которых вы замеряете. Если назначить пользователю другой User ID, Amplitude решит, что это новичок его и статистику начнет вести отдельно. Поэтому для User ID надо выбирать неизменяемые параметры: если номер телефона или имейл в вашем приложении пользователь может сменить, значит, они не подходят для User ID.

User ID выдает ваше приложение. Amplitude берет у вас уже готовый User ID: это может быть внутренний код пользователя, его телефон или имя.

Для Amplitude не задавать User ID — нормально. Особенно если речь об анонимах, которым вообще задавать User ID не стоит. Пример: установка User ID пользователю со строкой «None» вместо имени, приведёт к тому, что под этим User ID соберутся события всех пользователей с именем «None». Так что если ваше приложение не присваивает пользователям никакие имена, то можно не заморачиваться с User ID.

Зачем присваивать User ID

В продуктах со своей системой идентификации (регистрация или назначение UUID), Apmlitude сможет отслеживать пользователей, даже если они переключаются между устройствами. Таким продуктам лучше присваивать пользователям User ID. К нему Amplitude сможет привязывать события с разных платформ и устройств: веб, мобайл, смартфон или ПК.

Если у вас есть система, которая присваивает User ID на стороне сервера, может возникнуть конфликт с Amplitude. Возникла проблема — свяжитесь с техподдержкой.

User ID необязательно назначать сразу: все данные анонимного пользователя вначале собираются под его Amplitude ID, который назначается автоматически. Потом, когда пользователь зарегистрируется и получит User ID, эти данные перейдут в его статистику.

Важный момент — User ID чувствительны к регистру. abc111 и Abc111 — разные User ID по мнению Amplitude.

Как Amplitude опознаёт пользователей

Отслеживать юзеров непросто: они могут заходить с разных устройств, логиниться и выходить из системы, пользоваться продуктом анонимно. Поэтому Amplitude учитывает сразу три параметра: Device ID, User ID и Amplitude ID.

Сначала система собирает Device ID и User ID, только после этого она присваивает пользователям Amlitude ID. Это позволяет отслеживать уникалов по всей платформе. Задавая пользователю Amplitude ID, система отдает приоритет User ID.

Откуда берётся Device ID

Device ID — идентификатор устройства. В гаджетах Apple Amplitude подтянет IDFV, а для Android-устройств сгенерирует случайную буквенно-цифровую строку. Она оканчивается оканчиваться на букву «R» и хранится локально в куки браузера или на мобильном устройстве. В SDK Amplitude есть специальный флаг, который можно переключать, чтобы использовать в качестве device_id рекламный идентификатор IDFA для iOS или AdID для Android.

IDFA — рекламный идентификатор iOS. Нужен для статистики и таргетирования рекламы на пользователей с конкретными интересами. Его можно менять и даже сбрасывать — если ограничить отслеживание рекламы. Тогда в качестве IDFA устройство отправит строку, состоящую только из нулей. В этом случае Amplitude установит в качестве Device ID IDFV или сам сгенерирует строку.

IDFV — identifierForVendor. Буквенно-цифровой номер для разработчика приложений. На одном девайсе у всех программы от Google, например, будет единый IDFV.

AdID — аналог IDFA от Google. Его тоже можно изменить или сбросить в ноль. В этом случае Amplitude сам сгенерирует Device ID.

iOS: если в качестве Device ID установлен IDFA, то он будет применяться везде.

Android: если в качестве Device ID установлен AdID, то он будет применяться везде.

Web: по умолчанию в качестве Device ID используется случайным образом сгенерированный UUID.

Анонимные пользователи

Анонимным пользователям не присваивается User ID. У таких пользователей есть только Amplitude ID и Device ID.

Отслеживание пользователей между разными доменами

Amplitude умеет отслеживать события анонимов между разными доменами. Например, у вас есть два разных домена:

Если вы хотите отслеживать анонимного пользователя, который сначала перешел на «Сайт 1», а потом на «Сайт 2», надо передать Device ID с «Сайта 1» в качестве параметра пользователю на «Сайт 2». После этого придётся заново вызвать SDK с переданным от «Сайта 1» Device ID. Технически это выглядит это примерно так:

  • Берём Device ID с «Сайта 1» через amplitude.options.deviceId.
  • Передаём идентификатор устройства на «Сайт 2» через параметр URL или сторонний файл cookie.
  • Вызываем пакет Amplitude SDK на «Сайте 2» с помощью amplitude.init('YOUR_API_KEY', null, {deviceId: '$DEVICE_ID'}).

Примеры идентификации пользователей в Amplitude

Случай 1. User ID не назначается

Если ваш продукт не выдаёт User ID, Amplitude ID присваивается конкретному Device ID, который первый раз появился в приложении.

Идентификация пользователя, когда User ID не назначается Amplitude.com
Идентификация пользователя, когда User ID не назначается Amplitude.com

Первое событие приходит от устройства А, с которого никто продуктом ещё не пользовался, поэтому ему присвоен Amplitude ID со значением 1. Второе событие пришло с устройства B, с которого тоже никто продуктом ещё не пользовался, поэтому ему присвоен Amplitude ID со значением 2. Третье событие также приходит с устройства B, поэтому новый Amplitude ID не назначается и пользователь идентифицируется как Amplitude ID 2.

Случай 2. User ID присваивается после анонимных событий

Если ваш продукт назначает User ID, то система по умолчанию предполагает, что все анонимные события с конкретного Device ID принадлежат пользователю, который первый раз зарегистрировался с этого устройства. Все события объединяются под одним Amplitude ID.

Идентификация пользователя, когда User ID присваивается после анонимных событий Amplitude.com
Идентификация пользователя, когда User ID присваивается после анонимных событий Amplitude.com

Два первых события пришли без User ID, поэтому Amplitud ID определялся по Device ID. Но как только на устройстве Device ID зарегистрировался пользователь с User ID «John», Amplitud ID 4 и все связанные с ним события система привязала к этому User ID.

Случай 3. Один и тот же User ID на нескольких Device ID без анонимных событий

Когда пользователю присваивается Amplitude ID, User ID важнее Device ID.

Идентификация пользователей, когда один и тот же User ID  используется на нескольких Device ID без анонимных событий Amplitude.com
Идентификация пользователей, когда один и тот же User ID  используется на нескольких Device ID без анонимных событий Amplitude.com

Пользователю с User ID Zack, который зашел в приложение на устройстве K, система присвоила Amplitude ID 5. Когда Zack зашёл с устройства L, система опознала его и отправила событие к записи с тем же Amplitude ID.

Случай 4. Несколько User ID с одного Device ID

Если событие отправляется анонимно после того, как хотя бы один User ID был зарегистрирован на этом устройстве, Amplitude привязывает анонимное событие к последнему известному пользователю.

Идентификация пользователей, когда несколько User ID используют один Device ID  Amplitude.com
Идентификация пользователей, когда несколько User ID используют один Device ID  Amplitude.com

Jane логинится на устройстве R и ей присваивается Amplitude ID 6. Следующий пользователь заходит с этого же устройства анонимно. Система отправляет это событие в Amplitude ID 6. То же самое потом происходит с пользователем Mary.

Если есть потребность вывести пользователей из системы или регистрировать события под анонимным пользователем, необходимо установить идентификатор пользователя равным нулю и заново создать Device ID. Как это сделать, описано в SDK Amplitude.

Случай 5. Один User ID, разные Device ID и анонимные события

Идентификация пользователей, когда есть один User ID, разные Device ID и анонимные события Amplitude.com
Идентификация пользователей, когда есть один User ID, разные Device ID и анонимные события Amplitude.com

David заходит c устройства Y и получает Amplitud ID 8. Следующий пользователь регистрируется анонимно с устройства Z и получает Amplitude ID 9 — потому что с этого устройства ещё никто в системе не регистрировался. Потом с устройства Z регистрируется David, и система опознает его под Amplitude ID 8. После этого с устройства Z в приложение заходит аноним. Его система уже опознает как Used ID David — он же регистрировался с этого устройства — и записывает событие под Amplitude ID 8.

Потом система задним числом связывает данные из Amplitude ID 9 с Amplitude ID 8 — раз David логинился с этого устройства, то значит и более ранние сессии принадлежат ему.

Но если вы используете Redshift, данные не изменятся и анонимное событие останется под Amplitude ID 9.

Объединение пользователей

Проблема объединенных пользователей появляется, когда анонимный пользователь, у которого есть только Device ID, опознается как пользователь, который уже регистрировался в системе раньше.

Например, когда юзер начинает использовать новое устройство. В этот момент, пока он ещё не залогинился, система определяет его как анонима и выдаёт новый Amplitude ID. Но как только он регистрируется в приложении, Amplitude связывает анонимные события с нового устройства с этим пользователем.

Отсюда вытекает несколько проблем:

  • Пользователь учитывается дважды: и в списке старых, и в списке новых пользователей.
  • События, полученные от ещё анонимного пользователя, «теряются» — они не привязываются к настоящему Amplitude ID этого пользователя.

Amplitude решает эту проблему с помощью перекрестных ссылок между Amplitude ID, которые надо объединить. Всё это происходит во время запроса для вывода дашборда. Список объединенных ID и время слияния можно увидеть в личном кабинете на странице User Activity.

Amplitude: инструкция для новичков, часть 2

Пока это решение не поддерживает работу с сырыми данными из Amazon Redshift, потому что эта база данных содержит необработанные журналы событий. По словам команды Amplitude, если не использовать объединенных пользователей, погрешность будет в пределах 5% от DAU.

Device ID

После объединения пользователей счётчик событий, привязанных к Amplitude ID, продолжает работать как обычно.

Если данные продукта очищены, то Event ID сбросится до 1 (например, когда пользователь переустанавливает приложения, Event ID стартует с 1).

Сброс счётчика событий после переустановки приложения Amplitude.com
Сброс счётчика событий после переустановки приложения Amplitude.com

Когда пользователь переустанавливает приложение, обычно генерируется новый Device ID, а это означает, что снова произойдет слияние. После этого пользователь «потеряет» значения user property, которые не должны были меняться (например, стартовая версия приложения или параметры стартовых UTM). Пользователям платных тарифов поможет техподдержка Amplitude, остальные просто разведут руками.

В следующий раз подробно поговорим про таксономию событий в Amplitude — будут переведенные шаблоны таблиц для подготовки списка и параметров событий и пользователей. Заходите ко мне в телеграм — там пишу чаще. например, о продуктовом подходе к редактуре.

BTW, забегайте ко мне в телеграм-канал «Глина научит», там я делюсь заметками о работе, маркетинге, менеджменте, контенте. А в телеграм-канале и блоге tukaev.courses рассказываю о редакторских буднях и своем опыте работы с контентом.

1111
Начать дискуссию