Как добавить свои поля для формирования лидов в 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. А на сегодня - все. Буду благодарен за расшаривание статьи в социальных сетях. Спасибо. Пока.

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

Понравилась статья? Не хотите пропустить следующие материалы о самостоятельном создании и раскрутке landing page?

Подпиcывайтесь на обновления!

Комментарии: 27

  1. Ремонт

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

  2. Артур

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

    • dimadv7

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

  3. YG

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

  4. YG

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

    • dimadv7

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

  5. YG

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

    • dimadv7

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

  6. Влад

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

  7. Артем

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

    • dimadv7

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

  8. Марк

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

  9. Марк

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

    • dimadv7

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

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

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

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

  10. Марк

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

  11. Марк

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

  12. Алексей Попович

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

    • dimadv7

      Спасибо)

  13. Артем

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

    • dimadv7

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

  14. Миша

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

    • dimadv7

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

  15. Семен

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

    • dimadv7

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

  16. Александр

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

    • dimadv7

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

  17. smolurist.ru

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

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