Никанор Бабурин, независимый аналитик
«Да зачем кому-то платить? Сами сделаем! Сайт? Зачем нам движок? Прямым HTML-кодированием в «Блокноте» напишем. CRM? Зачем готовая? Создадим в Excel или табличку Google Sheets и погнали!»
Знакомые диалоги? Толика здравого смысла в этих рассуждениях имеется, но все зависит от решаемых задач и масштабов бизнеса. Покажу на примере одного проекта, как мы сделали сквозную аналитику самостоятельно, а уж вы решите, оправдан был такой подход или нет.
Два года назад подрядчик сдал нам готовый сайт на «Тильде», интегрированный через их платформу с CRM. Также к сайту был подключен один из сервисов сквозной аналитики.
Первое время действительно было удобно: воронка продаж «раскладывалась» по каналам привлечения лидов: с контекстной рекламы, почтовых рассылок, поиска. Но потом «что-то пошло не так»: треть времени тратилась на корректное прописывание меток (которые иногда слетали из-за «странностей» интеграций), две трети времени тратилось на выяснение причин расхождений с CRM. И мы задались вопросом: «А за что платить ежемесячно сервису сквозной аналитики?»
И тогда перевели все в полуручной режим. Руководствовались утилитарным подходом: аналитика для нас не самоцель, а средство принятия решений. Нам нужно понимать, что сделать, чтобы продавать больше. Поэтому задача минимум — учесть каналы привлечения лидов в CRM.
Шаг первый. Правильные UTM-метки
Во всех ссылках, ведущих на сайт с рекламных активностей (посты, рекламные кампании, e-mail-рассылки), прописали UTM-метки. За стандарт взяли рекомендации Яндекса. Чтобы потом не запутаться, завели справочник в Google Sheets.
Нам повезло:
а) движок сайта «таскает» за посетителем UTM-метки, с которыми он пришел на сайт. Имеется в виду, что если посетитель по рекламе зашел на страницу одной услуги, но потом, походив по сайту, купил другую услугу, то при отправке данных с формы в CRM будут отправлены данные UTM-меток, с которыми посетитель зашел на сайт,
б) интеграционная платформа между движком сайта и CRM при отправке данных с формы в CRM записывает на карточке лида все дополнительные параметры: все UTM-метки (отдельно utm_source, utm_medium и т.д.), ID посетителя Яндекс.Метрики, ID посетителя Google Analytics и прочее.
Соответственно, проанализировать эффективность каналов продаж не составляет труда. В нашем случае это делается в ручном режиме, потому что CRM не умеет строить такую отчетность. Из CRM в Excel выгружаем все сделки и делаем сводную таблицу с иерархическими группировками по UTM-меткам.
(примечание: все цифры условные)
В нашем случае продажи идут не в ежечасном режиме. Специфика бизнеса — очные (офлайн) тренинги, учебные группы набираются один раз в два-три месяца, так что аналитика по каналам продаж строится раз в неделю. Этого вполне достаточно для понимания, в какой канал лить рекламный бюджет дальше.
Визуализация, конечно, не ахти, но это рабочий инструмент аналитика/таргетолога, а шефу промежуточная аналитика не интересна. Конечно, если придется держать отчет перед руководством о результатах рекламы, то в таком виде отдавать его нельзя — придется приложить усилия по наведению красоты. Но в нашем случае визуальная красота не так важна.
Шаг второй. Аналитика эффективности поискового трафика
С аналитикой эффективности рекламы разобрались, встал вопрос с аналитикой продаж с поиска. Вот как это было реализовано:
- в шапке сайта мы разместили код на 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 все данные полей форм, в том числе скрытых.
Вуаля! Если пользователь попадал на сайт с поиска, а потом оставлял заявку через любую из форм, на карточке сделки будет записано (для примера) следующее:
Попутно мы решили еще задачу, которую традиционно решают сервисы сквозной аналитики, — учет первой точки контакта (касания с клиентом). 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/