Tilda своим штатным механизмом позволяет осуществлять интеграцию форм конструктора исключительно с облачным Bitrix24 (в целом нельзя ввести домен портала, отличный от .bitrix24.ru. То есть если даже вы находитесь на старшем коммерческом тарифе и Битрикс24 на своём домене – получается, что тоже никак не интегрировать). Странно, но как есть.
Исходя из этого интеграция возможна с помощью webhook. Тильда поддерживает такой механизм, Битрикс24 тоже имеет встроенные хуки.
Разберем по шагам:
-
Создать Входящий вебхук. Назвать его как-нибудь понятно, например Tilda leads
-
Выдать права CRM для хука
-
Создать обработчик, который будет создавать Лиды в CRM, на который Тильда будет посылать запросы. Пример обработчика ниже
-
Зайти в редактирование сайта на Тильде, перейти в настройки сайта
-
Выбрать раздел “Формы”
-
Добавить механизм интеграции Webhook
-
В адресе вебхука добавить абсолютный адрес обработчика, который мы сделали на 3 шаге. Ссылка на скрипт должна быть доступна и скрипт должен отвечать в течение пяти секунд. В противном случае данные не отправятся, а система сделает еще две попытки их отправить, каждую через минуту. Также скрипт должен использовать защищенный протокол HTTPS.
-
Применить настройки для всех форм или для каких-то конкретных на вашем сайте на Тильде
Пример обработчика по созданию Лидов
<?php
function writeToLog($data, $title = ''){
$log = "\n------///BEGIN//////------------------\n";
$log .= date("Y.m.d G:i:s") . "\n";
$log .= (strlen($title) > 0 ? $title : 'DEBUG') . "\n";
$log .= print_r($data, 1);
$log .= "\n-----/// END ////-------------------\n";
file_put_contents(getcwd() . '/hooktilda.log', $log, FILE_APPEND);
return true;
echo "succes";
}
$defaults = array('TITLE' => '', 'NAME' => '', 'PHONE' => '', 'COMMENTS' => '', 'EMAIL' => '');
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$defaults = $_REQUEST;
writeToLog($_REQUEST, 'webform PHP');
$queryUrl = 'https://crm.ххххххх.ru/rest/хх/ххххххххххххх/crm.lead.add?'; //уникальный адрес хука
$queryData = http_build_query(array(
'fields' => array(
"TITLE" => 'Заявка с сайта от '. $_REQUEST['name'],
"NAME" => $_REQUEST['name'],
"COMMENTS" => $_REQUEST['comments'] . ' ' . implode(",", $_REQUEST['payment']['products'][0]),
"UTM_SOURCE" => $_REQUEST['utm_source'],
"UTM_MEDIUM" => $_REQUEST['utm_medium'],
"UTM_CAMPAIGN" => $_REQUEST['utm_campaign'],
"UTM_CONTENT" => $_REQUEST['utm_content'],
"UTM_TERM" => $_REQUEST['utm_term'],
"STATUS_ID" => "NEW",
"OPENED" => "Y", // ДОСТУПЕН ВСЕМ
"PHONE" => array(array("VALUE" => $_REQUEST['phone'], "VALUE_TYPE" => "WORK" )),
"EMAIL" => array(array("VALUE" => $_REQUEST['email'], "VALUE_TYPE" => "WORK" )),
),
'params' => array("REGISTER_SONET_EVENT" => "Y")
));
$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);
$result = json_decode($result, 1);
writeToLog($result, 'webform result CURL');
if (array_key_exists('error', $result)) echo "Ошибка при сохранении лида: ".$result['error_description']."<br/>";
}
?>
Оставьте номер — мы перезвоним в рабочее время!