Отслеживаем офлайн-конверсии и звонки
Без CRM с помощью Google Tag Manager, Яндекс.Метрики и Google Docs.
Подписывайтесь на мой канал в Телеграме t.me/ppclifehacks — лайфхаки и решения проблем из PPC и веб-аналитики: как собрать свой коллтреккинг на коленке, устроить вечную рекламную акцию или правильно отследить заполнение AJAX-форм на сайте. Всё это и другие статьи в канале и этом блоге.
Я расскажу как с помощью бесплатных инструментов без систем сквозной аналитики за полчаса наладить отслеживание офлайн-конверсий и организовать динамический колл-треккинг. Мы используем простое промокодирование аналогично рыночным аналитическим инструментам.
Эту инструкцию стоит воспринимать как демонстрацию возможностей инструментов, а не готовое решение для бизнеса — тем не менее, для небольшого трафика это работоспособно.
Как это работает
Шаг 1
Пользователь заходит на сайт и видит, например, в правом верхнем углу под номером телефона специальный промокод с пометкой “ваш промокод”. Этот же код можно показывать пользователю при оформлении заказа на самовывоз и просить сохранить и т.д.
Шаг 2
При звонке оператор просит пользователя назвать промокод, если пользователь отказывается —скажите, что проводите лотерею со скидкой или купоном.
Шаг 3
Оператор или продавец вносит в специальную Google-форму промокод и цель, которую достиг пользователь — звонок, офлайн-покупка и т.п.
Шаг 4
После рабочего дня все данные выгружаются в Метрику. Даже у неопытного человека это займёт 1–2 минуты, так как данные уже будут в нужном для импорта виде.
Результаты
Результаты будут в Яндекс.Метрике как выполненные цели у соответствующих визитов и вы легко сможете понять, откуда пришёл покупатель вплоть до ключевого слова.
Как это работает технически
При открытии страницы, GTM ждёт загрузки Метрики и как только Метрика инициализировалась, считывается cookie с промокодом. Если промокода нет, то он генерируется, записывается в cookie, отправляется в Метрику и показывается пользователю. Промокод живёт 21 день — этого достаточно, так как в Метрике учёт конверсий возможен только в течение 21 дня.
Если Метрика или даже сам GTM не стартовали, то будет использован промокод по умолчанию.
Промокод — это количество секунд с начала месяца, чтобы избежать повторений. Для удобства восприятия код форматируется как XX-XXXXX.
Данные об офлайн-конверсиях и звонках вносятся в специальную форму, которая генерирует файл для загрузки в Метрику. Сопоставляя промокод с визитом, Метрика определяет какой пользователь совершил конверсию.
Конверсия будет присвоена последнему перед внесением данных в форму визиту.
Поехали
Процесс настройки разделим на 4 шага:
- Настройка на сайте
- Яндекс.Метрика
- Google Tag Manager
- Документы Google
Настройка на сайте
Чтобы выводить промокод на сайте, внесём изменения в код. Самое логичное — показывать его в строке под телефонным номером, на неё точно посмотрят перед звонком. Выводить код можно как угодно, например, через скрытый div, но для простоты примера я сделал так:
<p>Ваш промокод: <span id="promo">12–34567</span></p>
Здесь важны два момента:
- Указать у элемента id=”promo”
- Вместо 12–34567 вписать промокод по умолчанию, на случай если у пользователя отключены скрипты или стоит блокировка загрузки Google Tag Manager/Метрики
Яндекс.Метрика
Настраиваем цели
В примере я создам две цели: офлайн-лид offlinelead и звонок offlinecall. Цель делаем по JavaScript-событию:
Включаем увеличенный период учёта конверсий
По умолчанию новые данные добавляются к визиту в течение 16 часов после его завершения, этого срока не хватит, поэтому включаем увеличенный период в настройках счётчика на вкладке “Загрузка данных”.
Google Tag Manager
Создаём переменную для работы с cookie
Будем записывать и считывать промокод из cookie, для этого создаём переменную promocookie, название cookie promo.
Модифицируем тег счётчика Метрики
Метрика умеет генерировать событие после успешной инициализации, это включается добавлением параметра:
triggerEvent:true
Вот так:
Создаём тег отслеживания запуска Метрики
Чтобы передать событие о старте Метрики в GTM создаём пользовательский HTML тег Metrika trigger, который активируется на всех страницах. В тег помещаем код:
<script>
document.addEventListener('yacounter0000000inited', function() {
dataLayer.push({
'event': 'metrika_fired'
});
});
</script>
Вместо нулей указываем свой номер счётчика.
Создаём триггер
Чтобы генерировать и показывать промокод только при успешной инициализации Метрики, понадобится триггер на пользовательское событие metrika_fired:
Создаём основной тег промокода
Это будет пользовательский HTML тег Get or set promocode с таким содержанием, комментарии можно удалить:
<script>//Проверяем есть ли cookie с промокодомif ('{{promocookie}}' == 'undefined') {//если нет, то генерируемvar d = new Date();//в качестве кода берём количество секунд с начала месяцаvar code = (d.getDate() * 86400 + d.getHours() * 3600 + d.getMinutes() * 60 + d.getSeconds()).toString();//проверяем, хватает ли у нас цифр в коде (должно быть 7, чтобы не путаться), если нет, до дописываем в начало 0while (code.length < 7) {code = "0" + code;}//отделяем первые две цифры, чтобы люди легче воспринимали код вида ХХ-ХХХХХvar result1 = code.split(/^[0-9]{2}/)[1];var result2 = code.split(/[0-9]{5}$/)[0];//указываем срок жизни для cookie - 21 день, так как у Метрики импорт офлайн-конверсии действует 21 день.d.setDate(d.getDate() + 21);//записываем cookie с новым промокодомdocument.cookie = 'promo=' + result2 + '-' + result1 + ';' + 'expires=' + d;}//сообщаем в Метрику промокод посетителяyaCounter000000000.setUserID('{{promocookie}}');</script>
Вместо нулей указываем номер вашего счётчика.
Триггером ставим созданный ранее Metrika fired. Получится так:
Создаём тег показа промокода
Когда наш промокод считан или сгенерирован, его нужно показать. Для этого создаём ещё один пользовательский HTML тег Show promocode, в моём случае (см. пример настройки на сайте) он будет с таким содержанием:
<script>
document.getElementById("promo").innerHTML="{{promocookie}}";
</script>
Таким образом мы меняем содержимое внутри тега с id=”promo”.
Триггером как и на предыдущем шаге выбираем Metrika fired. Вот так:
Очень важный момент — чтобы показ не произошёл до генерации кода и отправки в Метрику, нужно настроить приоритет активации тегов: открываем расширенные настройки и ставим галочку “Активировать тег перед тегом Show promocode”, в Тег setup выбираем тег генерации промокода Get or set promocode и ставим галочку “не активировать тег Show promocode, если тег Get or set promocode не сработал”. Должно получиться так:
На этом настройка Google Tag Manager закончена, запускаем GTM в режиме предварительного просмотра и проверяем на сайте как это работает, в моём примере работает отлично:
Можно открыть страницу с параметром ?_ym_debug=1 и заглянув в консоль убедиться, что в Метрику передаётся user_id, выглядит это примерно так:
Документы Google
Создаём форму
Чтобы упростить работу оператору сделаем форму для ввода данных. Переходим в Google Формы и создаём простую форму из двух вопросов:
- Промокод — Текст (строка)
- Тип обращения — Один из списка
Здесь указываем идентификаторы наших целей из Метрики.
Отмечаем, что это обязательные вопросы, в настройках на вкладке “Презентация” отмечаем “Показывать ссылку для повторного заполнения формы”. Проверяем результат, должно получиться так:
Переходим на вкладку “Ответы”, нажимаем “Создать таблицу”, выбираем новую и переходим к следующему шагу.
Настраиваем таблицу
Таблица будет такая:
Для начала нужно определить именованные диапазоны для простоты редактирования и масштабирования в будущем. Открываем меню “Данные” и выбираем “Именованные диапазоны”.
Выделяем полностью первый столбец, нажимаем “Добавить диапазон” и называем его time:
Проделываем это с другими столбцами, называя их promocode и goal соответственно. В итоге получится три диапазона:
Создаём новый лист для выгрузки и вносим формулы:
- В ячейку A1
=arrayFormula(IF(ROW(promocode)=1;"UserID";IF(LEN(promocode);promocode;)))
2. В ячейку B1
=arrayFormula(IF(ROW(goal)=1;"Target";IF(LEN(goal);goal;)))
3. В ячейку C1
=arrayFormula(IF(ROW(time)=1;"DateTime";IF(LEN(time);int((time-"1/1/1970"-"1/1/1900"+2)*86400)-10800;)))
В последней формуле конвертируем время в формат Unix, который принимает Метрика. В моей формуле 10800 — это поправка на часовой пояс, мой часовой пояс UTC+3, поэтому я отнял 10800 (3 часа в секундах), чтобы уровнять время с UTC.
В итоге получается такая таблица:
Проверяем работоспособность
Открываем форму и вносим тестовые данные:
Открываем таблицу и проверяем листы, если всё сделали правильно, то увидите результат.
На первом листе:
На втором листе:
Для очистки тестовых данных рекомендую удалить строки на первом листе, а данные на втором очистятся автоматически. Если просто очистить, то новые данные из формы будут добавляться в новые строки. После удаления строк мы получим:
Боевая проверка с выгрузкой в Метрику
Теперь проверяем всё в боевом режиме. Не советую делать это в режиме “инкогнито”.
Как только данные появились в таблице, нужно выгрузить их в Метрику, для этого экспортируем второй лист в формате CSV через меню Файл>Скачать как>CSV-файл (текущий лист).
Получившийся файл загружаем в Метрику, в настройках в разделе “Загрузка данных”:
В настройках загрузки выбираем тип файла UserId
Обработка загруженных данных занимает 2 часа, в итоге на этой же вкладке появится результат с количеством успешных привязок конверсий:
Если Метрика сообщает об ошибке привязки, значит параметр user_id не передан или отличается от того, что загрузилось в Метрику, проверьте всё ещё раз.
Если всё получилось, то в отчётах появятся выполненные цели, с которыми можно работать как обычно.
Вот и всё!
Я написал эту инструкцию, чтобы показать как работают инструменты — модифицируя описанный метод можно придумать ему и другое применение. Спасибо, что прочитали!
Другие лайфхаки на моём канале https://telegram.me/ppclifehacks
Если вы хотите отблагодарить автора, то сделать это можно по ссылке: http://yasobe.ru/na/ppclifehacks
P.S. Перепечатка без разрешения автора запрещена. Наши юристы не зря получают зарплату:)