Оглавлениение
Как добавлять в Bitrix24 лиды с сайта? Данным вопросом начинают задаваться многие, так как с каждым днем CRM Битрикс24 набирает популярность среди вебмастеров и владельцев сайтов. И у многих встает вопрос, как же организовать автоматическое создание лидов с сайта в CRM Битрикс24, если Вы не используете одноименную CMS.
Для этого давайте рассмотрим два способа:
- Bitrix24 лиды с сайта через упрощенный Rest API
- Вебхуки Bitrix24 — передача лидов с сайта — Рекомендую
См. также публикацию на тему:
- Интеграция Contact Form 7 и Bitrix24;
- Интеграция CMS Joomla и Битрикс24 CRM при помощь компонента RSForm;
- Интеграция Woocommerce и Bitrix24.
Автоматическое создание лидов в Битрикс24 через упрощенный Rest API
Данный способ, команда Битрикс24, разработала специально для всех сторонних источников, не входящие в продукты Битрикс. Заключается он в том, что по адресу [ваше_название].bitrix24.ru/crm/configs/import/lead.php находится специальный компонент lead.rest, который позволяет обрабатывать и добавлять в Bitrix24 лиды с сайта из других источников.
Для того, чтобы организовать автоматическое создание лидов в Битрикс24 Вам необходимо:
- Логин и пароль пользователя Вашей CRM
Важно! Данный пользователь должен быть с ограниченными правами.
- PHP скрипт для отправки данных.
- Таблица параметров из соответствующих справочников Bitrix24.
- И умение перехватывать данные из форм.
Логин и пароль пользователя Вашей CRM
Так как логин и пароль пользователя из-под которого будут создаваться лиды указываются в скрипте, то для безопасности рекомендуется использовать отдельного пользователя с правами только на добавление лида и без доступа куда-либо еще. Данная мера необходима для безопасности Ваших данных, на тот случай, если каким-то образом PHP скрипт для отправки данных в Битрикс 24 окажется у злоумышленников.
PHP скрипт для отправки данных
В Bitrix24 лиды с сайта можно передавать PHP скриптом, который приведен ниже. При этом для автоматического создания лидов, необходимо передать 3 обязательных параметра:
- LOGIN* — логин пользователя Вашей CRM по управлению лидами.
- PASSWORD* — пароль пользователя Вашей CRM по управлению лидами.
- TITLE* — заголовок для лида.
все остальные параметры являются не обязательными и не подлежат обязательной передаче. Однако советую Вам передавать как можно больше данных в лиде: email, телефон, комментарий, utm метки и многое другое (см. все параметры для формирования лидов).
define('CRM_HOST', '[ваше_название].bitrix24.ru'); // Ваш домен CRM системы
define('CRM_PORT', '443'); // Порт сервера CRM. Установлен по умолчанию
define('CRM_PATH', '/crm/configs/import/lead.php'); // Путь к компоненту lead.rest
define('CRM_LOGIN', 'login'); // Логин пользователя Вашей CRM по управлению лидами
define('CRM_PASSWORD', 'password'); // Пароль пользователя Вашей CRM по управлению лидами
$postData = array(
'TITLE' => '' // Установить значение
);
if (defined('CRM_AUTH'))
{
$postData['AUTH'] = CRM_AUTH;
}
else
{
$postData['LOGIN'] = CRM_LOGIN;
$postData['PASSWORD'] = CRM_PASSWORD;
}
$fp = fsockopen("ssl://".CRM_HOST, CRM_PORT, $errno, $errstr, 30);
if ($fp)
{
$strPostData = '';
foreach ($postData as $key => $value)
$strPostData .= ($strPostData == '' ? '' : '&').$key.'='.urlencode($value);
$str = "POST ".CRM_PATH." HTTP/1.0\r\n";
$str .= "Host: ".CRM_HOST."\r\n";
$str .= "Content-Type: application/x-www-form-urlencoded\r\n";
$str .= "Content-Length: ".strlen($strPostData)."\r\n";
$str .= "Connection: close\r\n\r\n";
$str .= $strPostData;
fwrite($fp, $str);
$result = '';
while (!feof($fp))
{
$result .= fgets($fp, 128);
}
fclose($fp);
$response = explode("\r\n\r\n", $result);
$output = '<pre>'.print_r($response[1], 1).'</pre>';
}
else
{
echo 'Connection Failed! '.$errstr.' ('.$errno.')';
}
И умение перехватывать данные из форм
В случаи успешной обработки формы, Вам необходимо перехватить и передать нужные Вам значения с помощью вышеприведенного php скрипт в $postData = array().
По умолчанию, обязательным параметром для заполнения является Title, значение которого будет названием для лида в Битрикс24. Все остальные параметры Вы можете передавать на свое усмотрение (см.таблицы с параметрами).
Данные параметры из «Таблица 1: Параметры для лидов», отвечают за передачу данных в стандартные поля Битрикс24. Если у Вас есть поля, которые Вы самостоятельно создали в Битрикс24, и Вам необходимо передавать для них значение с сайта вместе с лидами, то предлагаю Вам ознакомится с данной статьей.
Автоматическое создание лидов в Битрикс24 при помощи входящего вебхука
Комманда Битрикс 24 внедрила очень простой и функциональный способ интеграции с CRM системой. Если ранее интеграция с Битрикс 24 была не простой задачей, требующей отличной квалификации и знаний от вебмастеров и владельцев сайта, то теперь, с внедрением вебхуков, произвести интеграцию своего сайта с CRM системой может практически каждый желающий.
Так что такое вебхуки в Битрикс24? WebHooks Bitrix24 — механизм, который позволяет вам использовать практически весь богатый функционал Rest API Битрикс24, но при минимальных знаниях и трудозатрат.
На мой взгляд, это более безопасный способ передачи информации в CRM систему, чем при помощи упрощенного Rest API.
И так, для организации автоматической передачи лидов при помощи вебхуков необходимо:
- Создать входящий вебхук.
- Написать короткий код для перехвата и передачи данных.
Создать входящий вубхук
Для того, чтобы передать данные с вашей формы обратной связи в лиды Битрикс 24 необходимо создать входящий вебхук. Для этого следуем по инструкции:
- Приложения → Вебхуки → Добавить вебхук.

- При добавлении выбрать Входящий вебхук.
- Ввести название для вебхука → При желании добавить его описание → При выборе права доступа указать CRM.

- После чего нажимаем на кнопку сохранить.
- После сохранения появится код для авторизации вебхука и образец URL, который нужно использовать при отправке данных в Битрикс24.

,где- /rest/ — метод Rest API;
- /1/ — идентификатор пользователя, пользуясь правами которого будет работать вебхук;
- /2j2htb348j5y0hgi/ — код вебхука;
- /profile/ — метод REST, который вы хотите выполнить, обращаясь к вебхуку. При добавлении лида в CRM систему необходимо использовать метод
crm.lead.add.json.
Написать короткий код для перехвата и передачи данных
Для завершения организации передачи данных с формы сайта в лиды Битрикс24 при помощи вебхуков необходимо всего лишь написать коротенький код. При написание кода необходимо учесть всего 3 простых шага:
- сформировать URL в переменной
$queryUrl
https://[ваш_домен].bitrix24.ru/rest/[идентификатор_пользователя]/[код_вебхука]/crm.lead.add.json; - сформировать параметры для создания лида в переменной
$queryData; - обратиться к Битрикс24 при помощи функции
curl_exec.
Пример кода для интеграции Битрикс24 и сайта при помощи вебхуков
// формируем URL в переменной $queryUrl
$queryUrl = 'https://[ваше_название].bitrix24.ru/rest/[идентификатор_пользователя]/[код_вебхука]/crm.lead.add.json';
// формируем параметры для создания лида в переменной $queryData
$queryData = http_build_query(array(
'fields' => array(
'TITLE' => 'Название лида',
),
'params' => array("REGISTER_SONET_EVENT" => "Y")
));
// обращаемся к Битрикс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);
$result = json_decode($result, 1);
if (array_key_exists('error', $result)) echo "Ошибка при сохранении лида: ".$result['error_description']."<br/>";
Учесть особенность для передачи номера телефона, email, мессенджера
При выборе интеграции с помощью входящего вебхука (в отличии от упрощенного Rest API), такие параметры как телефон, электронный адрес и мессенджеры имеют множественные значения и другие поля по умолчанию: PHONE, EMAIL, IM. Поэтому для передачи данных значений необходимо передавать их в массиве.
Пример,
'EMAIL' => Array(
"n0" => Array(
"VALUE" => "email-1@mail.ru",
"VALUE_TYPE" => "WORK",
),
"n1" => Array(
"VALUE" => "email-2@mail.ru",
"VALUE_TYPE" => "HOME",
),
),
'PHONE' => Array(
"n0" => Array(
"VALUE" => "+74957778899",
"VALUE_TYPE" => "WORK",
),
"n1" => Array(
"VALUE" => "+79151112233",
"VALUE_TYPE" => "MOBILE",
),
),
, где nX — это одно значение (телефона или электронной почты), которое всегда начинается с 0.
Даже если вы передаете всего лишь 1 номер телефона или адрес электронной почты, необходимо указывать его в массиве как n0.
Таким образом, для передачи хотя бы одного телефона и адреса электронной почты, код будет иметь следующий вид:
// формируем URL в переменной $queryUrl
$queryUrl = 'https://[ваше_название].bitrix24.ru/rest/[идентификатор_пользователя]/[код_вебхука]/crm.lead.add.json';
// формируем параметры для создания лида в переменной $queryData
$queryData = http_build_query(array(
'fields' => array(
'TITLE' => 'Название лида',
'EMAIL' => Array(
"n0" => Array(
"VALUE" => "email-1@mail.ru",
"VALUE_TYPE" => "WORK",
),
),
'PHONE' => Array(
"n0" => Array(
"VALUE" => "+74957778899",
"VALUE_TYPE" => "WORK",
),
),
),
'params' => array("REGISTER_SONET_EVENT" => "Y")
));
// обращаемся к Битрикс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);
$result = json_decode($result, 1);
if (array_key_exists('error', $result)) echo "Ошибка при сохранении лида: ".$result['error_description']."<br/>";
Теперь проверьте свой Битрикс 24 и вы найдете там созданный лид =)

Екатерина
Статья отличная. По ней и работаем, спасибо! Все по-русски, просто и понятно!
А когда примерно можно ожидать :
«немного другим методом для передачи данных, о котором я расскажу чуть позже и выложу здесь ссылку на статью.» ? 🙂
Владимир из Get To the Top
Добрый день, Екатерина
спасибо за столь чудесный комментарий.
К сожалению, на все не хватает времени и что-то приходится откладывать. Однако, спасибо Вам за напоминание. В самое ближайшее время постараюсь выложить материал на сайт.
Владимир из Get To the Top
Екатерина, добрый день
С выходом материала немного затянул, но статью подготовил
Пользовательские поля в Bitrix24 — передача значений в лидах
Екатерина
Спасибо Вам еще раз огрооомное!!! Процветания Вам и Вашим проектам 😉
Шыгныс
скиньте код
Александр
Тоже интересно «немного другим методом для передачи данных, о котором я расскажу чуть позже и выложу здесь ссылку на статью.»
Станислав
Спасибо за статью!
А можно ли добавить в форму ?
Владимир из Get To the Top
Да, конечно, вот пример того как связать форму Contact Form 7 и Bitrix24
Артём
Владимир, благодарю за очень полезную статью!
Сделал связку, всё работает отлично!
Не смог разобраться как связать 2 формы с одного и того же сайта?
Если добавляю ещё 1
ifв тот же код, то так не работает, данные не перехватываются.Если добавляю ещё 1 отдельный сниппет, то ругается что функция перехвата уже задействована в первом сниппете:
Cannot redeclare your_wpcf7_mail_sent_function() (previously declared inПодскажите, пожалуйста, как быть?
Владимир из Get To the Top
Добрый день, Артем
для этого используйте конструкцию
if..elseif. Пример:add_action( 'wpcf7_mail_sent', 'your_wpcf7_mail_sent_function' ); function your_wpcf7_mail_sent_function( $contact_form ) { //подключение к серверу CRM и авторизация //перехват данных из Contact Form 7 if('Контактная форма 1' == $title ): { //остальной код }; elseif('Контактная форма 2' == $title ): { //остальной код }; endif; }Артём
Круто! Благодарю!
Артём
Владимир, ещё один вопрос:
а можно ли в CRM передавать прикрепленный к CRM-форме файл? Например,
*.doc?У меня остаётся пустое поле под файл в карточке клиента, заполняются только текстовые поля.
Артём
Владимир, извините за настойчивость 🙂 Задам вопрос ещё раз:
можно ли в CRM передавать прикрепленный к CRM-форме файл? Например,
*.doc?Владимир из Get To the Top
Добрый день, Артем
я никогда не сталкивался с этим, но да, можно. Для этого вам подойдет только скрипт интеграции при помощи входящего вебхука.
Для начала Вам необходимо:
Затем в коде скрипта необходимо:
%##кодированные последовательности в данной строке.Пример,
Потом Вам необходимо отправить данный файл в Б24. Пример,
Лев
Владимир, Здравствуйте, настраиваю добавление лидов в CRM но клиент требует создание сделки минуя создание лида. Возможно ли это? Если да не могли бы вы подсказать???
Владимир из Get To the Top
Добрый день, Лев
да, конечно, можно.
Готового пример нет, но есть отличная документация retst api
И еще отличный пример от разработчиков.
sdalex
Эта инструкция все еще актуальна?
Владимир из Get To Top
Добрый день,
да, все еще актуальна
Слава
вопрос: есть сайт, на нем несколько форм с разным кол-вом полей + 1 форма с экспресс опросом (6 вопросов, почле запрашивает контактные данные)
есть ли возможность получать данные со всех форм и передавать в битрикс24, чтобы в црм было видно с какой формы пришел клиент?
Владимир из Get To the Top
Добрый день, Слава
1. да, возможность передавать данные со всех форм есть. Вы можете посмотреть пример в данном комментарии на примере плагина СF-7 для WordPress.
2. для того, чтобы понимать из какой формы был оставлен комментарий, вы можете для каждой из них настроить свой уникальный TITLE при передачи значений в Б24. Или же создать свое пользовательское поле и передавать значение для него. Как создать и передавать данные в свое пользовательское поле вы можете здесь.
Здесь нужно делать так, как Вам удобнее
Александр
Добрый день! В CRM также есть поле
BIRTHDATEкак в него писать?ругается на ошибку.
Владимир из Get To the Top
Все стандартные поля, которые можно передавать с помощью данного
phpскрипта, указаны в «Таблица 1: Параметры»Алексей
Добрый день. Работает все хорошо, но есть одна проблема. Когда ввожу другой домен Битрикс24 в скрипт лиды не приходят. На другом домене все работает хорошо. Настройки ролей в обоях случаях одинаковы. В чем проблема?
юзер
Поправьте у себя плиз — OPPORTUNITY, а не OPPORTINUTY
Владимир из Get To the Top
Готово =)
Спасибо
Толя
Отличная статья, спасибо!
Только не понятно, каким образом указывать значения внутри Что бы все работало для input…
Владимир из Get To the Top
Добрый день,
если у вас landing без CMS, то вставляйте данный код в ваш php файл, который отвечает за успешную/не успешную обработку формы.
Если у вас CMS, то следуйте его мануалам по обработке форм. К примеру, в данном блоге вы можете ознакомится как это можно сделать для CF7 на WordPress или RSForm на Joomla.
Андрей
Добрый вечер. Что-то не получается, подскажите, пожалуйста, в чем проблема?
Владимир из Get To the Top
Добрый день, Андрей
дал ответ на ваш предыдущий комментарий https://gettotop.ru/crm/integraciya-contact-form-7-i-bitrix24/#comment-3908
Виталий
Подскажите, как настроить уведомление при добавлении лида этим способом.
REST API https://dev.1c-bitrix.ru/rest_help/im/im_notify.php
Владимир из Get To the Top
Добрый день, Виталий
речь про какое уведомление идет?
Если про уведомление в б24, то, к сожалению, crm система его не поддерживает.
Иван
Можно ли добавить контроль лидов? Сейчас все Лиды заходят как новый даже если уже был этот телефон и имя.
Владимир из Get To the Top
Добрый день, Иван
Заходите в Битрикс 24:
CRM → Настройки → Другое → Прочие настройки → Настройки контроля дубликатов
Артём
Владимир, тоже интересует вопрос как на входе в CRM проводить контроль на дубликаты.
Указанные вами настройки — это для инструмента «Контроль дубликатов», в каких сущностях включать инструмент. А хочется не устранять дубли через «Контроль дубликатов» (кстати, вручную), а на входе не создавать их.
Нагуглил функцию crm.duplicate.findbycomm [ссылка заблокирована по решению администрации сайта]
Но не умею ей пользоваться 🙂
Можете помочь?
Владимир из Get To the Top
Добрый день, Артем
непонятно для чего вам это и как это обрабатывать.
К примеру, пользователь отравляет две разные заявки / делает две разные покупки.
Первая заявка / покупка попадает в CRM, а что со второй? Блокировать создание?
Здесь уже необходима индивидуальная настройка и изучения ваших потребностей.
Но в любом случаи, я не рекомендую этого делать. Здесь лучше всего сделать обработку лидов на стороне своего сервера, чтобы к одному контакту/компании/сделки привязывались лиды с одинаковыми контактными данными.
Артём
Добрый!
Например, постоянный покупатель делает очередной заказ в интернет-магазине и уже не нужно создавать новый контакт по заявке. Нужна очередная сделка по уже имеющемуся клиенту.
А скрипт с каждым новым лидом или сделкой создаёт новый контакт.
В нём не предусмотрена проверка на дубли.
Делать постоянно проверку на дубли потом — это так себе история, ведь она проводится руками.
Владимир из Get To the Top
Добрый день,
ваша проблема и нужды понятны. Для ее решения:
Иван
Здравствуйте. Не получается этим способом передать UTM-метки. Что скажете по этому поводу?
Владимир из Get To the Top
Добрый день, Иван
про какой способ идет речь?
Иван
не получалось через crm/configs/import/lead.php, но получилось через вебхук.
Евгений
Можете подсказать как именно получилось передать UTM-метки? Я уже 2 день не могу этого добиться.
Vadim
PHONE, PHONE_HOME, PHONE_WORK, EMAIL, EMAIL_WORK, EMAIL_HOME не удается передать через ваш скрипт. Читал, что это многомерный массив. Есть пример реализации здесь [ссылка заблокирована по решению администрации сайта] , но не получилось.
Как адаптировать передачу этих массивов с телефоном и почтой через ваш скрипт с вебхуками? Заранее спасибо
Владимир из Get To the Top
Добрый день, Дмитрий
Григорий
По примеру вот так вернее:
‘TITLE’ => $leadData[‘TITLE’],
/*’EMAIL_WORK’ => $leadData[‘EMAIL_WORK’],*/
/*’PHONE_WORK’ => $leadData[‘PHONE_WORK’],*/
‘PRODUCT_ID’ => «5771»,
‘EMAIL’ => Array(
«n0» => Array(
«VALUE» => $leadData[‘EMAIL_WORK’],
«VALUE_TYPE» => «WORK»,
),
«n1» => Array(
«VALUE» => $leadData[‘EMAIL_HOME’],
«VALUE_TYPE» => «HOME»,
),
),
‘PHONE’ => Array(
«n0» => Array(
«VALUE» => $leadData[‘PHONE_WORK’],
«VALUE_TYPE» => «WORK»,
),
«n1» => Array(
«VALUE» => $leadData[‘PHONE_HOME’],
«VALUE_TYPE» => «HOME»,
),
),
‘NAME’ => $leadData[‘NAME’],
‘LAST_NAME’ => $leadData[‘LAST_NAME’],
‘UTM_CAMPAIGN’ => $leadData[‘UTM_CAMPAIGN’],
‘UTM_CONTENT’ => $leadData[‘UTM_CONTENT’],
‘UTM_MEDIUM’ => $leadData[‘UTM_MEDIUM’],
‘UTM_SOURCE’ => $leadData[‘UTM_SOURCE’],
‘UTM_TERM’ => $leadData[‘UTM_SOURCE’],
Вадим
Не помогло. Не передается почта и телефон.
array(
‘TITLE’ => $leadData[‘TITLE’],
‘UF_CRM_1545898394’ => $leadData[‘UF_CRM_1545898394’],
‘UF_CRM_1545898353’ => $leadData[‘UF_CRM_1545898353′],
//’EMAIL’ => isset($leadData[‘EMAIL’]) ? array(array(‘VALUE’ => $leadData[‘VALUE’][‘EMAIL’], ‘VALUE_TYPE’ => ‘WORK’)) : array(),
// ‘PHONE’ => isset($leadData[‘PHONE’]) ? array(array(‘VALUE’ => $leadData[‘VALUE’][‘PHONE’], ‘VALUE_TYPE’ => ‘WORK’)) : array(),
‘UF_CRM_INN’ => $leadData[‘UF_CRM_INN’],
‘UF_CRM_1522752123’ => $leadData[‘UF_CRM_1522752123’],
‘COMMENTS’ => $leadData[‘COMMENTS’],
),
‘params’ => array(«REGISTER_SONET_EVENT» => «Y»)
));
// обращаемся к Битрикс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,
// ‘TITLE’ => $leadTitle,
//’EMAIL_WORK’ => $leadData[‘EMAIL_WORK’],
// ‘PHONE_WORK’ => $leadData[‘PHONE_WORK’]
//’PHONE_WORK’ => $phWork,
// ‘PHONE_HOME’ => $phHome
));
$result = curl_exec($curl);
curl_close($curl);
$result = json_decode($result, 1);
//if (array_key_exists(‘error’, $result)) echo «Ошибка при сохранении лида: «.$result[‘error_description’].»»;
// HTML form
}
else
{
$output = »;
}
?>
Title*:
Email:
Phone:
INN:
Zakupka link:
Comments:
Владимир из Get To the Top
pre. В противном случаи он не читабелен, что вы сами можете видеть на своем примере выше.$queryUrl;$queryData = http_build_query(array(, в котором сопоставляются параметры полей в Битрикс24 с вашими перехваченными данными;curl_setopt_array($curl, array(ничего записывать не нужно, он уже подтягивает данные из$queryUrlи$queryData.Пример,
// Перехватываем данные $title = $leadData['TITLE']; $message = $leadData['COMMENTS']; $eWork = $leadData['PHONE']; $phWork = $leadData['EMAIL']; // Формируем URL в переменной $queryUrl $queryUrl = 'https://[ваше_название].bitrix24.ru/rest/[идентификатор_пользователя]/[код_вебхука]/crm.lead.add.json'; // Сопоставляем параметры полей в Битрикс24 с перехваченными данными $queryData = http_build_query(array( 'fields' => array( 'TITLE' => $title, 'EMAIL_WORK' => $message, 'EMAIL_WORK' => $eWork, 'COMMENTS' => $eHome, ), '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); if (array_key_exists('error', $result)) echo "Ошибка при сохранении лида: ".$result['error_description']."";
Я не знаю, что там у вас к чему, но скорее всего ваш полный рабочий код будет выглядеть следующим образом:
function complete_mail() { // Получаем необработанные POST-данные $leadData = $_POST['DATA']; // Обрабатываем необработанные POST-данные, т.е перехватываем данные $title = $leadData['TITLE']; $message = $leadData['COMMENTS']; $eWork = $leadData['PHONE']; $phWork = $leadData['EMAIL']; // Формируем URL в переменной $queryUrl $queryUrl = 'https://[ваше_название].bitrix24.ru/rest/[идентификатор_пользователя]/[код_вебхука]/crm.lead.add.json'; // Сопоставляем параметры полей в Битрикс24 с перехваченными данными $queryData = http_build_query(array( 'fields' => array( 'TITLE' => $title, 'EMAIL_WORK' => $message, 'EMAIL_WORK' => $eWork, 'COMMENTS' => $eHome, ), '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); if (array_key_exists('error', $result)) echo "Ошибка при сохранении лида: ".$result['error_description'].""; }
Владимир из Get To the Top
Добрый день,
да, проблема действительно была. Способ ее решения вы можете найти в данном комментарии — ссылка.
Riskoff
Спасибо Автор за очень полезную статью!
Подскажите будет ли статья как разложить ютм меточки и их значения, попадания данных в срм. На примере кода выше?
Владимир из Get To the Top
Добрый день,
да, в плане стоит написание статьи по данному поводу.
Постараюсь выложить ее в ближайшее время.
Спасибо что читаете =)
Слава
Спасибо за статью. Как это сделать, если вообще не разбираемся в коде?) Куда что вставить?
Олег
Владимир, доброго времени суток. Пытаюсь сделать вебхук по вашей инструкции, но ничего лид по какой-то причине не создается, так же хочу просмотреть что происходит при обращении, пытаюсь писать в лог, но там тоже ничего нет. Сам код — [код заблокирован по решению администрации сайта]
Если не затруднит, подскажите где я ошибся. И еще может знаете, как можно сделать перенос строки в комментарии при создании лида
Владимир из Get To the Top
Добрый день, Олег
замените кавычки ёлочки
на обычные"".Владислав
Добрый день. Как быть с таким примером.
Есть имя клиента, телефон, мыло. Если есть клиент с такими параметрами уже, то чтобы его прицеплял? Или делать доп запрос к БД битрикса на поиск клиента?
Владимир из Get To the Top
Добрый день,
да, необходимо делать запрос к битриксу на поиск клиента.
Если клиент уже существует, лид помечается как повторный и привязывается к существующему контакту.
Владислав
Добрый день. Есть ли возможность добавить к лиду файлы? И если есть, то как?
Владимир из Get To the Top
Добрый день, Владислав
да, возможность такая есть. Для этого вам необходимо использовать интеграцию при помощи входящего вебхука.
Работает это следующим образом:
А затем передаем в битрикс24
,где
UF_CRM_XXXXXXXXXXXX— это название произвольного поля, тип которого должен соответствовать файлу. Данное поле вы должны предварительно создать в битрикс24.Andrew71
Добрый день! не подскажете откуда брать ‘абсолютная ссылка на файл’ если у меня просто html форма с типичным input type=»file» ?
Владимир из Get To the Top
Добрый день, Andrew71
html форма просто так не работает, ее должен обрабатывать php файл ((и)или js файл).
Смотрите в нем, как он формирует временные абсолютные ссылки
Andrew71
я имею в виду что файл не сохраняется нигде на сервере при заполнении формы и я не знаю откуда мне брать $url = ‘абсолютная ссылка на файл’ для обработчика, в массиве $_REQUEST никаких данных из этого поля не формируются.
Владимир из Get To the Top
Прикрепленные файлы обязательно сохраняются во временном хранилище.
Как только файл будет прикреплен к письму он будет удален из временного хранилища.
Где у вас временное хранилище, я не знаю. Ищите у себя на сервере папку
/temp/Если у себя в php-обработчике формы вы нигде не видите путь, куда сохраняются файлы, то вы можете задать его самостоятельно:
А если вы хотите сохранить файл навсегда, то его необходимо перенести из временного хранилища функцией
Василий
Здравствуйте! Спасибо за статью. Информация была очень полезна при создании собственной php-библиотеки для работы с битрикс-24 через веб-хуки.
Библиотека поддерживает весь функционал описанный в документации.
Владимир из Get To the Top
Добрый день, Василий
и вам спасибо за библиотеку
Евгений
Доброго дня
Если ли возможность передать вложение в лид? у меня такая ситуация на вордпресс плагин CF7. В нем есть поле Файл или в моем случае Мультифайл через надстройку к плагину
//я перехватываю поле
$myfile = $posted_data[‘file-961’];
//передаю в битрикс
‘UF_CRM_1560501128’ => $myfile,
//регистрировал поле в нас троках лидов (выше его id)
но так не работает, существует ли решение данного вопроса, заранее благодарю
Владимир из Get To the Top
Добрый день, Евгений
ответ на данный вопрос вы можете найти в данном комментарии
Михаил
Владимир, Вопрос по дублям. При регистрации на сайте создаем Лид в Б24, потом при совершении покупки на сайте в Б24 создаем Контакт. Есть задача перед созданием Лида на сайте проверять в списке Контактов на наличие уже email такого же как и у нового Лида и в этом случае не создавать Лид. Как можно такую проверку реализовать
Владимир из Get To the Top
Добрый день, Михаил
Это возможно сделать только при полноценной интеграции через API Б24 и на стороне вашего сервера.
Можете еще попробовать поискать в маркетплейс готовые приложения. Может быть подобное кто-то уже реализовал.
Дмитрий
Здравствуйте, актуален ли ещё скрипт под последнюю версию WP и woo
Владимир из Get To the Top
Добрый день, Дмитрий
да, актуален
Дмитрий
Здравствуйте, как перестроить что бы создавались не лиды а сделки?
Владимир из Get To the Top
Добрый день, Дмитрий
если речь идет про интеграцию с помощью входящего вебхука, то в строчке
необходимо заменить
crm.lead.add.jsonнаcrm.deal.add.jsonТолько проверьте поля для создания сделки по данной ссылки
Дмитрий
Я там понял в сделке нет данных о контактах, как же мне в сделке привязать то клиента, это хотя бы так, а дальше я совсем без понятия как ещё товары привязывать
Владимир из Get To the Top
Добрый день, Дмитрий
К сделке можно привязать контакт следующим образом:
// СОЗДАЕМ СДЕЛКУ // формируем URL в переменной $queryUrl $queryUrl = 'https://[ваше_название].bitrix24.ru/rest/[идентификатор_пользователя]/[код_вебхука]/crm.deal.add.json'; // формируем параметры для создания лида в переменной $queryData $queryData = http_build_query(array( 'fields' => array( 'TITLE' => 'Название лида', ), '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); $dealID = $result["result"]; // Получаем ID сделки var_dump($result); // СОЗДАЕМ КРОНТАКТ // формируем URL в переменной $queryUrl $queryUrl = 'https://[ваше_название].bitrix24.ru/rest/[идентификатор_пользователя]/[код_вебхука]/crm.contact.add.json'; // формируем параметры для создания лида в переменной $queryData $queryData = http_build_query(array( 'fields' => array( 'TITLE' => 'Название лида', ), 'params' => array("REGISTER_SONET_EVENT" => "Y") )); $queryData = http_build_query($qr); $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); $contactId = $result["result"]; // Получаем ID контакта var_dump($result); // ДОБАВЛЯЕМ КОНТАКТ К УКАЗАННОЙ СДЕЛКЕ $queryUrl = 'https://[ваше_название].bitrix24.ru/rest/[идентификатор_пользователя]/[код_вебхука]/crm.deal.contact.add.json'; $qr = array( 'id' => $dealID, 'fields' => array( 'CONTACT_ID' => $contactId, ) ); $queryData = http_build_query($qr); $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); var_dump($result);Grisha
Здравствуйте, у меня не срабатывает.
Сделка создается, а контакт нет. При выполнении скрипта возвращает
array(2) { [«error»]=> string(0) «» [«error_description»]=> string(111) «Не введено значение обязательного поля «Имя» или «Фамилия»
» }
// СОЗДАЕМ КРОНТАКТ
// формируем URL в переменной $queryUrl
$queryUrl = ‘https://…../crm.contact.add.json’;
// формируем параметры для создания лида в переменной $queryData
$queryData = http_build_query(array(
‘fields’ => array(
‘TITLE’ => ‘ТЕСТОВЫЙ КОНТАКТ’,
‘NAME’ => ‘ГРИША’
),
‘params’ => array(«REGISTER_SONET_EVENT» => «Y»)
));
$queryData = http_build_query($qr);
$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);
$contactId = $result[«result»]; // Получаем ID контакта
var_dump($result);
Дмитрий
код хорош, работает как указано, но вопросик как можно размещать эти заказы правильно ? к примеру что бы товар появлялся в товарах.
http://skrinshoter.ru/i/081019/XpQivYhi.png
а так же что бы данные клиента регались!
Владимир из Get To the Top
Добрый день, Дмитрий
Добавить товар/услугу в битрикс24 вместе с лидом невозможно.
Товары/услуга вносятся в CRM систему заранее, после чего в лиде вы можете передавать ID товара/услуги, сформировать для нее стоимость и кол-во.
Т.е, вам необходимо создать само название товара в Б24, получить его ID (см. в URL), а в лиде указывать его ID и информацию о нем.
Пример,
// формируем URL в переменной $queryUrl $queryUrl = 'https://[ваше_название].bitrix24.ru/rest/[идентификатор_пользователя]/[код_вебхука]/crm.lead.add.json'; // формируем параметры для создания лида в переменной $queryData $queryData = http_build_query(array( 'fields' => array( 'TITLE' => 'Название лида', ), 'params' => array("REGISTER_SONET_EVENT" => "Y") )); // обращаемся к Битрикс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); $leadID = $result["result"]; $queryUrl = 'https://[ваше_название].bitrix24.ru/rest/[идентификатор_пользователя]/[код_вебхука]/crm.lead.productrows.set.json'; $queryData = http_build_query(array( 'id' => $leadID, 'rows' => Array( Array( "PRODUCT_ID" => 11, //Указывваете свое ID товара/услуги в Б24 "PRICE"=>str_replace($chars, '', "120000"), //Указываете свою стоимость товара/услуги "QUANTITY" => 1, //Указываете свое кол-во товара/услуги ), ), )); $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); if (array_key_exists('error', $result)) echo "Ошибка при сохранении лида: ".$result['error_description']."";
Василий
Добрый день! Полностью скопировал Ваш код. Поменял только адрес к вебхуку на свой и масив по товару на:
«PRODUCT_ID» => 2703, //Указывваете свое ID товара/услуги в Б24
«PRICE»=> 400,
«QUANTITY» => 1, //Указываете свое кол-во товара/услуги
Лид создается, а товар не прикрепляется.
Ид товара такой есть.
В чем может быть проблема?
Andrey
Здравствуйте. А как добавить 2 и больше товара?
с вашим кодом передается только один.
product id указан как «PRODUCT_ID» => $productId
Андрей
Статья не теряет актуальность)) А комменты особенно ценны. Спасибо огромное!
Вопрос: для WP сайта с кучей разных форм (около 300 шт.) по идее нужно забить весь functions.php формами? Или можно как-то иначе решить?
Сайт собран на конструкторе Elementor. На каждой странице отдельное название формы и каждая заявка дублируется в email. Сейчас через один вебхук и Zapier справляюсь, но нужно добавить поле, которого нет в Zapier (Client ID).
Андрей
Здравствуйте. С этого кода в CRM почему то формируется сразу 2 одинаковых лида.
// формируем URL в переменной $queryUrl
$queryUrl = ‘https://[ваше_название].bitrix24.ru/rest/[идентификатор_пользователя]/[код_вебхука]/crm.lead.add.json’;
// формируем параметры для создания лида в переменной $queryData
$queryData = http_build_query(array(
‘fields’ => array(
‘TITLE’ => ‘Название лида’,
‘EMAIL’ => Array(
«n0» => Array(
«VALUE» => «email-1@mail.ru»,
«VALUE_TYPE» => «WORK»,
),
),
‘PHONE’ => Array(
«n0» => Array(
«VALUE» => «+74957778899»,
«VALUE_TYPE» => «WORK»,
),
),
),
‘params’ => array(«REGISTER_SONET_EVENT» => «Y»)
));
// обращаемся к Битрикс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);
$result = json_decode($result, 1);
if (array_key_exists(‘error’, $result)) echo «Ошибка при сохранении лида: «.$result[‘error_description’].»»;
Elle
Здравствуйте, очень хорошая статья, данные действительно передаются. Помогите, пожалуйста, понять в чем ошибка. Хочу чтоб в срм битрикс поступали лиды с сайта, содержащие:
1. Имя
2. Номер телефона
3. Товар (его ID с названием или без)
4. Цена на товар.
Пока получилось только, чтоб номер телефона введенный передавался верно, с другим набором кодов, более короткиv. Попыталась добавить еще ID товара и цену, но по ним не приходят данные. И как нужно прописать, чтоб имя отображалось в лиде. пробовала NAME и т.д.
$queryUrl = ‘https://[ваше_название].bitrix24.ru/rest/[идентификатор_пользователя]/[код_вебхука]/crm.lead.add.json’;
$queryData = http_build_query(array(
‘fields’ => array(
‘TITLE’ => ‘название товара’,
‘EMAIL’ => Array(
«n0» => Array(
«VALUE» => «email»,
«VALUE_TYPE» => «WORK»,
),
),
‘PHONE’ => Array(
«n0» => Array(
«VALUE» => «номер телефона»,
«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);
$leadID = $result[«result»];
$queryUrl = ‘https://[ваше_название].bitrix24.ru/rest/[идентификатор_пользователя]/[код_вебхука]/crm.lead.add.json’;
$queryData = http_build_query(array(
‘id’ => $leadID,
‘rows’ => Array(
Array(
«PRODUCT_ID» => 1,
«PRICE»=>str_replace($chars, », «1990»),
«QUANTITY» => 1,
),
),
));
$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);
if (array_key_exists(‘error’, $result)) echo «Ошибка при сохранении лида: «.$result[‘error_description’].»»;
Буду очень признательна, спасибо.
Вячеслав
Здравствуйте! А как получать данные из битрикс24? Например мне нужно получить сделку по фильтру, и затем id этой сделки присвоить в переменную для дальнейшего использования.
Есть кусочек кода:
///IN BITRIX24 SITE///
$queryUrl = ‘https://мой.bitrix24.ru/rest/id/идентификатор/crm.deal.add.json’;
$deals = http_build_query(array(
array(
«filter» => array(
‘UF_CRM_1574933437188’ => ‘проверено’,
‘select’ => [ «ID», ]
),
)
));
$deal_id = $deals[‘result’][‘ID’];
//ADD DEAL//
$queryUrl = ‘https://мой.bitrix24.ru/rest/id/идентификатор/crm.deal.add.json’;
$queryData = http_build_query(array(
‘fields’ => array(
‘TITLE’ => «Заявка с сайта тест»,
‘UF_CRM_1574933437188’ => $deal_id,
),
‘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);
//END ADD DEAL//
///END BITRIX24 SITE///
Валерий
Здравствуйте!
Все четко работает по вашей инструкции через входящий вебхук.
У меня на сайте форма с возможностью отправить файл. если посетитель отправляет один файл, он приходит, если прикреплено больше файлов, то приходит только один файл.
Как можно решить вопрос с несколькими прикрепленными файлами?
В Б24 добавлено множественное поле типа «файл» куда и приходить должны файлы.
Спасибо!
Артём
Отличная статья.Жаль что поздно узнал.А вы не знаете случайно,где размещать скрипт с вебхуком на коробке. А то на одной,у меня всё пашит. А использую этот же скрипт всё — не пашит.
Alexander
Здравствуйте! Подскажите пожалуйста настраивал вариацию доступом по логину и паролю летом 2019 все работало, сейчас решил проверить сайт, уже не работает((
Как то менялся код вашего скрипта? Может были какие то изменения?
Владимир из Get To the Top
Добрый день,
лучше перейти на на интеграцию через веб-хуки.
Alexey
Спасибо за статью, была очень кстати.
Royal Bimmer
Добрый день. Подскажите пожалуйста, возможно ли вместе с указанными в статье данными передавать ga_cid (google client id)? нужна только эта информация. Как можно это реализовать? Заранее спасибо за ответ)
Владимир из Get To the Top
Добрый день,
да, конечно, получать и передавать ga_cid возможно.
Для этого необходимо создать собственное поле в Битрикс24 и затем уже передавать в него значение. К примеру,
$GCID = @$_COOKIE['_ga']; $queryData = http_build_query(array( 'fields' => array( 'TITLE' => 'Название лида', 'UF_CRM_XXXXXXXXXX' => $GCID, ), 'params' => array("REGISTER_SONET_EVENT" => "Y") ));Royal Bimmer
Спасибо огромное за развернутый и быстрый ответ!)
Александр
Здравстуйте! Большущее спасибо за статью:)
Мы подключили через вебхуки и все работает. Но есть одна проблема и я никак не могу найти ее решение. Как передавать данные из сайта в поля с выпадающим список или чекбоксом? обычный текстовый вариант не подходит, пробовал масивом как телефон или почту — тоже нет. Может вы знаете как это сделать?
Рина
подскажите пожалуйста, в какой части rest.php это можно разместить ???
// формируем URL в переменной $queryUrl
$queryUrl = ‘https://[ваше_название].bitrix24.ru/rest/[идентификатор_пользователя]/[код_вебхука]/crm.lead.add.json’;
// формируем параметры для создания лида в переменной $queryData
$queryData = http_build_query(array(
‘fields’ => array(
‘TITLE’ => ‘Название лида’,
),
‘params’ => array(«REGISTER_SONET_EVENT» => «Y»)
));
// обращаемся к Битрикс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);
$result = json_decode($result, 1);
if (array_key_exists(‘error’, $result)) echo «Ошибка при сохранении лида: «.$result[‘error_description’].»»;
Alexandr
А как можно убрать повторную отправку транзакции в CRM, если клиент обновляет страницу, создается ещё один заказ.
Андрей
Извиняюсь за глупый вопрос, а в каком файле на Битрикс прописывать данный код? В init.php? Или есть другие решения?
Андрей
Друзья, а в каком файле вносить данный код? В init.php? Сайт на Битриксе.
Дмитрий
Странно что просто взяли и проигнорили вопрос привязки повторных заказов к существующим клиентам. Ни один магазин или нормальный бизнес не простит кучу дублей контактов с которыми невозможно работать и следить за историей заказов)
Роман
Добрый день.
Скажите а как в вашем примере организовать проверку лида на уникальность по емейл и телефону? Ведь может быть контакт с такими данными уже есть, и надо не создавать новый лид, а прицепить его к контакту.. Подскажите куда копать, если возможно, как-нибудь подробнее, а то совсем затык в этом вопросе.
Спасибо
Надежда
Здравствуйте. А подскажите, как можно вывести пользовательское поле «Да/Нет» из инфоблока битрикса в лиде Битрикс 24?
Надежда
Воспользовалась Вашим решением для создания лидов в Битрикс 24 из Битрикса (т.к. формы связи реализованы как инфоблоки). Все работает. Но возникло два вопроса:
1. Как правильно передать UTM-метки?
2. Как правильно передать элементы списка из формы связи, если логически их можно вывести в лиде в пользовательских полях «Да/Нет»?
Олег
Здравствуйте, Владимир. Спасибо за прекрасную статью. Не могли бы вы пожалуйста подсказать, в чем проблема. Ничего не сохраняет и не выводит через print_r. Я так понимаю, в переменную $result ничего не попадает.
$queryUrl = ‘https://edf.crmgenesis.com/rest/1/e03shd7ai6p8ifaq/crm.contact.add.json’;
$name = $_POST[‘first_name’];
$lname = $_POST[‘last_name’];
$phone = $_POST[‘phone’];
// формируем параметры для создания контакта в переменной $queryData
$queryData = http_build_query(array(
‘fields’ => array(
‘Name’ => $name,
‘Lname’ => $lname,
‘PHONE’ => Array(
«n0» => Array(
«VALUE» => $phone,
«VALUE_TYPE» => «WORK»,
),
),
),
));
// обращаемся к Битрикс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);
$result = json_decode($result, true);
//if (array_key_exists(‘error’, $result)) echo «Ошибка при сохранении контакта: «.$result[‘error_description’].»»;
print_r($result);
George
Здравствуйте, каким образом можно настроить передачу информации только из определенной формы на сайте, например по id, на основе второга варианта я так понял что хук сработает на все формы на сайте
Владимир из Get To the Top
Не работает больше почему-то код.
Строка подключения работает. Просто ссылку если взять для хука. Добавляется пустой лид.
При оформлении заказа, почему-то перестало работать.
Версия WooCommerce самая свежая.
/* Подключаем Битрикс24 */
function my_custom_tracking( $order_id ) {
// Получаем информации по заказу
$order = wc_get_order( $order_id );
$order_data = $order->get_data();
// Получаем базовую информация по заказу
$order_id = $order_data[‘id’];
$order_currency = $order_data[‘currency’];
$order_payment_method_title = $order_data[‘payment_method_title’];
$order_shipping_totale = $order_data[‘shipping_total’];
$order_total = $order_data[‘total’];
$order_base_info = «Общая информация по заказу
ID заказа: $order_id
Валюта заказа: $order_currency
Метода оплаты: $order_payment_method_title
Стоимость доставки: $order_shipping_totale
Итого с доставкой: $order_total»;
// Получаем информация по клиенту
$order_customer_id = $order_data[‘customer_id’];
$order_customer_ip_address = $order_data[‘customer_ip_address’];
$order_billing_first_name = $order_data[‘billing’][‘first_name’];
$order_billing_last_name = $order_data[‘billing’][‘last_name’];
$order_billing_email = $order_data[‘billing’][’email’];
$order_billing_phone = $order_data[‘billing’][‘phone’];
$order_client_info = «Информация по клиенту
ID клиента = $order_customer_id
IP адрес клиента: $order_customer_ip_address
Имя клиента: $order_billing_first_name
Фамилия клиента: $order_billing_last_name
Email клиента: $order_billing_email
Телефон клиента: $order_billing_phone»;
// Получаем информацию по доставке
$order_shipping_address_1 = $order_data[‘shipping’][‘address_1’];
$order_shipping_address_2 = $order_data[‘shipping’][‘address_2’];
$order_shipping_city = $order_data[‘shipping’][‘city’];
$order_shipping_state = $order_data[‘shipping’][‘state’];
$order_shipping_postcode = $order_data[‘shipping’][‘postcode’];
$order_shipping_country = $order_data[‘shipping’][‘country’];
$order_shipping_info = «Информация по доставке
Страна доставки: $order_shipping_state
Город доставки: $order_shipping_city
Индекс: $order_shipping_postcode
Адрес доставки 1: $order_shipping_address_1
Адрес доставки 2: $order_shipping_address_2″;
// Получаем информации по товару
$order->get_total();
$line_items = $order->get_items();
foreach ( $line_items as $item ) {
$product = $order->get_product_from_item( $item );
$sku = $product->get_sku(); // артикул товара
$id = $product->get_id(); // id товара
$name = $product->get_name(); // название товара
$description = $product->get_description(); // описание товара
$stock_quantity = $product->get_stock_quantity(); // кол-во товара на складе
$qty = $item[‘qty’]; // количество товара, которое заказали
$total = $order->get_line_total( $item, true, true ); // стоимость всех товаров, которые заказали, но без учета доставки
$product_info[] = «Информация о товаре
Название товара: $name
ID товара: $id
Артикул: $sku
Описание: $description
Заказали (шт.): $qty
Наличие (шт.): $stock_quantity
Сумма заказа (без учета доставки): $total;»;
}
$product_base_infо = implode(», $product_info);
$subject = «Заказ с сайта № $order_id»;
// Формируем URL в переменной $queryUrl для отправки сообщений в лиды Битрикс24, где
// указываем [ваше_название], [идентификатор_пользователя] и [код_вебхука]
$queryUrl = ‘https://cybexonline.bitrix24.ru/rest/11/[ЗДЕСЬ УКАЗАЛ КЛЮЧ]/crm.lead.add.json’;
// Формируем параметры для создания лида в переменной $queryData
$queryData = http_build_query(array(
‘fields’ => array(
‘TITLE’ => $subject,
‘COMMENTS’ => $order_base_info.’ ‘.$order_client_info.’ ‘.$order_shipping_info.’ ‘.$product_base_infо,
‘NAME’ => $order_billing_first_name,
‘LAST_NAME’ => $order_billing_last_name,
‘OPPORTUNITY’ => $order_total,
‘EMAIL’ => Array(
«n0» => Array(
«VALUE» => $order_billing_email,
«VALUE_TYPE» => «WORK»,
),
),
‘PHONE’ => Array(
«n0» => Array(
«VALUE» => $order_billing_phone,
«VALUE_TYPE» => «WORK»,
),
),
),
‘params’ => array(«REGISTER_SONET_EVENT» => «Y»)
));
// Обращаемся к Битрикс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);
$result = json_decode($result, 1);
if (array_key_exists(‘error’, $result)) echo «Ошибка при сохранении лида: «.$result[‘error_description’].»»;
}
Иван
Не получается передать через вебхук утм метки. Поделитесь рабочим пример. Не могу понять где у меня ошибка
Иван
Добрый день. Настроил передачу заявки через веб хук. добавил вторую форму, но данные не передаются. Все сделал как написано выше. В первом случае форма вызывается по кнопке, а во втором форма открытая в шапке сайта. Подскажите такие формы как то по другому настраиваются?
Dexploit
Добрый день.
Мне нужно передать данные с обычной формы на лендинге.
Пытаюсь внедрить данный код, но ничего не происходит. Открывается код в пхп файле просто.
Я создал обычную форму, поставил в action созданный пхп файл с вебхуком битрикса. method=»POST» поставил.
$leadData = $_POST[‘DATA’];
$title = $leadData[‘form_subject’];
$agWork = $leadData[‘name’];
$agname = $leadData[‘phone’];
// формируем URL в переменной $queryUrl
$queryUrl = ‘https://МОЙДОМЕН.bitrix24.ua/rest/1/АЙДИШНИК/crm.lead.add.json’;
// формируем параметры для создания лида в переменной $queryData
$queryData = http_build_query(array(
‘fields’ => array(
‘TITLE’ => $title,
‘NAME’ => $agname,
‘PHONE’ => $agphone,
),
‘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);
if (array_key_exists(‘error’, $result)) echo «Ошибка при сохранении лида: «.$result[‘error_description’].»
«;
Естественно вместо МОЙДОМЕН и АЙДИШНИК стоят реальные данные.
Владимир
Добрый день.
Как передавать в битрикс UTM метки?
Дмитрий
Большое спасибо за подробное описание. Хоть и статья написана давно и битрикс 24 сделал ряд изменений, но статья еще актуальна как никогда!