Автор: Корякин Павел, специалист агентства контекстной рекламы 1jam.ru

В своем агентстве контекстной рекламы мы научились решать вопрос со сквозной аналитики для небольших кампаний. Наверняка наш опыт будет актуален для всех интернет-маркетологов.

Проблема, которую решает статья

Клиент: мы не можем увеличивать рекламный бюджет на контекстную рекламу, так как не видим «расход/доход», а лиды не все конвертируются в продажи.

Агентство: внедряйте 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!

 

После этого откроется рабочее окно, давайте разберемся в интерфейсе:

  1. Домашняя страница, где расположены все Zap’ы (далее «коннекторы»)
  2. Логика коннектора, например 1 — принимаем, 2 — вытаскиваем значения, 3 — отправляем
  3. Рабочее окно выбранной слева вкладки, сейчас нам предлагают выбрать первый виджет
  4. Активен/неактивен коннектор

Создаем коннектор для 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.

У меня аккаунт GA в долларах

Как посмотреть срабатывают ли цели в GA

Журналист, новостной редактор, работает на сайте с 2009 года. Специализация: интернет-маркетинг, SEO, поисковые системы, обзоры профильных мероприятий, отраслевые новости рунета. Языки: румынский, испанский. Кредо: Арфы нет, возьмите бубен.