Как мы делали свой счетчик с вебвизором и идентификацией клиентов (и исходники)

от автора

Казалось бы, есть идеальные инструменты для аналитики: GA/Метрика, Mixpanel/KISSmetrics. Но к каждому, в определенный момент, нашлось несколько неразрешимых вопросов. Есть довольно простая задача: нужно хранить всю информацию о поведении людей в нашем проекте. Поведение такое: первый визит на сайт, регистрация, триал, оплата, продолжение работы с сервисом. Либо неоплата и периодические возвращения на сайт рассылками и другими штучками. Это SaaS. Аналогичное поведение будет у покупателей любого интернет-магазина. Но готовое решение для нас не нашлось.

Формат нашего проекта: это платформа для интернет-магазинов. Работает на рынке Беларуси, где целом нет людей для b2b saas-ов. Идет работа на очень конкурентном и относительно крупном рынке России, где до большой посещаемости и количества регистраций для статистики еще нужно дойти. Есть два сегмента тарифов/услуг: тарифы 300-3000 рублей в месяц и персональные проекты на шаблонах за 15-45 тысяч рублей, в зависимости от комплектации.

Цель, которую мы преследуем — это смотреть, как пользуются продуктом и стать продажнкиами-снайперами в рамках того, что имеем 🙂 Особенно в вычислении тех, кого может заинтересовать магазин с персональным дизайном. С остальными дело относительно проще.

Для этого нам нужно хранить всю возможную информацию о каждом конкретном посетителе и иметь возможность делать ему максимально точные предложения, догадываясь, чего он хочет.

Итого нам нужно следующее

  1. Статистика визитов, разумеется. Источник визита и т.п. базовая информация.
  2. Передача идентификатора посетителя между доменами, так как магазины создаются по адресу вида *.domenservisa.ru и там идентификатор главного домена, можно считать, не работает, если знать, что в итоге подключат свой домен.
  3. Идентификация посетителей, когда они зарегистрируются. Когда они сменят браузер или еще что-нибудь подобное, но выдадут себя через авторизацию в админке, нужно их объединить с прошлой историей.
  4. Вебвизор/карта кликов/скролла и т.п. для панели управления магазином.
  5. Вечное хранение этой статистики по каждому конкретному посетителю и далее возможность все это просмотреть, когда он зарегистрируется.
  6. Возможность рекомендовать этот инструмент для своих клиентов, чтобы желающие видели всю информацию по своим клиентам.
  7. Хоть какая-то минимальная защита от паранойи сливать свою базу в какой-нибудь сервис.

Более менее, все это есть в Mixpanel/KISSmetrics. Но у нас нет для них столько трафика и у них нет вебвизора. А он нужен нам позарез, чтобы видеть все поведение человека за все время, когда он отправил заявку на персональный дизайн, либо когда мы проводим акцию и смотрим, как на нее реагирует нужная нам выборка.

В общем, вы уже наверно поняли, что мы будем кодить 🙂

Почти все уже придумано до нас, поэтому вместо полного изобретения велосипеда и траты времени будем адаптировать пригодные решения. Библиотека heatmap.js была известна давно, а вот прототип вебвизора к счастью быстро нашелся (рефссылка, если что — заранее спасибо 🙂 Там еще их 2-3 есть, этот самый адекватный.

  1. Базу данных по хитам и записи событий храним в файлах виде обычных логов. Скорость записи важнее, чем дальнейшая выборка данных для просмотра статистики. Логи можно будет переформатировать в будущем для любых графиков.
  2. Идентификаторы посетителей, URL и т.п. хэшируем и подписываем, чтобы избавится от автоинкрементов (чтения) и подделки запросов.
  3. Раскладываем все по папкам вида /000/001/host/data и т.п, чтобы в каждой папке было мало файлов.
  4. Дублируем некоторые данные при записи лога, чтобы быстрее получить статистику по домену или по посетителю, например.
  5. Храним в json-е, он меньше сериализации. Данные мыши и кликов храним через двоеточие скопом для каждой страницы, в итоге файлы небольшие и для каждой страницы собрана вся информация по каждому посетителю.
  6. Добавили метод типа identify, чтобы сопоставить id в трекере с id в базе нашей. Тогда из своей базы мы сможем получить все id, которые были у посетителя, если он менял браузеры, условно говоря.

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

Для фронта нам понадобилось дописать стандартный tracker.js из codecanyon.

  1. Сделали при инициализации скрипта добавление инпутов во все формы страницы, чтобы передавать их в свою базу.
  2. Сделали проверку URL страницы: если в адресе передается ID посетителя, то используем его. Нужно для передачи между доменами, аналогично как делает гугл с ?__ga параметром.

Extended лицензию на фронтовые скрипты пока не покупали, поэтому распространять их не можем. Но контролировать просмотр источника страницы демо сайта с трекером и админки мы не можем. В демо identify не используется, поэтому просто название браузера показывается.

В итоге мы имеем лог по каждому посетителю сайта, сопоставленный с нашей базой. При желании, за 2-3 дня вы можете сделать то же самое со своим проектом.

Жаль мы не собрали эти библиотечки лет пять назад, когда Яндекс покупал Вебвизор 🙂

ссылка на оригинал статьи http://habrahabr.ru/post/259395/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *