Интеграция Bitrix24, Google Analytics, Calltouch - в этом материале рассматривался вариант создания собственного приложения, для проброса идентификатора google analytics.
С появлением webhooks в bitrix24 ситуация существенно упростилась. Разрабатывать приложение для подобных целей теперь не обязательно.
Что предстоит сделать:
Добавим в список пользовательских полей поле GA_CID
Ваш.bitrix24.ru/crm/configs/fields/CRM_LEAD/
Код обработчика события onBeforeResultAdd оставим таким же как в материале Интеграция Bitrix24, Google Analytics, Calltouch.
Но настройки CRM для формы немного изменим.
В спиcке доступных полей CRM появилось пользовательское поле, которое мы добавили.
Его и поставим в соответствие hidden полю, значение которого добавляется обработчиком
Теперь при заполнении формы будет создаваться лид в b24 с нужным ga_cid
С помощью хуков мы будем получать информацию о лидах для записи в них gacid из calltouch
C помощью роботов мы будем отправлять данные в GA через measurement protocol по событию изменение сделки.
Вебхуки позволяют работать с RestApi b24 без создания приложения
Подробнее Быстрая интеграция с Битрикс24 или волшебные вебхуки!
Создаем входящий вебхук
Ваш.bitrix24.ru/marketplace/hook/
Создаем робота, для примера только на событие успешное завершение сделки
Ваш.bitrix24.ru/crm/configs/
Теперь разместим где-нибудь вот такой код-пример и сделаем обращение к нему настолько часто, насколько это вам нужно.
Идет обращение к 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', '');
Результат неизменно нужный!
Можно воспользоваться готовым приложением. Доступно в marketplace https://www.bitrix24.ru/apps/?app=macte.analytics
//-->