Пользовательские поля битрикс24 - первый инструмент, к которому обращаешься, когда типовая карточка сделки или контакта не покрывает бизнес-процесс. У меня на практике таких доработок было десятки: от простого текстового поля «Источник заявки» до связки из пяти полей с автозаполнением через REST API и внешние вебхуки. В этой статье разберу, как создавать поля, какой тип выбирать под конкретную задачу и на что натыкаешься на практике при настройке карточек CRM.
Зачем добавлять пользовательские поля в сделки и контакты
Стандартный набор полей в Битрикс24 закрывает базовые сценарии продаж: имя, телефон, сумма сделки, статус. Как только процесс становится специфичным, полей не хватает. Из моей практики типичные причины завести дополнительное поле:
- Нужно хранить номер накладной СДЭК или трек-номер другой службы доставки прямо в карточке сделки, чтобы менеджер не лазил во внешний сервис.
- Компания продаёт несколько продуктовых линеек, и нужен отдельный список для выбора направления, от которого зависит воронка.
- Есть интеграция с внешней системой, например платёжным шлюзом или складом, и в карточку нужно писать статус синхронизации или ID записи из другой базы.
- Юридические поля: ИНН, форма договора, дата окончания действия коммерческого предложения.
- Поля для аналитики, которые потом выгружаются в BI-дашборд или обрабатываются скриптом в n8n для автоматических отчётов.
Каждое поле, которое добавляешь «на всякий случай», утяжеляет карточку и путает менеджеров. Правило, которое я соблюдаю на всех проектах: поле оправдано, если на его основе строится фильтр, отчёт или автоматизация. Если поле просто хранит текст, который никто не использует в работе, лучше вынести это в комментарий к сделке.
Как создать пользовательское поле в карточке сделки
Через интерфейс это делается в разделе CRM. Заходишь в настройки карточки сделки, обычно кнопка со шестерёнкой в верхнем углу карточки или раздел «Настройки» - «Поля», выбираешь «Добавить поле» и задаёшь:
- Символьный код поля, например UF_CRM_DELIVERY_TRACK - по нему потом обращаешься к полю через REST API.
- Тип поля: строка, список, дата, привязка к элементу CRM и так далее.
- Название для отображения в карточке и подсказку для менеджера.
- Обязательность заполнения и значение по умолчанию.
- Права доступа на просмотр и редактирование по ролям сотрудников.
Если полей много и создавать их приходится регулярно, например при разворачивании нового филиала или продуктовой линии, быстрее делать это через REST API методом crm.deal.userfield.add. Пример запроса на добавление строкового поля:
curl -X POST
"https://your-domain.bitrix24.ru/rest/1/webhook_code/crm.deal.userfield.add"
-H "Content-Type: application/json"
-d '{
"fields": {
"FIELD_NAME": "DELIVERY_TRACK",
"USER_TYPE_ID": "string",
"XML_ID": "DELIVERY_TRACK",
"EDIT_FORM_LABEL": {"ru": "Трек-номер доставки"},
"LIST_COLUMN_LABEL": {"ru": "Трек"},
"MANDATORY": "N"
}
}'
После добавления поле автоматически получает префикс UF_CRM_ и появляется в карточке сделки без перезагрузки страницы. Такой подход удобен, когда настройка идёт из скрипта миграции или разворачивается вместе с типовым шаблоном портала для нового клиента.
Бесплатный материал
🎁 Полезный скрипт в подарок
Подпишитесь на Telegram - пришлю готовый скрипт по этой теме.
Без спама. Отписка в 1 клик.
Какой тип поля выбрать: сравнение вариантов
Ошибка, которую вижу чаще всего: под любую задачу берут строковое поле, хотя есть более узкие типы, которые сразу дают валидацию и удобный интерфейс ввода. Собрал таблицу с типами, которые использую регулярно:
| Тип поля | Код в API | Когда использовать | Пример из практики |
|---|---|---|---|
| Строка | string | Короткий текст без строгого формата | Название компании-партнёра, комментарий менеджера |
| Список | enumeration | Фиксированный набор значений | Продуктовая линейка, регион поставки |
| Дата/время | date, datetime | Сроки, дедлайны, даты событий | Дата окончания коммерческого предложения |
| Привязка к элементу CRM | crm | Связь с другой сделкой, контактом или компанией | Связанный договор, повторная сделка того же клиента |
| Файл | file | Вложения, которые должны храниться в карточке, а не в чате | Скан доверенности, счёт на оплату |
| Деньги | money | Суммы с привязкой к валюте, отдельно от бюджета сделки | Сумма предоплаты, стоимость доставки |
| Флажок (да/нет) | boolean | Бинарные признаки | Есть ли рассрочка, подтверждён ли адрес |
| Сотрудник | employee | Ссылка на пользователя портала, который не совпадает с ответственным | Технический специалист, который вёл монтаж |
Отдельно про тип «Список»: если значений больше 15-20, лучше делать поле «Привязка к элементу CRM» со справочником в виде смарт-процесса, а не раздувать enumeration. С обычным списком на 40 с лишним значений интерфейс выбора в мобильном приложении становится неудобным, менеджеры жалуются в первую же неделю после внедрения.
Настройка пользовательских полей в карточке контакта и компании
Логика создания полей в контакте и компании такая же, как в сделке, но методы REST API другие: crm.contact.userfield.add и crm.company.userfield.add. На практике в карточку контакта чаще всего добавляю:
- Канал первого касания: сайт, мессенджер, звонок, партнёрская рекомендация - список, на основе которого потом строится отчёт по источникам.
- ИНН и реквизиты для B2B-клиентов, если компания не заведена отдельной карточкой.
- Согласие на обработку персональных данных с датой и способом получения согласия.
- ID клиента во внешней системе, если параллельно ведётся учёт в другой базе или интернет-магазине.
Важный нюанс: поля контакта видны во всех сделках этого контакта, а поля сделки живут только внутри одной сделки. Если данные должны «тянуться» за клиентом между разными сделками, например предпочитаемый способ доставки, поле нужно заводить в контакте, а не дублировать в каждой сделке.
Для компаний с большим объёмом входящих обращений через сайт или Telegram-бота дополнительные поля часто заполняются автоматически через вебхук на входящее событие. Если у вас настроена интеграция чат-бота с CRM, маппинг полей стоит продумать заранее, а не переносить его руками после того как накопится пара тысяч карточек без данных. Такие интеграции между сайтом, ботом и CRM обычно закрывают на аутсорсе, потому что маппинг полей и обработка ошибок API занимают больше времени, чем кажется на старте.
Группы полей и порядок отображения в карточке
Когда полей в карточке становится больше 10-15, их стоит разносить по группам, иначе менеджер тратит время на прокрутку в поиске нужного поля. В настройках карточки, не путать с настройками самого поля, можно:
- Создавать разделы карточки и перетаскивать поля между ними.
- Скрывать поля, которые заполняются автоматически и не нужны менеджеру визуально.
- Настраивать разный набор видимых полей для разных воронок продаж - это доступно в редакциях с несколькими направлениями CRM.
- Выносить часть полей в блок «Дополнительно», который по умолчанию свёрнут.
На проектах с несколькими воронками, например розница и опт в одной компании, обычно завожу отдельный набор обязательных полей под каждую воронку через настройку стадий, а не через общий шаблон карточки. Иначе менеджер розницы видит поля для опта и наоборот, и это первое, на что жалуются в течение первой недели после внедрения.
Типичные ошибки при работе с пользовательскими полями Битрикс24
За несколько лет настройки CRM под разные компании набрался список повторяющихся проблем:
- Символьный код поля меняют после того, как на него уже завязана автоматизация или роботы бизнес-процессов - связи ломаются молча, без явной ошибки в интерфейсе.
- Поле типа «Список» создают без значения по умолчанию, и в старых карточках оно остаётся пустым, что путает отчёты.
- Обязательные поля включают на живом портале без предупреждения менеджеров - сделки перестают сохраняться, пока пользователь не поймёт, что именно нужно заполнить.
- Поля создают вручную на каждом из нескольких порталов, тестовом и продакшн, из-за чего коды расходятся и импорт данных между окружениями ломается.
- Не ограничивают права на редактирование полей с чувствительными данными, вроде ИНН и реквизитов, и их видят все сотрудники, а не только те, кто отвечает за документооборот.
Отдельно про синхронизацию с внешними системами: если данные в пользовательские поля пишутся через n8n или другой сценарий автоматизации, логируйте ответы API. Битрикс24 REST API молча возвращает ошибку валидации, если тип значения не совпадает с типом поля, например при попытке отправить строку в поле типа «Дата», и без логов такие сбои находишь только через недели, когда менеджер заметит, что поле не заполнилось у части клиентов.
Чтобы сайт работал без сбоев
Техподдержка
от 15 000 ₽/мес
Подробнее →Частые вопросы
Сколько пользовательских полей можно добавить в карточку сделки?
Жёсткого лимита в интерфейсе нет, но на практике больше 25-30 полей в одной карточке усложняют работу менеджеров и замедляют загрузку карточки в браузере и мобильном приложении. Если данных нужно больше, лучше выносить их в связанный смарт-процесс или в карточку компании.
Можно ли изменить тип уже созданного пользовательского поля?
Через стандартный интерфейс нет, тип поля после создания не меняется. Приходится создавать новое поле с нужным типом и переносить данные скриптом через REST API, а старое поле скрывать или удалять после переноса.
Как перенести пользовательские поля между тестовым и рабочим порталом?
Вручную это делают через одинаковые символьные коды при создании полей на обоих порталах. Для регулярного переноса удобнее написать скрипт на Python или сценарий в n8n, который читает список полей через crm.deal.userfield.list на одном портале и создаёт их на другом теми же методами add.
Видны ли пользовательские поля в отчётах и фильтрах CRM?
Да, поля типа «Список», «Дата», «Деньги» и «Флажок» сразу доступны в фильтрах и в конструкторе отчётов. Поля типа «Файл» и «Привязка к элементу CRM» в стандартных отчётах фильтруются с ограничениями, для сложной аналитики по ним данные обычно выгружают во внешний BI-инструмент через API.