Некоторое время назад, в комментариях к посту о 7 проблемах в дизайне SaaS продуктов мы получили несколько вопросов о том как мы в TrackDuck собираем статистику использования нашего продукта и организуем коммуникацию с пользователями. Это натолкнуло нас на мысль сделать развернутый обзор одного из инструментов, который мы используем.
Вы можете написать захватывающую статью о вашем сервисе или сделать отличную посадочную страницу, попав на которую ваш потенциальный клиент сразу поймет, что это именно тот продукт, который он так долго искал. Он уже уверен, что этот сервис будет полезен и, возможно, уже отправил ссылку на него своим коллегам и начал регистрироваться. Но вдруг ваш пользователь застрял в самом начале использования сервиса. Возможно он даже попробует написать в службу поддержки или попробовать решить проблему самостоятельно, но скорее всего он уйдет, так и не став вашим клиентом.
Для любой компании, а особенно для стартапа, это недопустимо. Вы должны успеть выявить проблему и помочь решить ее именно в тот момент, когда это особенно нужно.
Для этого важно собирать как можно больше информации о действиях ваших пользователей в системе, начиная с регистрации. Это поможет проследить специфичные схемы поведения, вовремя прийти на помощь и, в конечном итоге, получить больше лояльных пользователей, которые влюблены в ваш продукт.
Существует несколько сервисов, которые помогают анализировать действия пользователей, в конце статьи я приведу ссылки на известные мне. Мы в TrackDuck c момента выпуска первой бета-версии используем Intercom, что помогло нам уменьшить количество отказов после регистрации и увеличить конверсию, а также, как мы надеемся сделать продукт лучше.
Как устроен Intercom, начало работы
Этот сервис является единой платформой, которая позволяет в режиме реального времени следить за действиями пользователей и отправлять персонализированные сообщения в нужное время на основе их поведения.
Для начала работы вам необходимо подключить сервис к вашему проекту. Когда Intercom найдет свой код на вашем front-end или back-end, вы сможете продолжить регистрацию и перейти к дальнейшей настройке. Должен сказать, что поначалу это немного удивило меня.
Intercom позволяет вам общаться с пользователями двумя основными способами: вы можете отправлять in-app сообщения или обычные email. In-app сообщения позволяют взаимодействовать с пользователями в реальном времени прямо из вашего приложения с помощью специального виджета.
Стиль виджета можно менять, управляя цветами темы оформления. In-app сообщения бывают нескольких типов: Alert, Dialog, Notification.
Для оформления email вы можете использовать предустановленный шаблон Intercom, простой, текстовый стиль или свой собственные шаблон. Хочется заметить, что управление шаблонами не настолько крутое, как как в MailChimp, но нам его вполне хватает, чтобы организовать маркетинговые рассылки по базе пользователей.
Все email и in-app сообщения могут отправляться как автоматически на основании каких-либо правил (чуть позже я расскажу о настройке сегментов и правил для отправки сообщений), так и в ручном режиме. Вы можете отправлять сообщения персонально или же выбранной группе пользователей. Также вы имеете возможность отвечать на запросы пользователей, которые они делают через in-app коммуникатор.
Рассылка автоматических сообщений происходит на основании определенных триггеров и правил. Основными из их являются теги, события, временные интервалы и сегменты, о которых я расскажу чуть позже.
Собираем события и свойства пользователей
Intercom имеет хорошо документированный API и SDK для популярных языков программирования. Вы можете отправлять данные в Intercom как с серверной части, так и с клиентской. Подключить браузерный JS вам потребуется в любом случае, так как это требуется для работы in-app чата. Так как мы используем node.js, я приведу несколько примеров использования SDK для этого языка. Если вы используете отличный от js серверный язык, я могу посоветовать обратиться к документации Intercom ().
Intercom не предоставляет готового SDK для node.js, но, к счастью, мы нашли отличную библиотеку от стороннего автора.
Отправка данных с back-end
Для начала установим модуль:
npm install --save intercom.io
Теперь можно подключить и инициализировать его в вашем app.js или подключенном к нему модуле:
var Intercom = require('intercom.io');
var options = {
apiKey: "your_API_key",
appId: "your_APP_ID"
};
var intercom = new Intercom(options);
apiKey и appId мы берем из настроек вашего аккаунта в Intercom. На выходе получаем объект intercom с которым и будем работать дальше.
Далее, представим что у вас зарегистрировался первый пользователь. Давайте передадим его данные в Intercom, чтобы впоследствии мы могли с ним работать:
intercom.createUser({
"email" : "ben@intercom.io",
"user_id" : "7902",
"name" : "Ben McRedmond",
"created_at" : 1257553080,
"custom_data" : {"plan" : "pro"},
"last_seen_ip" : "1.2.3.4",
"last_seen_user_agent" : "ie6",
"companies" : [
{
"id" : 6,
"name" : "Intercom",
"created_at" : 103201,
"plan" : "Messaging",
"monthly_spend" : 50
}
],
"last_request_at" : 1300000000
}, function(err, res) {
});
На мой взгляд, код крайне понятен и не нуждается в пояснениях. Если возникнут вопросы — спрашивайте в комментариях. В случае возникновения ошибки в callback мы получим массив вроде этого:
{
"intercom_id": "52322b3b5d2dd84f23000169",
"email": "ben@intercom.io",
"user_id": "7902",
"name": "Ben McRedmond",
"created_at": 1257553080,
"last_impression_at": 1300000000,
"custom_data": {
"plan": "pro"
},
// ...
// ...
// ...
"session_count": 0,
"last_seen_ip": "1.2.3.4",
"last_seen_user_agent": "ie6",
"unsubscribed_from_emails": false
}
Вот полный список методов, которые вы можете использовать для управления данными в Intercom:
- intercom.getUsers
- intercom.getUser
- intercom.createUser
- intercom.updateUser
- intercom.deleteUser
- intercom.createImpression
- intercom.getMessageThread
- intercom.createMessageThread
- intercom.replyMessageThread
- intercom.createNote
- intercom.getTag
- intercom.createTag
- intercom.updateTag
- intercom.createEvent
Отправка данных из браузера посетителя
Используется простая javascript библиотека, код для ее подключения вы получите после регистрации. Ее установка на сайт не составит никаких проблем.
Intercom для безопасности данных ваших пользователей будет настоятельно рекомендовать вам шифровать user_id и email c помощью HMAC (hash based message authentication code), используя SHA256, что стоит сделать сразу же. Кроме того, с фронт-енда вы сможете отправлять, например, данные о том, что пользователь поставил курсор на поле ввода или навел курсор на кнопку.
Вот как выглядит работа с Intercom из клиентского js. При первом вызове используется метод boot:
window.Intercom('update', {email: someuser@example.com, property: ‘value’});
При последующих вызовах вы можете отправлять данные методом update, но помните про то, что нужно всегда указывать email или/и user_id пользователя, для которого вы обновляете данные:
window.Intercom('boot', {app_id: APP_ID, email: someuser@example.com, property: ‘value’});
Больше информации вы можете найти в справке Intercom. Также я рекомендую создать и использовать тестовый аккаунт, привязанный к dev версии вашего приложения для отладки. Intercom позволяет это сделать, чтобы избавить вас от проблем
Что выбрать для хранения данных: атрибуты, теги, события?
Intercom позволяет вам сохранять Атрибуты пользователей для того, чтобы иметь возможность впоследствии сортировать пользователей по сегментам и анализировать их действия. Атрибуты пользователей позволят вам настроить автоматическую отправку сообщений вашим клиентам на основе бизнес-логики вашего приложения. Например, если вы создаете инструмент управления проектами, вы можете сохранять и обновлять для каждого пользователя данные о количестве загруженных файлов, количестве проектов или числе задач, который добавил каждый пользователь. Имея эти данные, вы легко сможете понимать активность ваших пользователей и, например, предлагать им помощь в случаях, когда кто-то добавил слишком мало проектов или файлов. Атрибут пользователя может быть строкой, числом, датой или инкрементальным значением.
События позволяют вам собирать и отправлять данные об активности ваших пользователей в Intercom. После того, как вы отправили данные о событии для конкретного пользователя, вы сможете сделать выборку в Intercom или создать авто сообщение на основании этого события. Каждое событие имеет свое название, время, когда оно произошло, содержит данные пользователя, который связан с ним, а также дополнительные мета-данные.
События отличаются от пользовательских атрибутов тем, что события содержат информацию о том, что сделал пользователь и когда, в то время как Пользовательские атрибуты отображают текущее состояние пользователя. Например, пользователь подписался на платный план и впоследствии изменил его — все эти изменения будет представлены в Intercom в виде событий, в то время как Атрибут пользователя будет содержать только информацию о текущем плане.
Intercom рекомендует использовать события для записи активности высокого уровня (например, смена тарифного плана), а не о кликах пользователя и его пути по сайту.
Теги в Intercom позволяют маркировать пользователей, компании и получать доступ ко всем элементам, помеченным этим тегом в дальнейшем. Вы можете создать новый тег через SDK или отправив POST запрос api.intercom.io/tags, содержащий имя тега. Имя тега может содержать пробелы и знаки препинания. Теги могут быть созданы вручную в интерфейсе Intercom и присвоены одному пользователю или группе. Мы используем теги для отображения связей между пригласившими друг друга пользователями, а также для некоторых других задач, например, для отслеживания потенциально заинтересованных или проблемных клиентов.
Настраиваем сегменты
Мы отправляем в Intercom все метрики, описывающие действия наших пользователей, которые можем собрать. Обмен данными с Intercom не влияет на производительность приложения. Также в любой момент времени мы можем начать отслеживать новые показатели.
Нам потребовалось немало времени на внедрение Intercom, но сейчас это один из основных инструментов нашей компании. Мы используем собранные события и свойства для определения различных сегментов. В настоящее время у нас выделен 31 сегмент. Количество сегментов, в которые входит пользователь, варьируется с течением времени — от регистрации до оплаты или отказа от использования сервиса. Сегменты предоставляют нам быстро анализировать информацию о пользователях.
Например, мы можем получить данные о конкретном действии пользователя. Пусть это будет регистрация. Мы хотим отправить ему сообщение с приветствием через 7 дней после регистрации, но при этом необходимо, чтобы сообщения получили не случайно зарегистрировавшиеся пользователи, а только те, которые вошли в систему больше 10 раз и создали не менее 10 проектов. С Intercom это легко:
Сначала мы создаем новый сегмент с помощью фильтров. Далее мы всегда сможем вернуться к нему и увидеть, как изменилось количество таких пользователей с течением времени. Также мы можем создать новое автоматическое сообщение для пользователей, которые входят в этот сегмент.
Одной из полезных особенностей является простота управления сегментами — каждый член команды может создать сегмент или отфильтровать пользователей по нужным ему параметрам без знаний программирования.
Настраиваем цепочки сообщений для Drip Marketing
Drip маркетинг или, если угодно «капельный» маркетинг, предполагает создание серии сообщений по электронной почте, которую пользователь получит после срабатывания определенного триггера. Триггером обычно является какое-либо действие пользователя в вашей системе, оно может быть выполнен мгновенно или через заданный интервал времени. Приведу пример для лучшего понимания: вы предоставляете ознакомительный период для пользователей на вашем сайте, пусть это будет 14 дней.
- День первый: приветствие.
Сразу после регистрации каждый пользователь получит персонализированное письмо с приветствием, инструкцией, как начать работу с сервисом, и полезными ссылками. -
День третий: выявляем “сложных” пользователей
К третьему дню мы видим, что часть пользователей, пройдя регистрацию, так и не воспользовалась вашим продуктом. Возможно, они отложили детальное изучение или настройку сервиса “на потом”. Таких пользователей можно добавить в отдельный сегмент и осторожно напомнить им о своем существовании, прислав письмо с благодарностью за регистрацию, кратким описанием преимуществ сервиса и предложением помочь с началом работы.
Итак, мы получили первое ветвление и отправили соответствующие сообщения пользователям:- начавшим активно использовать ваш сервис
- и тем, кто остановился на регистрации или первом входе
- Седьмой день: выполнено ли ключевое действие
К этому моменту обычно собрано достаточно информации и вы легко сможете отличить вашего активного пользователя от человека, который зарегистрировался из любопытства. Обычно активность любого пользователя оценивается исходя из того, совершено ли им ключевое действие. Назовем его активацией. Для разных сервисов действие может быть разным, например: отправка приглашения коллеге, добавление комментария и т.д.
На этом этапе мы имеем уже 3 группы пользователей и специальные сообщения для каждой из них:- Активные пользователи, которые выполнили целевое действие
Все хорошо, можно поблагодарить пользователя и предложить ему ссылки на дополнительные возможности вашего сервиса - Активные пользователи, которые не выполнили ключевое действие
Видно, что человеку потенциально интересен ваш сервис, но что-то мешает ему выполнить активацию. Тут можно, проанализировав, где именно он остановился, отправить ему ссылку на конкретный раздел помощи или выделить персонального менеджера для решения проблемы - так и не начали использовать сервис
Хм… Что-то пошло не так, давайте спросим, может быть им чего-то не хватает? Или ваше решение не работает для них?
- Активные пользователи, которые выполнили целевое действие
- Один день до завершения пробного периода
Чем дальше мы двигаемся по воронке использования сервиса, тем больше можно выделить различных групп пользователей. Для каждой из них было бы неплохо подготовить отдельные сообщения. Вот пробный период почти подошел к концу и мы можем выделить 4 основные группы:- Активные
У этих пользователей идет все лучше, чем у других. Они приглашают друзей и коллег для совместного использования сервиса, не стесняются задавать вопросы и использовать дополнительный функционал. Им достаточно напомнить и немного подождать, скорее всего они останутся с вами надолго. - Пассивные
Обычно этот тип пользователей имеет достаточно высокий показатель возврата в ваш продукт. Но степень перехода в категорию “спящих” у них определенно выше. Это бывает вызвано разными факторами, например, такого пользователя может пригласить к использованию вашего приложения кто-то из знакомых. Или же пользователь просто не до конца оценил вас по-достоинству. Я бы рекомендовал напомнить им о непосредственном завершении пробного периода и одновременно предложить скидку на коммерческую версию продукта. - Спящие
Пользователи сделали 3-10 входов в систему, но, возможно, не успели совершить ключевое действие. Я бы рекомендовал также отправить таким пользователям специальное предложение, но, в данном случае, я бы предложил помимо скидки на покупку премиум версии, продлить их пробный период еще на неделю по запросу. Эту группу как и предыдущую важно спросить о возникших проблемах и начать диалог. - Мертвые
Эта группа не проявляла активности все 14 дней. Они не открывали ваши письма, не пользовались сервисом. Пока не стоит их раздражать чрезмерным вниманием. Давайте оставим эту группу на потом и напомним им о себе через месяц или два, когда вы, к примеру, выпустите новый функционал или что-то поменяете в вашем сервисе.
- Активные
Я показал примерный вариант построения drip-компании для двухнедельного пострегистрационного периода. Он затрагивает лишь небольшой набор действий и параметров пользователей и должен быть адаптирован для нужд реальной компании. Но я надеюсь, что мой ход мыслей понятен, и теперь вам будет проще настроить цепочки сообщений для ваших пользователей.
A/B тестирование писем в Intercom
Недавно в сервисе появился крайне полезный инструмент, который позволит вам увеличить эффективность как обычной рассылки, так и ваших информационных сообщений — это a/b оптимизация. Для начала создайте автоматическое сообщение на основании любого правила или откройте уже существующее. Вы увидите таб:
После того, как вы нажмете 'Start A/B test', вы сможете создать версию “B” вашего сообщения и запустить рассылку двух вариантов параллельно. Intercom отправит вашим пользователям поровну “A” и “B” сообщений и начнет собирать и анализировать статистику.
Вскоре вы сможете проанализировать результаты рассылки, выбрать наиболее эффективное сообщение и действовать дальше — оставить только его или же настроить следующий A/B тест.
Заключение
Напоследок хотелось бы добавить небольшую ложку дегтя. Intercom достаточно молодая компания и их продукт постоянно развивается. Иногда вы можете столкнуться с незначительными проблемами в работе их сервиса. Из своего опыта мы можем отметить несколько моментов: данные о количестве пользователей обновляются с некоторой задержкой, сообщения пользователям иногда дублируются в интерфейсе (только там, несколько раз они не отправлялись), нам пришлось немного поплясать с бубном, чтобы настроить отслеживание приглашений пользователей и построить некое подобие графа (мы использовали для этого теги), интерфейс иногда “подтормаживает”, было еще несколько проблем, но их достаточно быстро исправили.
Как и обещал в начале вот небольшой список аналогичных сервисов. Вы без труда найдете их обзоры и сможете выбрать подходящий:
- Intercom.io
- track.io
- fullstory.com
- www.woopra.com/
- mixpanel.com
- heapanalytics.com
Мы подготовили небольшой список советов по построению коммуникации с пользователями в вашем приложении:
- Вы должны определить цель, которая будет определять Активацию пользователя.
- Всегда предлагайте только то, что нужно пользователю, иначе вы рискуете вызвать раздражение у пользователя.
- Уважайте пользователя и фокусируйтесь на построении доверительных отношений с ним.
- Ваши сообщения должны быть персонализированными. Ведь вы сами больше доверяете письму от автора с именем и фото, чем от обезличенной компании.
- Персонально общайтесь с людьми, которым нужна помощь или поручите это компетентному специалисту.
- Общайтесь с пользователями на их языке
- Собирайте информацию о всех возможных действиях людей в вашей системе
- Настройте капельные рассылки и постоянно тестируйте их эффективность
Полезные ссылки:
- github.com/intercom/intercom-ios
- github.com/nubera-ebusiness/intercom-php
- github.com/silentrob/node-intercom
- docs.intercom.io/api
- github.com/gdi2290/angular-intercom
- github.com/eldarion/django-intercom-io
- github.com/percolatestudio/meteor-intercom
Как всегда, мы горячо приветствуем ваши вопросы в комментариях. Хотя вы можете задать свои вопросы непосредственно в службу поддержки Intercom, они очень быстро и развернуто отвечают на все вопросы.
Автор: mova