Найти тему
CoMagic

Сквозная аналитика своими руками или готовый сервис?

Никанор Бабурин, независимый аналитик

«Да зачем кому-то платить? Сами сделаем! Сайт? Зачем нам движок? Прямым HTML-кодированием в «Блокноте» напишем. CRM? Зачем готовая? Создадим в Excel или табличку Google Sheets и погнали!»

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

Два года назад подрядчик сдал нам готовый сайт на «Тильде», интегрированный через их платформу с CRM. Также к сайту был подключен один из сервисов сквозной аналитики.

Первое время действительно было удобно: воронка продаж «раскладывалась» по каналам привлечения лидов: с контекстной рекламы, почтовых рассылок, поиска. Но потом «что-то пошло не так»: треть времени тратилась на корректное прописывание меток (которые иногда слетали из-за «странностей» интеграций), две трети времени тратилось на выяснение причин расхождений с CRM. И мы задались вопросом: «А за что платить ежемесячно сервису сквозной аналитики

И тогда перевели все в полуручной режим. Руководствовались утилитарным подходом: аналитика для нас не самоцель, а средство принятия решений. Нам нужно понимать, что сделать, чтобы продавать больше. Поэтому задача минимум — учесть каналы привлечения лидов в CRM.

Шаг первый. Правильные UTM-метки

Во всех ссылках, ведущих на сайт с рекламных активностей (посты, рекламные кампании, e-mail-рассылки), прописали UTM-метки. За стандарт взяли рекомендации Яндекса. Чтобы потом не запутаться, завели справочник в Google Sheets.

-2

Нам повезло:

а) движок сайта «таскает» за посетителем UTM-метки, с которыми он пришел на сайт. Имеется в виду, что если посетитель по рекламе зашел на страницу одной услуги, но потом, походив по сайту, купил другую услугу, то при отправке данных с формы в CRM будут отправлены данные UTM-меток, с которыми посетитель зашел на сайт,

б) интеграционная платформа между движком сайта и CRM при отправке данных с формы в CRM записывает на карточке лида все дополнительные параметры: все UTM-метки (отдельно utm_source, utm_medium и т.д.), ID посетителя Яндекс.Метрики, ID посетителя Google Analytics и прочее.

Соответственно, проанализировать эффективность каналов продаж не составляет труда. В нашем случае это делается в ручном режиме, потому что CRM не умеет строить такую отчетность. Из CRM в Excel выгружаем все сделки и делаем сводную таблицу с иерархическими группировками по UTM-меткам.

-3

(примечание: все цифры условные)

В нашем случае продажи идут не в ежечасном режиме. Специфика бизнеса — очные (офлайн) тренинги, учебные группы набираются один раз в два-три месяца, так что аналитика по каналам продаж строится раз в неделю. Этого вполне достаточно для понимания, в какой канал лить рекламный бюджет дальше.

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

Шаг второй. Аналитика эффективности поискового трафика

С аналитикой эффективности рекламы разобрались, встал вопрос с аналитикой продаж с поиска. Вот как это было реализовано:

  • в шапке сайта мы разместили код на JavaScript, который:

а) вычисляет URL-адрес страницы, откуда пришел посетитель,

б) записывает это в две «cookie»: одна хранится сутки, другая — 90 дней.

function getCookie(search)
{
var cookie = " " + document.cookie;
var setStr = null;
var offset = 0;
var end =0;
if (cookie.length > 0)
{
offset = cookie.indexOf(search);
if (offset != -1)
{
offset += search.length;
end = cookie.indexOf(";", offset)
if (end == -1) {
end = cookie.length;
}
setStr = unescape(cookie.substring(offset, end));
}
}
return(setStr);
}

var x=document.referrer;

var u = x.split('?',1);

x=u[0];

var date1 = new Date;
date1.setDate(date1.getDate() + 1);
date1 = date1.toUTCString();
var date90 = new Date;
date90.setDate(date90.getDate() + 90);
date90 = date90.toUTCString();

if(getCookie('URL90')===null)
{ document.cookie = 'URL90='+x+'; path=/; expires='+date90;
}
if(getCookie('URL1')===null)
{ document.cookie = 'URL1='+x+'; path=/; expires='+date1;
}

  • в каждой форме ввода на каждой странице сайта мы добавили два скрытых поля с одноименными названиями «cookie»,
  • в подвале сайта разместили код на jQuery, который при заполнении посетителем любой формы на любой странице записывает в одноименные «cookie» скрытые поля форм значения соответствующих «cookie».

$(document).ready(function(){
$('input').change(function(){

URL90=getCookie('URL90');

if(URL90!==null)
{ $(':input[name="URL90"]').val(URL90);
}

URL1=getCookie('URL1');

if(URL1!==null)
{ $(':input[name="URL1"]').val(URL1);
}

return true;
});
});

Ремарка: почему в шапке сайта скрипт на JavaScript, а в подвале — на jQuery? На jQuery получается более компактный по количеству строк код, решающий узкую задачу: во все формы со скрытым полем с именем «URL90» записать значение «cookie URL90» (для URL1 аналогично).

По-хорошему, JavaScript-код из шапки сайта надо бы переписать на jQuery для «красоты IT-архитектуры». Но во-первых, «нет ничего более постоянного, чем временное», и, во-вторых, следуем негласному правилу программистов: «Работает — не трожь!»

  • Как я уже писал выше, интеграционная платформа между движком сайта и CRM автоматом записывает на карточку сделки в CRM все данные полей форм, в том числе скрытых.

Вуаля! Если пользователь попадал на сайт с поиска, а потом оставлял заявку через любую из форм, на карточке сделки будет записано (для примера) следующее:

-4
-5

Попутно мы решили еще задачу, которую традиционно решают сервисы сквозной аналитики, — учет первой точки контакта (касания с клиентом). 90-дневная «cookie» хранит URL страницы, с которой посетитель заходил на сайт в течение последних 90 дней (даже если не оформлял никаких заказов).

Чтобы получить аналитику лидов/сделок в разрезе каналов, снова выгружаем данные из CRM в Excel. Пишем «несложные» формулы вида:

=ЕСЛИ(BZ2<>0;BZ2;ЕСЛИ(ЕОШИБКА(НАЙТИ("yandex";$CC2;1));ЕСЛИ(ЕОШИБКА(НАЙТИ("goog";$CC2;1));ЕСЛИ(BV2<>0;BV2;"");"google");"yandex"))

Затем делаем еще одну сводную таблицу плюс графики/диаграммы по каналам. Обращаю внимание: это уже вторая выгрузка из CRM в Excel.

Как узнать, по какому именно поисковому запросу зашел посетитель на сайт, совершивший сделку? Настолько глубоко мы не углублялись, потому что на этом проекте за год было всего 6 сделок с поиска. Нечего масштабировать — незачем заниматься микроаналитикой. :)

Теоретически, если понадобится, у нас в карточке сделки в CRM есть ID посетителя по счетчику Яндекс.Метрики.

  • Можно взять Power BI.
  • Подключить два источника данных:
  • данные Яндекс.Метрики по API
  • данные из CRM (либо по API, либо через экспорт в Excel/CSV-формат)
  • Объединить эти источники по ID Яндекс.Метрики.
  • Построить отчет.

Аналогично с Google Analytics. Вместо Power BI можно использовать Google Data Studio. Если настроить типовые дашборды, можно делать такую аналитику в разрезе поисковых запросов хоть каждый час.

Выводы

  • Сквозную аналитику (уникальную для своего проекта) самому (читай — бесплатно) построить можно, но:

а) Надо уметь кодировать на JavaScript и/или jQuery с учетом особенностей интеграций движка вашего сайта и CRM. Либо самому, либо иметь в штате программиста.

Можно поручить написать соответствующий код привлеченному специалисту, но тогда у вас встанет задача поддержания этого кода. Ставлю сто к одному, что со временем у вас появится потребность что-то доработать в коде (например, вы захотите видеть и анализировать точки касания клиента с сайтом 3, 6, 9 месяцев назад, причем с точностью до секунды. :) Будет ли в зоне доступности и за какие деньги согласится дорабатывать код тот же привлеченный специалист? Следующий привлеченный специалист? Будьте готовы, что за доработку чужого кода другой специалист берет дополнительные деньги. А если он что-нибудь сломает из того, что ранее работало?

б) Если ваша CRM не умеет строить сводные отчеты по UTM-меткам, вам придется каждый раз «руками» выгружать данные в Excel и там обрабатывать.

Можно настроить отчетность в Power Bi или Google Sheets с прописыванием извлечения данных по API, а это отдельная компетенция.

Привлечь фрилансера? Со временем возникнет тот же самый вопрос: «Кто будет дорабатывать?» А что отчеты придется дорабатывать минимум раз в месяц, я вам гарантирую. Хороший аналитик всегда найдет, в каком вопросе необходимо углубиться в детали. А хороший руководитель — тем более.

К слову, Power BI бесплатный. Но даже на моем (не самом старом и самом медленном) компьютере после последнего обновления он работает медленно. Чтобы поделиться отчетом с командой или руководством, проще в WhatsApp отправить принтскрин. Просмотр в режиме онлайн через браузер с возможностью самому пофильтровать и подетализировать — это уже полноценная BI-система получается, к тому же не бесплатная.

Можно сделать все на основе Google Sheets: коннекторы для получения данных по API из Яндекс.Метрики и Google Analytic есть. Как тянуть данные из CRM по API — большой вопрос, потому что не каждая CRM имеет открытый API. К тому же готовых коннекторов может не найтись — придется писать самому.

И конечно, никто не отменял задачу следить за актуальностью этих кодов. В феврале Яндекс поменял формат обращения по API. Код надо переписывать.

Итого технологический стек («Зоопарк технологий») получается следующий:

  • Код на сайте (JavaScript или jQuery),
  • Excel, или
  • PowerBI + код на R для извлечения данных по API из CRM, или
  • Google Sheets + App Scripts.

Выбор прост: тратить время на самостоятельное кодирование и формирование отчетности в полуручном режиме или взять готовые сервисы, а освободившееся время потратить на бизнес: улучшение продукта, сайта, новые рекламные активности — то, что сейчас становится трендом и называется Growth Hacking.

оригинал: https://www.comagic.ru/blog/posts/mar/skvoznaya_analitika_svoimi_rukami_ili_gotovyy_servis/