Интеграция Bitrix24 и Google Analytics с помощью Webhooks
Нажимая на кнопку, вы даете согласие на обработку персональных данных.
Пользовательское соглашение
Наши работы

Интеграция Bitrix24 и Google Analytics с помощью Webhooks

Интеграция Bitrix24, Google Analytics, Calltouch - в этом материале рассматривался вариант создания собственного приложения, для проброса идентификатора google analytics.

С появлением webhooks в bitrix24 ситуация существенно упростилась. Разрабатывать приложение для подобных целей теперь не обязательно.

Что предстоит сделать:

добавить поле ga_cid в crm
пробросить значение ga_cid из формы на сайте в crm
настроить webhooks
написать небольшой код-обработчик

Добавление поля GA_CID

Добавим в список пользовательских полей поле GA_CID
Ваш.bitrix24.ru/crm/configs/fields/CRM_LEAD/


Проброс ga_cid из формы на сайте

Код обработчика события onBeforeResultAdd оставим таким же как в материале Интеграция Bitrix24, Google Analytics, Calltouch.
Но настройки CRM для формы немного изменим.
В спиcке доступных полей CRM появилось пользовательское поле, которое мы добавили.
Его и поставим в соответствие hidden полю, значение которого добавляется обработчиком


Теперь при заполнении формы будет создаваться лид в b24 с нужным ga_cid

Webhooks и CRM-роботы

С помощью хуков мы будем получать информацию о лидах для записи в них gacid из calltouch
C помощью роботов мы будем отправлять данные в GA через measurement protocol по событию изменение сделки.

Вебхуки позволяют работать с RestApi b24 без создания приложения
Подробнее Быстрая интеграция с Битрикс24 или волшебные вебхуки!

Создаем входящий вебхук
Ваш.bitrix24.ru/marketplace/hook/


Создаем робота, для примера только на событие успешное завершение сделки
Ваш.bitrix24.ru/crm/configs/



И прописываем обращение через handler к measurement protocol для события "успешное завершение сделки". Для других событий по аналогии.
http://www.google-analytics.com/collect?v=1&ds=crm&t=event&tid=ВАШ_КОД_СЧЕТЧИКА&cid={{GA_CID}}&t=event&ec=b24&ea=deal&el=won


Код обработки

Теперь разместим где-нибудь вот такой код-пример и сделаем обращение к нему настолько часто, насколько это вам нужно.
Идет обращение к api calltouch, запрашиваются через webhook id лида по номеру телефона, обновляется лид, добавляются utm метки и ga_cid.

define('TIME', '-1 day');
define('CALLTOUCH_ID', '');
define('CALLTOUCH_API_KEY', '');
define('B24_API_KEY', '');

function getLeadId($strPhone){
	$date = new DateTime();
	$date->modify(TIME);
	$dateFrom = $date->format('Y-m-d');

	$queryUrl = "https://macte.bitrix24.ru/rest/1/".B24_API_KEY."/crm.lead.list/";
	$queryData = http_build_query(
		array(
			'filter' => array(
				 ">DATE_CREATE" => $dateFrom,
				 "PHONE" => $strPhone
			)
		)
	);

	$result = sendQuery($queryUrl, $queryData);
	
	if($result['result'][0]['ID'])
		return $result['result'][0]['ID'];
	
	return false;
}

function updateLead($arData){
	$queryUrl = "https://macte.bitrix24.ru/rest/1/".B24_API_KEY."/crm.lead.update/";
	$queryData = http_build_query(
		array(
			'id' => $arData['leadId'],
			'fields' => array(
				'UF_CRM_GA_CID' => $arData['clientId'],
				'UTM_SOURCE' => $arData['utmSource'],
                'UTM_MEDIUM' => $arData['utmMedium'],
                'UTM_CAMPAIGN' => $arData['utmCampaign'],
			)
		)
	);

	$result = sendQuery($queryUrl, $queryData);
}

function sendQuery($queryUrl, $queryData){
	$curl = curl_init();
	 
	curl_setopt_array($curl, 
		array(
			 CURLOPT_SSL_VERIFYPEER => 0,
			 CURLOPT_POST => 1,
			 CURLOPT_HEADER => 0,
			 CURLOPT_RETURNTRANSFER => 1,
			 CURLOPT_URL => $queryUrl,
			 CURLOPT_POSTFIELDS => $queryData,
		)
	);
	 
	$result = curl_exec($curl);
	curl_close($curl);
	
	return json_decode($result, 1);
}

$date = new DateTime();
$dateTo = $date->format('d/m/Y');
$date->modify(TIME);
$dateFrom = $date->format('d/m/Y');

$jsonSource = "http://api.calltouch.ru/calls-service/RestAPI/".CALLTOUCH_ID."/calls-diary/calls?clientApiId=".CALLTOUCH_API_KEY."&dateFrom=".$dateFrom."&dateTo=".$dateTo;

$json = file_get_contents($jsonSource, false);
$response = json_decode($json);	

foreach($response as $arJson){
	$arJson = (array)$arJson;
	
	$leadId = getLeadId($arJson['callerNumber']);
	
	if($leadId){
		updateLead(
			array(
				"leadId" => $leadId,
				"clientId" => $arJson["clientId"],
				"utmSource" => $arJson['utmSource'],
				"utmTerm" => $arJson['utmTerm'],
				"utmCampaign" => $arJson['utmCampaign']
			)
		);
	}
}

В константах определите ваши данные для подключения к сервисам
define('CALLTOUCH_ID', '');
define('CALLTOUCH_API_KEY', '');


define('B24_API_KEY', '');


Результат неизменно нужный!




Мы собираем статистику о посещениях сайта, cookie, данные об IP-адресе и местоположении. Если Вы не хотите, чтобы эти данные обрабатывались нами, Вы должны покинуть сайт.