Передача лидов, сделок, заказов Битрикс24 в Google Analytics

Передача лидов, сделок, заказов Битрикс24 в Google Analytics

Всё изложенное не претендует на константу в реализации. Я опишу лишь один довольно простой вариант реализации без учёта "сотни" возможных дополнений в реализации.

И так, начнём с базовых знаний и подводных камней. От куда появилась данная статья и варианты развития.

В минувшем войс чате поднимался вопрос количества фродовых заявок в нишах. Что многих отталкивает то что "штатно" у всех настроен учёт лидов по факту заполнения. После обработки контакт центром, процент мусора может составлять 40% и так как многие бизнес ведут в Битрикс24, я покажу вам простой, хоть и требующий небольшого понимания кода, процесс с которым вы решите ряд проблем.

Мы будем рассматривать две системы аналитики, данная статья будет только о Google Analytics и только 4 версии(чуть позже поймёте причину).

Подводные камни случились с Я.Метрикой. В отличие от Аналитикса там нет возможности отправлять нужным нам форматом события. Имеются офлайн события, которые ещё не адаптированы мной. Потому ждите или же выходите со мной на контакт для помощи с реализацией.

Для реализации нам потребуется:

  • Битрикс24 Облако (Любой коммерческий тариф) - В коробочной версии работает аналогично, но там можно совершенно по другому делать.
  • Сервис Pipedream (Бесплатной редакции хватит)
  • Руки, пара чашек кофе и сигареты(по желанию)

Шаг 0 При создании Лида, Сделки или Заказа нам нужно получать так же оба идентификатора аналитических систем. Я не буду описывать процесс передачи в Б24, так как он индивидуальный для каждого портала. В будущем опишу статью как получать его из штатных форм Битрикс24.

Эти поля мы записываем в простое текстовое поле. Пример в моей реализации

изображение.png

Шаг 1 Регистрируемся в сервисе pipedream.com. Это более продвинутый аналог Альбато, Zapier и остальных. После регистрации можете использовать созданный мной "рецепт" pipedream.com/@gwynnbleiidd-dev/b24toga-p_z...

Вам потребуется изменить параметры экспорта в GA. Подробнее о получении описывали тут prometriki.ru/noviy-measurement-protocol-v-..

В 18 строке, идут ключи авторизации МР.

url: `https://www.google-analytics.com/mp/collect?measurement_id=${process.env.measurement_id}&api_secret=${process.env.api_secret}`,

${process.env.measurement_id} и ${process.env.api_secret} - заменяем на свои. Сохраняем и не забываем переключить в приватный режим, что бы ваши ключи не были украдены.

изображение.png

Чуть позже мы ещё вернёмся с детальным разбором кода событий. Шаг 2 Обратимся к Роботам в Битрикс24. Детали тут helpdesk.bitrix24.ru/open/6908975 Нас интересует робот, доступный на любом коммерческом тарифе. А именно "WebHook", который мы будем настраивать на интересующей нас стадии Лидов, Сделок, Заказов.

Устанавливаем его на нужном для нас этапе, теперь каждый раз когда на этап попадает какая-либо сущность. Будет происходить отправка запроса.

изображение.png

В Pipedream когда мы импортировали рецепт, первый блок сгенерировал для нас принимающий адрес, на который могут поступать данные.

изображение.png

Его мы копируем и вставляем в нашего робота и добавляем магии, например мы хотим помимо факта качественной обработки запроса так же передавать ценность сделки. Именно такие данные я и буду отправлять в Аналитику. Мои настройки будут выглядеть следующим образом

изображение.png

В пункте три точки вы можете видеть любые данные, которые можно использовать. Что же произойдёт когда, отработает Робот? В Pipedream мы получим наш запрос. Открыв уровень query вы увидите данные, которые мы задали в Роботе.

изображение.png

Шаг 3 Теперь же, отправим эти данные в GA. Я уже сделал блок отправки, потому просто разберём основные разделы. Комментарии будут прямо в коде

var axios = require('axios'); // Библиотека которая отправляет запрос в Аналитику
// Данные для события. Как их взят? Опишу ниже с скринами
var data = JSON.stringify({
  "client_id": steps.trigger.event.query.gacid, // Клиент ИД по версии Аналитики
// Событие которое мы передаём 
 "events": [
    {
      "name": "sucess_lead", // Произвольное название, можете указать своё
      "params": { // Параметры для обогащения данных, в моём случае я передаю ценность сделки и пустой параметр foobar. Он не нисёт никакой смысловой нагрузки
        "foo": "bar",
        "cost": steps.trigger.event.query.cost
      }
    }
  ]
});
// Настройки запроса, ранее мы уже сохранили тут наши ключи для успешной отправки запроса.
var config = {
  method: 'post',
  url: `https://www.google-analytics.com/mp/collect?measurement_id=${process.env.measurement_id}&api_secret=${process.env.api_secret}`,
  headers: { 
    'Content-Type': 'application/json'
  },
  data : data
};
// Выполнение запроса и вывод лога с результатом. В случае успеха вернёт пустую строку.
await axios(config)
.then(function (response) {
  console.log(JSON.stringify(response.data));
})
.catch(function (error) {
  console.log(error);
});

Как я писал ранее, в разделе параметров вы можете задать любые данные которые пришли к вам в обработку. Для удобного указания правильных переменных, в пришедшем запросе вы можете скопировать путь к нему

изображение.png

Внимание! Статические, строчные данные мы указываем в кавычках. А вот переменные для обращения к какому-либо коду - без. Рассмотрим пример

 "foo": "bar",

Это свойство у нас статическое, код его не принимает. Но вы бы хотели задать, например можно указать "Source":"Bitrix24". Тем самым фильтровать события только из Битрикс24.

А в данном свойстве мы указываем что это cost и значения свойства, мы получиям в приходящем запросе из Битрикс24. Как вы помните, я указывал в адресе параметр cost={{Сумма}}.

 "cost": steps.trigger.event.query.cost

Шаг 4 Если всё сделано верно, последний этап вернёт нам пустую строку

изображение.png Шаг 5 Проверим теперь нашу Аналитику и увидим:

изображение.png Если провалимся уровнем нижу - увидим наши параметры которые передавали дополнительно

изображение.png

Ну что, сейчас вы передали факт успешно или неуспешно отработанной заявки и далее, думаю, каждый понимает как можно использовать данное событие. Такой же вариант применим к Бизнес процессам. Данный вариант не учитывает повторного попадания в стадию, так же не фильтрует наличие КлиентИД, что бы не отправлять остальные заявки. Я описал лишь базовый механизм, который можно подстроить под нужды Бизнеса.