В своем агентстве контекстной рекламы мы научились решать вопрос со сквозной аналитики для небольших кампаний. Наверняка наш опыт будет актуален для всех интернет-маркетологов.
Проблема, которую решает статья
Клиент — мы не можем увеличивать рекламный бюджет на контекстную рекламу, так как не видим «расход/доход», а лиды не все конвертируются в продажи.
Агентство — внедряйте AmoCRM, будем интегрировать с Google Analytics
Клиент — у нас нет такого объема лидов, это дорого, долго и сложно
Агентство — ок, тогда мы не можем ничего сделать
Как решает
С помощью webhook пушим лиды в Google Sheets через Zapier, а из Google Sheets пушим данные в Google Analytics с помощью того же Zapier.
Теперь поэтапно настроим все под ключ
Пробежимся по логике
Какие у нас могут быть источники лидов?
- Формы на сайта
- Коллтрекинг
- Онлайн-чаты
- Обратные звонки
У 80% сервисов есть такая функция, как webhook, например, при звонке на динамический номер, коллтрекинг отправляет данные о посетителе на URL, который мы укажем.
Мы можем помочь вам настроить контекстную рекламу, оставьте заявку или напишите в чат.
Какой URL нам указывать? — Нам нужен механизм, который может принять данные, выбрать из них, что нам нужно, и вставить их в Google Sheets в виде новой строки. Эту задачу выполнит сервис Zapier, будучи коннектором.
Далее нам нужен механизм, который будет проверять изменения в Google Sheets и при изменениях отправлять строки в Google Analytics.
Итого:
Источник > Zapier > Google Sheets > Zapier > Google Analytics
Логичнее всего будет начать с источников, давайте на реальном примере реализуем связку. В нашем случае в качестве источников выступает коллтрекинг Roistat и формы на сайте.
Начнем с «Источник > Zapier > Google Sheets»
Переходим на сайт zapier.com и регистрируемся, нажимаем Make a Zap!
После этого откроется рабочее окно, давайте разберемся в интерфейсе:
- Домашняя страница, где расположены все Zap’ы (далее «коннекторы»)
- Логика коннектора, например 1 — принимаем, 2 — вытаскиваем значения, 3 — отправляем
- Рабочее окно выбранной слева вкладки, сейчас нам предлагают выбрать первый виджет
- Активен/неактивен коннектор
Создаем коннектор для Roistat
Выбираем встроенный коннектор:
Нажимаем Catch Hook и Save + Continue:
Переходим на вкладку Set Up Webhook и копируем URL для приема вебхук, пусть пока лежит в буфере.
Переходим на Set Up Options и нажимаем Continue:
Теперь нам предлагают сделать тестовый запрос по вебхуку, мы параллельно открываем ROIstat и переходим в настройки сценария коллтрекинга:
Внутри вставляем наш URL, применяем и сохраняем сценарий, теперь нужно зайти на сайт и совершить тестовый звонок. Надеюсь, что коллтрекинг у вас работает корректно.
По документации ROISTAT вебхук передает следующие данные
После звонка вы увидите в Zapier, что он получил вебхук, нужно нажать Continue и сделать следующий виджет.
Задаем название для коннектора Get from ROISTAT, пока не забыли. В поиске вводим и выбираем Google Sheets
Далее во вкладке Find or Create Row выбираем Lookup Spreadsheet Row:
Далее подключаем свой аккаунт в Gmail:
Создаем у себя в Google Drive новую таблицу, где у нас будут храниться все данные и вводим названия колонок. В нашем случае это:
- Источник лида
- Дата
- Имя
- Контакт
- Email
- Google Client ID
- Источник
- URL
- Выручка
- Статус сделки
- Качество лида
- Комментарий (если есть)
Далее в Zapier во вкладке Edit Options выбираем название созданной таблицы и внутреннюю вкладку в ней:
Нужно понимать, что по коллтрекингу у нас есть повторные звонки, и было бы неправильно создавать новые лиды (строки), которые дублируют предыдущие. Для этого перед каждым добавлением строки (лида) мы по колонке Контакт (номер телефона) ищем, есть ли в ней уже такой номер телефона, который мы хотим добавить. Напомню, что номер телефона мы до этого уже получили по вебхуку.
Далее в поле Lookup Column указываем название колонки, в которой будем искать дубль, а в поле Lookup Value само значение, которое будем искать:
Далее ставим галочку на Create Google Sheets Spreadsheet Row if it doesn’t exist yet? (Хотите ли вы добавлять новую строку, если дубль не найден?)
Теперь у нас автоматически появляются колонки из таблицы, которые мы создали ранее. Для каждой колонки нам нужно выбрать значение и вебхука, которое мы получили ранее. То есть, потом эти значения будут вставляться в колонки, которые мы сейчас выберем.
Нажимая на поле, у нас появляется выпадающий список с название поля и значением, которые содержит вубхук из Роистата.
Например, в колонку «Дата» мы хотим вставлять значение «Date» вебхука, и так нужно сделать для каждого поля:
Нажимаем Continue и отправляем тестовую строку Fetch & Continue:
Все, теперь Zapier предлагает нам активировать коннектор, что мы с радостью делаем. Первый коннектор готов:
Взаимодействие клиента с таблицей
У нас есть таблица, в которую поступают новые лиды, теперь нужно научить клиента взаимодействовать с ней и фиксировать продажи.
Для этого ранее мы создали 4 колонки:
С выручкой все понятно, как сделать фиксированный набор значений, для этого создаем отдельный лист и для каждого поля делаем набор значений для выбора:
Нажимаем правой кнопкой мыши на ячейку статуса и выбираем Data validation:
Появляется окно с настройками, в нем нажимаем на табличку, чтобы выбрать значения для выбора:
Выбираем диапазон статусов:
Все, теперь у нас в поле «Статус» есть фиксированный набор:
Аналогично делаем с колонкой «Качество лида» и выбираем грейдинг лида, лучше делать это в цифрах.
Далее отправляем клиенту такую вот инструкцию по взаимодействию с таблицей.
Реализуем связку «Google Sheets > Zapier > Google Analytics»
Для этого создаем новый коннектор Make a Zap!
Задаем имя коннектора Google Sheets to Google Analytics, выбираем Google Sheets в качестве виджета, как делали ранее, но теперь выбираем не создание новой строки, а New or Updated Spreadsheet Row (Проверка новых или обновленных строк):
Выбираем аккаунт, как делали ранее, повторяться не будем, далее выбираем тот же документ на Google Drive, лист и Trigger Column (Триггер-колонка). Суть в том, что коннектор каждые 15 минут проверяет лист и смотрит на триггер-колонку, в нашем случае, это «Статус сделки», если значение в ней изменилось, то он отправляет данные в Google Analytics.
Например, у нас был лид, мы добавили по нему статус «Продано», коннектор видит это и отправляет данные в Analytics. Ок, но как отправлять только при изменении на «Продано» и не отправлять «В обработке»?
Нужно сделать условия и фильтры:
Тестируем виджет, нажимаем Fetch & Continue, чтобы получить данные для создания следующего виджета.
В качестве следующего виджета выбираем Filter:
Выбираем Only continue if..
Выбираем в первом поле колонку «Статус сделки», далее (Text) Contains и «Продано»,
Итого у нас получается условие:
Если у новой или обновленной строки значение в колонке Статус сделки содержит слово «Продано», то мы отправляем данные в Google Analytics, а если нет, то нечего не делаем.
Но нам нужно отправлять данные в Google Analytics в 3-х случаях: «Отказ», «Продано» и «Думают». Сейчас мы отправляем только при «Статус сделки» = «Продано», поэтому добавляем еще два условия OR на «Отказ» и «Думают».
Нажимаем Fetch & Continue и видим, что он проверил последнюю строку и говорит, что она не подходит ни под одно условие, нам так и нужно, так как у нас нет условия на статус «В обработке».
Наш следующий виджет, это Google Analytics:
Выбираем Create a Measurement:
Авторизация через аккаунт, далее выбираем ваши Account (аккаунт) и Property (сам счетчик), для Type (тип) выбираем Event Tracking:
Далее задаем параметры события:
Event Category (Категория события) — Пишем константу «Статус сделки»
Event Action (Действие события) — Передаем значение
Event Label (Просто еще одно поле) — Передаем показатель качества лида
Event Value (Сумма, которую принесло событие) — Просто цифра, в нашем случае, мы хотим передать сумму сделки.
Custom User ID (Google Client ID) — без этого значения GA не поймет, с какого канала пришел клиент, то есть мы не сможем понять, что изначально клиент пришел с контекста.
Нажимаем Continue и Send Test To Google Analytics, важно заметить, что мы не увидим событие в Google Analytics, так как коннектор отправляет запрос в дебаг-моде, это как бы тестовый режим GA, чтобы не портить реальную статистику тестами.
В ответ мы получим такое окно, нам важно, чтобы valid было равно true, это значит, что запрос в GA валидный.
Если есть проблемы, то можно поискать их в hit, это сам запрос, который был составлен.
Активируем коннектор:
Тестируем коннектор
Меняем значение последней строки в таблице на «Продано»:
Переходим на домашнюю страницу Dashboard в Zapier и у нашего нового коннектора нажимаем Run (запустить):
Появится уведомление, что коннектор обнаружил уведомления в 2-х строках и отправил 2 события в GA:
Проверим, что GA получил эти события:
Создаем цель в GA на событие «Статус сделки» — «Продано»:
Создаем аналогичные цели для других статусов:
Формы на сайте > Google Sheets
Теперь мы полностью завершили цикл и сделали сквозную аналитику, но у нас по-прежнему не учитываются лиды из форм на сайте.
Для этого ставим разработчику проекта задачу сделать webhook при отправке форм с сайта, это простая задача, которая не требует много времени.
Перед постановкой задачи вы должны учитывать несколько моментов.
- На сайте должен быть установлен Google Analytics, чтобы передавать Google Client ID
- По умолчанию при отправке webhook’a у нас нет источника в виде UTM-меток, откуда изначально пришел лид, поэтому мы написал небольшой скрипт на Github, который сохраняет UTM-метки первого визита посетителя в Cookie и при отправке формы можно их использовать.Скрипт можно установить на сайт через GTM в виде Custom HTML тега, либо отдать на установку разработчику проекта.
- Перед постановкой задачи нужно создать коннектор, который будет принимать webhook разработчика и отправлять данные в Google Sheets. Лучше сразу сориентировать разработчика, какие поля и по каким формам вы хотите получать в таблицу.
Передаем формы с сайта в Google Sheets
Процедура аналогична настройке коннектора для ROIStat, поэтому постараемся без подробных описаний. Создаем новый коннектор Make a Zap и выбираем Webhooks виджет, в нем Catch Hook:
Ссылку для приема вебхуков отдаем разработчику, нажимаем Continue и в разделе Edit Options тоже Continue, далее нам предлагают протестировать URL, для этого нужно как-то эмитировать вебхук — заходим на hurl.it
Вставляем URL в поле Destination и выбираем POST из выпадающего списка:
Далее в блоке Parameters нажимаем Add Parameters и добавляем параметры (колонки), которые мы хотим передавать, в значениях указываем тестовые значения и нажимаем Launch Request.
Ниже получаем:
Это значит, что запрос ушел и был принят, теперь в Zapier нажимаем OK, I did this:
Следующий виджет, это Google Sheets, в нем выбираем Create Spreadsheet Row:
Далее выбираем Gmail аккаунт, документ и лист внутри, как делали ранее. Во вкладке Edit Template указываем соответствие между поступающим запросом с колонками в таблице:
Далее тестируем и смотрим, как в GS появится новая строка с лидом. После того, как мы убедились, что коннектор работает, можно еще раз отправить вебхук с hurl.it
Траблшутинг
Zapier
Как тестировать запросы на URL в коннектор на предмет добавления лидов в Google Sheets
hurl.it
Невалидный запрос в GA
Копируем запрос:
Заходим на Hit Builder, вставляем запрос и нажимаем Validate hit:
Сбиваются настройки полей в коннекторах
При добавлении нового столбика все настройки сбиваются в виджетах. Можно смотреть историю работы коннекторов в Task History
Google Analytics
Как посмотреть состав событий, которые приходят в GA
Создаем отчет:
Настраиваем:
Учтите, что события в отчете будут отображаться с задержкой минут 15.