Онбординг Telegram-бота и его A/B-тест

В пока еще «прошлом» 2019 году на хакатоне мы вместе с сокомандниками сделали телеграмм бота @pussybotsbot. В те времена бот работал следующим образом: просил селфи у пользователей и какое-нибудь предложение или фразу, а в ответ применял к отправленному селфи забавный фильтр (его подбор делался по отправленной фразе при помощи ML, всего фильтров было несколько сотен). После хакатона бот остался у меня, но денег на поддержку нейронки не было — ее пришлось отключить, а фильтры бот стал применять рандомно.

Первая версия бота c помощью ML подбирала вариант обработки для селфи @pussybotsbot
Первая версия бота c помощью ML подбирала вариант обработки для селфи @pussybotsbot

Чуть позже я добавил для пользователей возможность применять определенный фильтр по id, а также поделил все фильтры на разделы и добавил кнопку «настройки» для выбора нужного раздела. Своей аналитики не было, кроме сохранения id пользователей. В таком виде бот просуществовал полтора года.

Времени заниматься ботом не было до этой осени. Поэтому, когда в октябре я открыл статистику по пользователям, был приятно удивлен: активаций (количество пользователей с момента релиза) оказалось более 180 000. Мне сразу захотелось немного изменить логику работы бота, прикрутить аналитику действий пользователей, накопить данные, а затем попробовать улучшить некоторые из его метрик.

Эта статья о том, какую метрику телеграм бота я решил вырастить при помощи онбординга и как проводил A/B тест перед его запуском для всех новых пользователей.

Изменения в боте по сравнению со старой версией

Перед тем, как внедрять онбординг и проводить A/B-тест, я добавил некоторые функции в старую версию бота. Путь нового пользователя в актуальной версии бота без онбординга показан на скриншотах, а все изменения по сравнению со старой версией описаны в тексте ниже.

Скриншоты для пояснения пути пользователя бота @pussybotsbot
Скриншоты для пояснения пути пользователя бота @pussybotsbot

Появилась аналитика действий пользователей.

Это было первое, что я сделал. Не буду останавливаться на техническом описании своего решения — просто скажу, что в итоге аналитика собирается по всем событиям в боте, можно легко доставать из базы любые данные или визуализировать их в дашбордах.

Кнопка «избранное» для сохранения понравившихся фильтров.

Пользователям это дало возможность применять понравившийся фильтры без запоминания их id. Мне же появление этой функции дало возможность выявить наиболее популярные фильтры. При онбординге я использовал эти знания (об этом будет ниже).

Подписка на канал после трех обработок.

Если пользователь 3 раза получил результат обработки, бот требует от него подписаться на канал для продолжения работы. Пока требуется подписаться на канал, созданный для этого бота — в нем публикуются обновления бота (новые функции, добавление фильтров, информация о неисправностях). Возможно, в будущем таким способом получится продавать рекламу, но пока у меня нет никаких сведений относительно интереса со стороны рекламодателей к такого рода продвижению.

Насколько мне известно, самый популярный формат рекламы в ботах — это делать рассылки по всем пользователям бота, но это негативно воспринимается пользователями. Кстати, интересно узнать у владельцев ботов — как вы их монетизируете?

Какой основной способ монетизации в вашем боте?
монетизации в боте нет
рекламная рассылка
платная подписка на бота
продажи внутри бота
контекстная реклама без проверки действия
контекстная реклама с проверкой действия (например, подписки на рекламируемый telegram канал)

Описание онбординга

При проектировании онбординга, я старался добиться двух целей:

  • с самого начала показать такую обработку, которая понравится пользователю и тем самым подтолкнуть его к продолжению работы с ботом;
  • продемонстрировать работу основных управляющих элементов бота (кнопка «обновить» для применения нового фильтра и «настройки» для выбора группы фильтров).

Первый шаг при онбординге такой же, как и при обычной работе бота: пользователя просят прислать селфи. После этого бот присылает обработку и показывает лишь 1 кнопку «обновить», а не все элементы управления, доступные в обычном режиме. Кроме того, заранее устанавливается фильтр для первой обработки пользователя.

Я выбрал фильтр «омультяшивание», который придает фотографии эффект векторного рисунка, так как знал, что данный фильтр популярен среди пользователей и результат обработки скорее всего понравится новому пользователю. Расчет был на то, что применение популярных фильтров приведет больше новых пользователей к целевому действию — подписки на канал.

Знакомство с первым фильтром и функцией “обновить” @pussybotsbot
Знакомство с первым фильтром и функцией “обновить” @pussybotsbot

При нажатии «обновить», пользователь получает обработку уже другим фильтром и видит кнопку «настройки», которая отображает доступные для выбора категории фильтров. На этом шаге онбординга также используется популярный среди текущих пользователей фильтр. В дальнейшем я планирую устроить A/B-тесты по разным фильтрам в онбординге, но пока просто взял один из самых популярных, которые добавляют в «избранное».

Знакомство с кнопкой “Настройки” @pussybotsbot
Знакомство с кнопкой “Настройки” @pussybotsbot

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

@pussybotsbot
@pussybotsbot

Как проводил A/B-тест и какую метрику сделал ключевой

В A/B тесте принимали участия только новые пользователи бота, так как онбординг запускается лишь на старте. Группе A показывалась версия бота без онбординга, а группе B — версия с онбордингом. Пользователи разделялись по группам случайным образом (если telegram id нового пользователя был нечетный, он попадал в группу A, а если четный — в группу B).

Это стандартные правила проведения A/B теста. Перед началом, я определил этапы воронки, через которые проходят все новые пользователи бота. Всего получилось 5 этапов:

  1. Начало работы — стартовый этап, на котором бот просит у нового пользователя селфи.
  2. Получение результата — наступает в момент выдачи новому пользователю первого результата обработки.
  3. Получение ссылки — наступает, когда новый пользователь уже получил три обработки и бот выдал ему ссылку на канал с требованием подписаться.
  4. Переход по ссылке — фиксируется переход по отправленной ссылке. Пользователям давалась не прямая ссылка на телеграм канал, а ссылка на web страницу с редиректом в канал. Кстати, конверсия при переходе по прямой ссылке и по ссылке с редиректом отличаются, но так как редирект использовался для обеих версий, это не имеет значения.
  5. Подписка на канал — бот отслеживает подписку на канал при каждой обработке, а также по таймауту спустя некоторое время после получения ссылки (на случай, если кто-то из пользователей подписался, но не стал осуществлять обработку).

Далее начертил 2 таблицы. Первая понадобилась для записи количества пользователей в группе А и в группе B на каждом из этапах воронки. Вторая таблица — для подсчета относительных конверсий на каждом из этапов воронки, а также абсолютной конверсии в подписчика. Относительные конверсии в таблице это конверсии с C1 по C4, а абсолютная — C абс.

Таблицы для записи результатов A/B теста
Таблицы для записи результатов A/B теста

Ключевой метрикой выбрал относительную конверсию C2 «получение результата» — «получение ссылки». Дело в том, что до момента получения первого результата работа версии бота с онбордингом ничем не отличается от работы версии без онбординга, а сразу перед этапом «получение ссылки», версия с онбордингом начинает работать также, как и версия без онбординга. Таким образом, чем больше пользователей окажется на этапе «получение ссылки», тем лучше работет онбординг.

Значения остальных относительных конверсий я ожидал увидеть примерно одинаковые в обеих группах, за исключением конверсии в переход по ссылке. Я предполагал, что пользователи, прошедшие через онбординг, будут активнее кликать по ссылке, но в реальности это оказалось не так.

Результаты

A/B тестирование дает ответ на вопрос какой из двух вариантов обладает лучшей конверсией, но зачастую для получения статистически значимого результата, исключающего случайную ошибку, приходится ждать много времени.

До начала проектирования теста, я подсчитал необходимое количество пользователей и время ожидания в калькуляторе Эвана Миллера. У меня уже были накоплены данные по исследуемой конверсии: в своем прогнозе я предполагал, что она увеличится примерно на 15% при добавлении онбординга.

Калькулятор дал прогноз, что ожидать набора пользователей при таком прогнозе для статистически значимого результата придется около 4 дней — для меня это было приемлемо. В итоге изменение конверсии оказалось существеннее прогнозируемого и статистически значимый результат удалось получить менее чем за 2 дня.

Заполненные таблицы
Заполненные таблицы

Как видно из заполненных таблиц с результатом, все конверсии кроме ключевой C2 и C абс. оказались примерно одинаковыми. Разницу конверсий C2 в группах я выделил в таблице зеленым, так как статистическая значимость этого результата была подтверждена калькулятором Эвана Миллера. Конверсия C3 в обеих группах также оказалась примерно одинаковой — это значит, что те пользователи, которые дошли до этапа получения ссылки имели примерно равную мотивацию ее нажать в обеих группах.

При этом онбординг отлично справился со своей задачей и довел гораздо больше новых пользователей до этапа получения ссылки и требования подписаться на канал, чем версия без онбординга. Абсолютная конверсия изменилась примерно на тоже значение, что и C2 — это говорит о том, что отрицательного влияния онбординга на нее не было. После окончания теста онбординг был запущен для всех новых пользователей.

Подтверждение статистической значимости результата в калькуляторе
Подтверждение статистической значимости результата в калькуляторе

Полученный в калькуляторе результат дает понимание, что конверсия в группе B (с онбордингом) оказалась выше. Также в калькуляторе можно посмотреть доверительный интервал полученной конверсии. В моем случае этот интервал достаточно существенный, но пока я решил не тратить время на его сужение. Мне было достаточно простого сравнения двух версий.

Что важно помнить про онбординг и A/B-тесты

  • Онбординг в телеграм ботах так же важен, как и в других продуктах.
  • Чтобы сделать хороший онбординг, нужно знать предпочтения пользователей.
  • При проведении A/B-тестов пользователи в двух группах должны совершать действия в один период времени, то есть нельзя сначало давать пользователям версию A, замерять результат, а затем давать версию B.
  • Если какие-то метрики на этапе тестирования противоречат здравому смыслу, нужно обязательно перепроверить все шаги на наличие программных ошибок.

  • При проектировании A/B-теста удобно начинать с построения воронки, через которую проходят пользователи и только после этого выбирать ключевую для исследования метрику.
  • До начала тестирования стоит спрогнозировать вероятное время накопления данных, иначе вы рискуете потратить на тест больше времени, чем у вас есть.

  • Для получения выводов по численным результатам A/B теста существуют готовые калькуляторы, но нужно уметь их верно интерпретировать.

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

33
3 комментария

Статья натолкнула на ряд мыслей - я почему-то мыслил достаточно ограниченно и не применял практику аб к ботострою) Спасибо за материал! Нужно попробовать прикрутить)
Кстати, сбор аналитики самописный или пользовались готово тулзой?

1
Ответить

Привет! Использовал matomo - это опенсорс решение для web аналитики, но я его адаптировал к боту. Возможно напишу статью о том, как это было сделано. Если интересно - могу создать аккаунт в поднятой системе и помочь прикрутить твоего бота. Мне интересно посмотреть, насколько норм работает решение с разными ботами.

2
Ответить