Отслеживаем офлайн-конверсии и звонки

Без CRM с помощью Google Tag Manager, Яндекс.Метрики и Google Docs.

Kirill V. Nikulin
8 min readJul 15, 2017

Подписывайтесь на мой канал в Телеграме 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>

Здесь важны два момента:

  1. Указать у элемента id=”promo”
  2. Вместо 12–34567 вписать промокод по умолчанию, на случай если у пользователя отключены скрипты или стоит блокировка загрузки Google Tag Manager/Метрики

Яндекс.Метрика

Настраиваем цели

В примере я создам две цели: офлайн-лид offlinelead и звонок offlinecall. Цель делаем по JavaScript-событию:

Цель на офлайн-лид

Включаем увеличенный период учёта конверсий

По умолчанию новые данные добавляются к визиту в течение 16 часов после его завершения, этого срока не хватит, поэтому включаем увеличенный период в настройках счётчика на вкладке “Загрузка данных”.

Включаем увеличенный период учёта конверсий

Google Tag Manager

Создаём переменную для работы с cookie

Будем записывать и считывать промокод из cookie, для этого создаём переменную promocookie, название cookie promo.

Переменная для работы с cookie

Модифицируем тег счётчика Метрики

Метрика умеет генерировать событие после успешной инициализации, это включается добавлением параметра:

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, выглядит это примерно так:

В консоле видно, что параметр user_id с промокодом отправлен в Метрику

Документы Google

Создаём форму

Чтобы упростить работу оператору сделаем форму для ввода данных. Переходим в Google Формы и создаём простую форму из двух вопросов:

  1. Промокод — Текст (строка)
  2. Тип обращения — Один из списка
    Здесь указываем идентификаторы наших целей из Метрики.

Отмечаем, что это обязательные вопросы, в настройках на вкладке “Презентация” отмечаем “Показывать ссылку для повторного заполнения формы”. Проверяем результат, должно получиться так:

Форма для внесения информации об офлайн-конверсиях

Переходим на вкладку “Ответы”, нажимаем “Создать таблицу”, выбираем новую и переходим к следующему шагу.

Настраиваем таблицу

Таблица будет такая:

Таблица записи ответов из формы

Для начала нужно определить именованные диапазоны для простоты редактирования и масштабирования в будущем. Открываем меню “Данные” и выбираем “Именованные диапазоны”.

Выделяем полностью первый столбец, нажимаем “Добавить диапазон” и называем его time:

Создаём именованный диапазон

Проделываем это с другими столбцами, называя их promocode и goal соответственно. В итоге получится три диапазона:

Именованные диапазоны

Создаём новый лист для выгрузки и вносим формулы:

  1. В ячейку 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 часа, в итоге на этой же вкладке появится результат с количеством успешных привязок конверсий:

Файл обработан, в моём случае не привязаны 2 строки с тестовыми промокодами, которые не передавались в Метрику

Если Метрика сообщает об ошибке привязки, значит параметр user_id не передан или отличается от того, что загрузилось в Метрику, проверьте всё ещё раз.

Если всё получилось, то в отчётах появятся выполненные цели, с которыми можно работать как обычно.

Вот и всё!

Я написал эту инструкцию, чтобы показать как работают инструменты — модифицируя описанный метод можно придумать ему и другое применение. Спасибо, что прочитали!

Другие лайфхаки на моём канале https://telegram.me/ppclifehacks

Если вы хотите отблагодарить автора, то сделать это можно по ссылке: http://yasobe.ru/na/ppclifehacks

P.S. Перепечатка без разрешения автора запрещена. Наши юристы не зря получают зарплату:)

--

--