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

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

Похожие публикации

40 комментариев

  1. Дмитрий Давыдов

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

  2. Дмитрий Давыдов

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

    1. Дмитрий Давыдов

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

  3. Дмитрий Давыдов

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

  4. Дмитрий Давыдов

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

    1. Дмитрий Давыдов

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

  5. Дмитрий Давыдов

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

    1. Дмитрий Давыдов

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

  6. Дмитрий Давыдов

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

  7. Дмитрий Давыдов

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

    1. Дмитрий Давыдов

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

  8. Дмитрий Давыдов

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

  9. Дмитрий Давыдов

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

    1. Дмитрий Давыдов

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

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

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

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

  10. Дмитрий Давыдов

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

  11. Дмитрий Давыдов

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

  12. Дмитрий Давыдов

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

    1. Дмитрий Давыдов

      Спасибо)

  13. Дмитрий Давыдов

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

    1. Дмитрий Давыдов

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

  14. Дмитрий Давыдов

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

    1. Дмитрий Давыдов

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

  15. Дмитрий Давыдов

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

    1. Дмитрий Давыдов

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

  16. Дмитрий Давыдов

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

    1. Дмитрий Давыдов

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

  17. Дмитрий Давыдов

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

  18. Дмитрий Давыдов

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

  19. Дмитрий Давыдов

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

    1. Дмитрий Давыдов

      Максим, присоединяюсь к вопросу. У меня так же есть список, но его можно свести к выбору "Да/Нет" по каждому элементу списка, разведя по отдельным пользовательским полям в Битрикс24.

  20. Дмитрий Давыдов

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

  21. Дмитрий Давыдов

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

  22. Дмитрий Давыдов

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

    1. Дмитрий Давыдов

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

    2. Дмитрий Давыдов

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

  23. Дмитрий Давыдов

    Дмитрий, такой вопрос, а можно такую форму с капчей в тильду интегрировать?

    1. Дмитрий Давыдов

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

  24. Дмитрий Давыдов

    Ну ладно... спасибо)

  25. Дмитрий Давыдов

    У вас оч крутой личный сайт)

    1. Дмитрий Давыдов

      Геннадий, спасибо за теплые слова)

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

 

© 2014 — 2020, Smartlanding.biz. Все права защищены. Любое использование материалов допускается только с указанием активной ссылки на источник. Политика конфиденциальности