Задача: при заполнении форм обратной связи на сайте, создавать в Битрикс24 лиды и добавлять в них поля формы, включая скрытые поля(IP, наименование страницы, url страницы, стоимость услуги/товара, UTM-метки и данные сквозной аналитики).
Сначала создадим в Битрикс 24 входящий вебхук и установим права: CRM -> Интеграции -> REST API -> Другое -> Входящий вебхук
(токен размыт)
Теперь на сайте на cms 1c битрикс в файле init.php добавим событие OnBeforeEventAdd перед отправкой данных на почту. Созданный вебхук отправит данные формы для создания лида в Битрикс24.
function fn_Post2crm($token, $metod, $queryData){
$queryUrl = 'https://[ваше_название].bitrix24.ru/rest/[идентификатор_пользователя портала Битрикс24]/'.$token.'/'.$metod.'/';
// обращаемся к Битрикс24 при помощи функции curl_exec
$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 $result;
}
AddEventHandler('main', 'OnBeforeEventAdd', "beforeSend");
function beforeSend(&$event, &$lid, &$arFields, $message_id){
if($event == "SLAM_EASYFORM" && $message_id == 34){ // проверка типа почтового события и идентификатора почтового события
$token = 'токен входящего вебхука';
$metod = "crm.lead.add";
if(empty($arFields["HIDE2"]) && !empty($arFields["HIDDEN2"]))
{
$arFields["HIDE2"] = $arFields["HIDDEN2"];
}
if(!empty($arFields["P_COUNT"]) && !empty($arFields["VALUME"]) && !empty($arFields["TYPE"]))
{
$arFields["MESSAGE"] .= " Количество человек: ".$arFields["P_COUNT"].". Форма обучения: ".$arFields["TYPE"].". Объем часов обучения: ".$arFields["VALUME"];
}
$queryData = http_build_query(array(
'fields' => array(
"UF_CRM_1729173952998" => 45,
"TRACE" => $arFields["TRACE"],
"TITLE" => "Заявка с premier-centr.com",
"NAME" => $arFields["TITLE"],
"STATUS_ID" => "NEW",
"OPENED" => "Y",
"ASSIGNED_BY_ID" => '133', // ОТВЕТСТВЕННЫЙ МЕНЕДЖЕР б24
"PHONE" => array(array("VALUE" => $arFields["PHONE"], "VALUE_TYPE" => "WORK")),
"EMAIL" => array(array("VALUE" => $arFields["EMAIL"], "VALUE_TYPE" => "WORK")),
"SOURCE_ID" => "premier-centr.com",
"WEB" => array(array("VALUE" => "premier-centr.com", "VALUE_TYPE" => "WORK")),
'UTM_SOURCE' => $_SESSION["UTM_SOURCE"],
'UTM_MEDIUM' => $_SESSION["UTM_MEDIUM"],
'UTM_CAMPAIGN' => $_SESSION["UTM_CAMPAIGN"],
'UTM_CONTENT' => $_SESSION["UTM_CONTENT"],
'UTM_TERM' => $_SESSION["UTM_TERM"],
'UF_CRM_YA_CID' => $_SESSION["YCLID"],
'OPPORTUNITY' => '',
"UF_CRM_1730724425621" => $arFields["HIDDEN"],
"UF_CRM_1730724410940" => $arFields["HIDE2"],
"IP" => $arFields["IP"],
"UF_CRM_1730724711470" => $arFields['FORM_TITLE'],
"UF_CRM_1730725113754" => $_SESSION["CITY"]['NAME'],
"COMMENTS" => $arFields["MESSAGE"]
),
'params' => array("")
));
fn_Post2crm($token, $metod, $queryData);
}
}
В параметр "TRACE" нужно будет передать данные сквозной аналитики(СА), для этого в форме обратной связи создаем скрытое поле TRACE и заполняем его данными.
В header.php можно подключить код сквозной аналитики(Настройка сквозной аналитики -> Свой сайт) и в localStorage сохранить значение СА , которое потом вытащим в шаблоне формы и поставим в скрытое поле TRACE (если форм много, чтобы не вызывать часто b24Tracker.guest.getTrace()).
(function(w,d,u){var s=d.createElement('script');s.async=true;s.src=u+'?'+(Date.now()/60000|0);var h=d.getElementsByTagName('script')[0];h.parentNode.insertBefore(s,h);})(window,document,'https://cdn-ru.bitrix24.ru/b31275646/crm/tag/call.tracker.js');
window.onload = function(e1){
var trace = b24Tracker.guest.getTrace();
if(trace){
localStorage.setItem('b24Tracker', trace);
}
}
В шаблоне формы обратной связи достаем из localStorage значение СА и ставим его в поле TRACE
setTimeout(function() {
window.onload = function(e){
var traceInput = document.getElementById('FORM_TRACE_=$arParams['FORM_ID']?>');
if(traceInput)
{
traceInput.value = localStorage.getItem('b24Tracker');
console.log("OK");
}
}
}, 2000);
UTM-метки сохраняем в сессию в header.php и из сессии передаем их вебхуком в CRM
if(!empty($_REQUEST["utm_source"])) $_SESSION["UTM_SOURCE"] = htmlspecialchars($_REQUEST["utm_source"]);
if(!empty($_REQUEST["utm_medium"])) $_SESSION["utm_medium"] = htmlspecialchars($_REQUEST["UTM_MEDIUM"]);
if(!empty($_REQUEST["utm_campaign"])) $_SESSION["UTM_CAMPAIGN"] = htmlspecialchars($_REQUEST["utm_campaign"]);
if(!empty($_REQUEST["utm_content"])) $_SESSION["UTM_CONTENT"] = htmlspecialchars($_REQUEST["utm_content"]);
if(!empty($_REQUEST["utm_term"])) $_SESSION["UTM_TERM"] = htmlspecialchars($_REQUEST["utm_term"]);
if(!empty($_REQUEST["yclid"])) $_SESSION["YCLID"] = htmlspecialchars($_REQUEST["yclid"]);
Теги: создание лида в Битрикс24, crm.lead.add, вебхукТеги: создание лида в Битрикс24, crm.lead.add, вебхук
11.11.2024