Всё изложенное не претендует на константу в реализации. Я опишу лишь один довольно простой вариант реализации без учёта "сотни" возможных дополнений в реализации.
И так, начнём с базовых знаний и подводных камней. От куда появилась данная статья и варианты развития.
В минувшем войс чате поднимался вопрос количества фродовых заявок в нишах. Что многих отталкивает то что "штатно" у всех настроен учёт лидов по факту заполнения. После обработки контакт центром, процент мусора может составлять 40% и так как многие бизнес ведут в Битрикс24, я покажу вам простой, хоть и требующий небольшого понимания кода, процесс с которым вы решите ряд проблем.
Мы будем рассматривать две системы аналитики, данная статья будет только о Google Analytics и только 4 версии(чуть позже поймёте причину).
Подводные камни случились с Я.Метрикой. В отличие от Аналитикса там нет возможности отправлять нужным нам форматом события. Имеются офлайн события, которые ещё не адаптированы мной. Потому ждите или же выходите со мной на контакт для помощи с реализацией.
Для реализации нам потребуется:
- Битрикс24 Облако (Любой коммерческий тариф) - В коробочной версии работает аналогично, но там можно совершенно по другому делать.
- Сервис Pipedream (Бесплатной редакции хватит)
- Руки, пара чашек кофе и сигареты(по желанию)
Шаг 0 При создании Лида, Сделки или Заказа нам нужно получать так же оба идентификатора аналитических систем. Я не буду описывать процесс передачи в Б24, так как он индивидуальный для каждого портала. В будущем опишу статью как получать его из штатных форм Битрикс24.
Эти поля мы записываем в простое текстовое поле. Пример в моей реализации
Шаг 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} - заменяем на свои. Сохраняем и не забываем переключить в приватный режим, что бы ваши ключи не были украдены.
Чуть позже мы ещё вернёмся с детальным разбором кода событий. Шаг 2 Обратимся к Роботам в Битрикс24. Детали тут helpdesk.bitrix24.ru/open/6908975 Нас интересует робот, доступный на любом коммерческом тарифе. А именно "WebHook", который мы будем настраивать на интересующей нас стадии Лидов, Сделок, Заказов.
Устанавливаем его на нужном для нас этапе, теперь каждый раз когда на этап попадает какая-либо сущность. Будет происходить отправка запроса.
В Pipedream когда мы импортировали рецепт, первый блок сгенерировал для нас принимающий адрес, на который могут поступать данные.
Его мы копируем и вставляем в нашего робота и добавляем магии, например мы хотим помимо факта качественной обработки запроса так же передавать ценность сделки. Именно такие данные я и буду отправлять в Аналитику. Мои настройки будут выглядеть следующим образом
В пункте три точки вы можете видеть любые данные, которые можно использовать. Что же произойдёт когда, отработает Робот? В Pipedream мы получим наш запрос. Открыв уровень query вы увидите данные, которые мы задали в Роботе.
Шаг 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);
});
Как я писал ранее, в разделе параметров вы можете задать любые данные которые пришли к вам в обработку. Для удобного указания правильных переменных, в пришедшем запросе вы можете скопировать путь к нему
Внимание! Статические, строчные данные мы указываем в кавычках. А вот переменные для обращения к какому-либо коду - без. Рассмотрим пример
"foo": "bar",
Это свойство у нас статическое, код его не принимает. Но вы бы хотели задать, например можно указать "Source":"Bitrix24". Тем самым фильтровать события только из Битрикс24.
А в данном свойстве мы указываем что это cost и значения свойства, мы получиям в приходящем запросе из Битрикс24. Как вы помните, я указывал в адресе параметр cost={{Сумма}}.
"cost": steps.trigger.event.query.cost
Шаг 4 Если всё сделано верно, последний этап вернёт нам пустую строку
Шаг 5
Проверим теперь нашу Аналитику и увидим:
Если провалимся уровнем нижу - увидим наши параметры которые передавали дополнительно
Ну что, сейчас вы передали факт успешно или неуспешно отработанной заявки и далее, думаю, каждый понимает как можно использовать данное событие. Такой же вариант применим к Бизнес процессам. Данный вариант не учитывает повторного попадания в стадию, так же не фильтрует наличие КлиентИД, что бы не отправлять остальные заявки. Я описал лишь базовый механизм, который можно подстроить под нужды Бизнеса.