Smartlanding

Как добавить свои поля для формирования лидов в CRM системе Bitrix24

CRM битрикс 24 для лендинг пейджВсем — привет. Друзья, в одной из прошлых статей мы говорили о том, как автоматически формировать лиды в CRM системе Bitrix24 на основе данных, полученных из формы обратной связи на вашем лендинг пейдж. Но тогда мы пользовались стандартными полями, которые предоставляла нам система.

На этом возможности сервиса не заканчиваются, ведь бизнес у каждого индивидуален, и вам может понадобится нестандартные поля. Благо, система позволяет их создавать. Давайте сегодня разберемся как это делается.

Создание своих полей для лидов в CRM Bitrix24

Первым делом, нужно добавить новое поле в интерфейсе вашего кабинета. Это можно сделать перейдя по такому пути: «CRM» > «Настройки» >»Настройки форм и отчетов» > «Пользовательские поля»:

свои поля для лидов

Здесь жмем «Добавить поле» и переходим к следующему шагу:

Создание пользовательских полей в битрикс 24

Тут нужно указать порядок сортировки, я оставил по умолчанию, можно добавить название поля для других языковых версий. Обязательным полем является «Название». Далее, мы можем сделать его обязательным, пометив галочкой. Галочки «Показывать в фильтре» и «Показывать в списке» — нужны для удобства навигации в самой системе.

Ну и самый главный пункт — это «Тип». Здесь вы выбираете, какой тип данных будете получать (Текстовое поле, чекбокс, выпадающий список, файл и т.д.). Давайте сегодня передадим строку. Настройки других типов, могут несущественно отличаться.

После этого, жмем «Сохранить» и еще раз заходим в настройки только что созданного поля. Обратите внимание на адресную строку, там появился id поля. Выглядит примерно так: UF_CRM_1444981630. Вот он нам и пригодится.

Сегодня я немного видоизменю код обработчика и подход в целом, так как не всем было удобно менять атрибут name, на какой-то другой, ведь у многих уже была их привязка к обработчику отправки формы.

Поэтому оставим их в покое, задавайте любые, а в обработчике уже настроим все :)

Я создал такую структуру:

<div class="wrapper">
<p>Оставьте ваши контакты, и наш менеджер<br/> свяжется с вами</p>
  <form id="application" action="application.php" method=post enctype="multipart/form-data">
   <input  name="metka" class="metka" type="hidden" value="метка для формы"/>
   <input  name="name"  class="userName" maxlength="50" placeholder="Введите ваше имя" required="">
   <input  name="phone"  type="tel" class="userPhone" maxlength="50" placeholder="Введите ваш телефон" required="">
   <input  name="mail"  type="email" class="userMail" maxlength="50" placeholder="Введите ваш E-mail*" required />
   <input  name="inn" class="userInn" type="text"/>
   <input class="applicationButton" type="submit" value="ОТПРАВИТЬ" />
  </form>
</div>

Здесь четыре стандартных поля и одно скрытое с классом «metka». Оно необходимо для того, чтобы при получении заявки мы понимали, из какой именно формы к нам пришло сообщение. В value для этого поля нужно написать, например, заказали обратный звонок, или заявка из формы в футере.  Кроме того, мы сделаем так, что текст из этого поля будет названием лида. Не именем, а именно названием (есть такой обязательный параметр при формировании лида в CRM системе Bitrix 24).

Теперь небольшое отступление. Если кто-то делает формы первый раз, то суть заключается в том, что мы каждому полю задаем атрибут name с определенным именем, например, name=»userMail», а в php обработчике формы забираем значение, введенное пользователем в это поле.

Теперь можем двигаться дальше. Давайте посмотрим на обработчик. Почти ничего не поменялось, только теперь нам не важно какие были значения name у формы. Точно так же формируем массив с данными и передаем в битрикс:

<?
define('CRM_HOST', 'smartlanding.bitrix24.ru'); // Домен срм системы
define('CRM_PORT', '443'); 
define('CRM_PATH', '/crm/configs/import/lead.php'); 
define('CRM_LOGIN', 'smart-landing@yandex.ru');  // логин
define('CRM_PASSWORD', 'dfu488hojsof83'); // пароль

/********************************************************************************************/

if ($_SERVER['REQUEST_METHOD'] == 'POST'){

    // получаем данные из полей и задаем название лида
    
    $postData = array(
        'TITLE' => $_POST['metka'], // сохраняем нашу метку и формируем заголовок лида
        'NAME' => $_POST['name'],   // сохраняем имя
        'PHONE_WORK' =>$_POST['phone'], // сохраняем телефон
        'EMAIL_WORK' => $_POST['mail'], // сохраняем почту
        'UF_CRM_1443598721' => $_POST['inn'], // сохраняем ИНН
    );

    // авторизация, проверка логина и пароля
    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.')';
    }
}
?>

Тут, нас в первую очередь, интересуют эти строки:

 define('CRM_HOST', 'smartlanding.bitrix24.ru'); // Домен срм системы
 define('CRM_PORT', '443'); 
 define('CRM_PATH', '/crm/configs/import/lead.php'); 
 define('CRM_LOGIN', 'smart-landing@yandex.ru');  // логин
 define('CRM_PASSWORD', 'dfu488hojsof83'); // пароль

Указываем адрес своего битрикса, логин и пароль. Как и в прошлый раз, рекомендую создать пользователя с ограниченными правами, и использовать только его логин и пароль. Так безопаснее.

Ну а теперь, собственно, и наши поля. Битрикс принимает определенные параметры, которые заданы в системе по умолчанию. Там уже есть куча нужных и не нужных полей, таких как телефон, email, должность, имя, фамилия и т.д. Ознакомиться со всей таблицей можно в моей первой статье, ссылка на которую в начале поста. Именно ими мы и пользуемся (TITLE, NAME, PHONE_WORK, EMAIL_WORK.

$postData = array(
   'TITLE' => $_POST['metka'], // сохраняем нашу метку и формируем заголовок лида
   'NAME' => $_POST['name'],   // сохраняем имя
   'PHONE_WORK' =>$_POST['phone'], // сохраняем телефон
   'EMAIL_WORK' => $_POST['mail'], // сохраняем почту
   'UF_CRM_1443598721' => $_POST['inn'], // сохраняем ИНН
);

TITLE — это как раз то обязательное поле, о котором я говорил ранее (название лида). В него и передаем нашу метку.
С именем, телефоном и почтой — понятно. Больше всего нас интересует ИНН. Ведь такого поля в CRM системе не предусмотрено.

Помните тот id, который мы запоминали при создании нового поля? Вот именно он и будет параметром. Вот так просто все это делается. Пишем 'UF_CRM_1443598721' и передаем в него наш ИНН: $_POST['inn']. Остальное оставляем без изменений.

Подобная реализация легко вписывается в уже существующие проекты. А еще разработчики на Adobe Muse очень просили. Так вот, этот скрипт просто добавьте в свои обработчики форм, чуть отредактировав под свои имена.

Кроме того, на этом примере легко сделать поля для приема UTM меток, и передавать их вместе с остальными данными в битрикс. О том, как передавать данные UTM меток на почту, я рассказывал вот тут По аналогии вы легко передадите их в CRM. А на сегодня — все. Буду благодарен за расшаривание статьи в социальных сетях. Спасибо. Пока.

Скачать исходник

34 комментария

  • Ремонт

    Очень интересно! обязательно еще раз к вам загляну!

    Ответить
  • Артур

    Весь интернет перерыл в поисках решения проблемы — почему то пользовательские поля не заполнялись. Ваша статья очень помогла. Спасибо большое!

    Ответить
  • dimadv7

    Здорово. Я и сам долго мучался. Так как информации на эту тему практически небыло )

    Ответить
  • YG

    удалите, пожалуйста предыдущий комментарий

    Ответить
  • YG

    Не отправляется форма на Битрикс, на почту приходит, а в Битрикс нет.

    Ответить
  • dimadv7

    Без http указан адрес битрикса?

    Ответить
  • YG

    Я пробовал привязать Ваш код отправки на Битрикс к своей форме отправке на почту. У меня в форме был указан method=»post» (с кавычками), когда убрал кавычки отправляться стало как на почту так и в Битрикс. Огромное спасибо за блог и информацию которой Вы с нами делитесь.

    Ответить
  • dimadv7

    Никогда не сталкивался с подобной проблемой. Даже предположить не мог. Но здорово, что разобрались и от писали. Спасибо. Буду иметь ввиду. Да и другим может пригодиться.

    Ответить
  • Влад

    Ошибка 500. Уже все танцы с бубном проводил =/

    Ответить
  • Артем

    Здравствуйте. Спасибо за инструкцию, очень помогли, но возник вопрос. При создании нового лида, назначенный ответственный не получает никакого уведомления об этом. Нужно в ручную заходить и обновлять страницу с лидами. В платных тарифах уведомления можно настроить в Бизнес процессах, как я понял, а как можно выйти из этой ситуации в бесплатных тарифах? Или я то-то не так понял((

    Ответить
  • dimadv7

    Я не в курсе, насчет внутренней кухни битрикса, наверняка можно настроить как-то уведомления, по крайней мере на почту точно должно приходить, вроде бы как.

    Ответить
  • Марк

    Интегрировал данный код в свой существующий, который на почту отправлял, все работает, в битрикс передает. Спасибо.
    Но есть один момент, когда незаполненные обязательные поля форма не отправляется, но в битриксе появляется лид по этой форме, а на почте нет ничего.
    Подскажите пожалуйста как исправить?
    В php почти не шарю, помогите готовой строкой)

    Ответить
  • Марк

    В смысле, как исправить чтоб без обезательных полей не появлялся лид в битриксе.

    Ответить
  • dimadv7

    Ну так форма работает с условием же? То есть не отправляются данные если не заполнены обязательные поля? Вот такое же услови нужно и для скрипта отправки в битрикс.

    Или, если данные пришли методом post, то
    [/php]if ($_SERVER['REQUEST_METHOD'] == 'POST'){}[/php]
    Внутри проверить не пустые ли данные в полях:

    if (empty($_POST['userName']) || empty($_POST['userPassword'])) {}

    Если пришли, то отправляем, иначе, кидаем назад и выводим ошибку. Для ошибки можно открыть сессию и сохранить ее туда, а на главной вывести переменную с ошибкой. Тут не скажешь в двух словах и не обойдешься строчкой кода, а нужно нормальные проверки делать и обрабатывать ошибки.

    Ответить
  • Марк

    Просто required=»» в нужные поля формы забыл добавил)
    Спасибо за ваши статьи.
    Сейчас обратился в поддержку битрикс24, не присваивается ответственный через ASSIGNED_BY_ID, жду ответ. Потом отпишусь.

    Ответить
  • Марк

    Все дело было в правах доступа пользователя через которого создавался лид из формы.
    Внимательно ограничивайте права)

    Ответить
  • Алексей Попович

    Принимайте благодарность за такой шикарный пост! С новыми CRM-формами, к сожалению, пока что бяка — нельзя несколько форм на одной странице показывать:( Буду сейчас по этой схеме обработку собирать.

    Ответить
  • dimadv7

    Спасибо)

    Ответить
  • Артем

    Дмитрий, на разных формах — должны быть разные id?

    Ответить
  • dimadv7

    Если по статье делаете, то да.

    Ответить
  • Миша

    Подскажите пожалуйста, а передавать данные UTM меток я могу через этот скрипт в битрикс24?

    Ответить
  • dimadv7

    Да, нет никакой разницы, это же такая же строка получается.

    Ответить
  • Семен

    dimadv7, спасибо огромное за статью! Может знаете — как по произвольным полям отчеты в Битриксе формировать? Я передаю utm метки и хотелось бы по ним круговую диаграмму строить

    Ответить
  • dimadv7

    Здравствуйте. Нет, не в курсе. Я не работал так «плотно» с битрикс24 )

    Ответить
  • Александр

    Дима, привет! Отличный скрипт, все отправляется как нужно. А вот вопрос, может не по теме немного: как сделать уведомления в битриксе о приходе нового лида (там звуковые или пуш, как обычно у них в системе показываются при каком-то сообщении или событии) ? А то лид пришел «по тихому» в битрикс, так можно пропустить… В почте — там тоже не всегда можно выловить. А так удобно — пришел лид, и звуковое сопровождение. Это как-то реализовывается в этом скрипте? Или нужно в битриксе что-то копать?

    Ответить
  • dimadv7

    Привет. Спасибо. Да нет, скрипт не причем, нужно в битриксе копать. По идеи должно быть уведомление какое-то. Но я не разбирался с этим. Самым быстрым способом, думаю, будет техподдержку «потрясти».

    Ответить
  • smolurist.ru

    Дальнейшая обработка лида выполняется по вашим сценариям, лид может быть конвертирован в контакт, компанию, сделку или закрыт как некачественный. При конвертации лида в новую сущность, поля заполняются автоматически, а лид становится историей нового элемента.

    Ответить
  • Михаил

    По поводу уведомлений. В битриксе24 при создании лида их почему-то нет.
    Уведомление приходит ответственному когда для него создается дело.
    Нашел такой костыль: В качестве почты для отправки данных файлом application.php указал email привязанный к порталу битрикс 24 . Теперь создется лид и дело и ответственному приходит уведомление, а письмо прикрепляется в ленту к лиду.

    Ответить
  • Максим

    Добрый день. Подскажите пожалуйста. В Битрикс 24 есть несколько созданных мною обязательных к заполнению пользовательских полей в Лиде. Тип полей enumeration (список). Не могу разобраться как с помощью Вашего скрипта передавать значение этих полей, что бы при создании лида они автоматически заполнялись определенным значением.

    Ответить
  • Сетпан

    Ошибку пишет скрипт, так только не крутил

    Ответить
  • Макс

    Спасибо огромное. Привязал по инструкции все поля в лиды, теперь фильтрую продажи по рекламным каналам и даже ключевым фразам. Очень полезная штука!!!!!

    Ответить
  • Андрей

    Добрый день, подскажите. У нас есть форма, но при ее отправки, если есть лид (дубликат) нужно чтобы выдавало ошибку, такой лид есть. Нужно получить данные из CRM и вывести их в форме.

    Ответить
  • dimadv7

    Добрый день. Не в курсе, не сталкивался с такой задачей.

    Ответить
  • dimadv7

    Добрый день. Не в курсе, не сталкивался с такой задачей.

    Ответить

Добавить комментарий