Стадии и воронки задают маршрут движения сделки от заявки до оплаты. В REST Битрикс24 стадии хранятся как справочники статусов (crm.status.*), а воронки-направления описываются методами crm.category.*.
Стадии, статусы и направления
Важно различать три понятия, которые в интерфейсе выглядят похоже:
- Статус лида — стадии обработки лида (справочник
STATUS); - Стадия сделки — этап продажи внутри воронки (справочник
DEAL_STAGE); - Направление (воронка) — набор стадий сделок; в API это «категория» (
crm.category).
Такое разделение объясняет, почему в API за стадии и за воронки отвечают разные семейства методов. Стадии — это плоские справочники значений, привязанные к сущности и направлению. Воронки — это контейнеры стадий с собственными правами и настройками. При проектировании интеграции всегда начинайте с получения актуальных списков и не хардкодьте коды стадий: на разных порталах они отличаются.
Справочники статусов: crm.status.list
Все стадии и справочники CRM читаются одним методом crm.status.list с фильтром по ENTITY_ID:
| ENTITY_ID | Что это |
|---|---|
STATUS | Стадии лида |
DEAL_STAGE | Стадии основной воронки сделок |
DEAL_STAGE_7 | Стадии воронки с CATEGORY_ID 7 |
SOURCE | Источники |
DEAL_TYPE | Типы сделок |
Пример: crm.status.list с телом { "filter": { "ENTITY_ID": "DEAL_STAGE" }, "order": { "SORT": "ASC" } }.
Каждый элемент справочника содержит STATUS_ID (код), NAME (название), SORT (порядок) и служебные признаки. Полный перечень доступных справочников портала отдаёт метод crm.status.entity.types — с него удобно начинать, чтобы узнать точные ENTITY_ID под конкретную конфигурацию CRM.
Стадии сделок и формат STAGE_ID
Каждая стадия имеет код STATUS_ID внутри справочника. Для основной воронки код короткий: NEW, PREPARATION, WON, LOSE.
Для дополнительных воронок код получает префикс категории:
C7:NEW — стадия «новая» воронки с CATEGORY_ID = 7.
crm.deal.update нельзя передать стадию из чужой воронки. Сначала убедитесь, что CATEGORY_ID сделки совпадает с воронкой стадии, иначе получите ошибку валидации.Воронки: crm.category и dealcategory
Современный универсальный способ управлять воронками — семейство crm.category.* с указанием типа сущности:
crm.category.listсentityTypeId: 2— воронки сделок;crm.category.get/add/update/delete— управление;crm.category.fields— состав полей категории.
Исторически для сделок существует и специализированное семейство crm.dealcategory.*: crm.dealcategory.list, crm.dealcategory.stage.list (стадии конкретной воронки), crm.dealcategory.default.get. Для новых интеграций предпочтителен crm.category.
Метод crm.dealcategory.stage.list удобен тем, что сразу возвращает стадии нужной воронки по её ID, без ручного составления ENTITY_ID. Если вы поддерживаете старую интеграцию, эти методы продолжают работать; переписывать их на crm.category имеет смысл при добавлении смарт-процессов, где старое семейство неприменимо.
Смена стадии и семантика
Перевод сделки на стадию — это обычный crm.deal.update с новым STAGE_ID. У каждой стадии есть машинная семантика SEMANTICS, определяющая её смысл независимо от названия:
| SEMANTICS | Значение |
|---|---|
P | в процессе |
S | успех (сделка выиграна) |
F | провал (проиграна) |
S или F Битрикс24 автоматически ставит CLOSED: "Y". Ориентируйтесь на семантику, а не на названия — они у каждого портала свои.Именно поэтому во внешней интеграции стоит хранить сопоставление своих статусов не с названиями стадий, а с их кодами и семантикой. Когда сайт или 1С сообщают «заказ оплачен», интеграция ищет стадию нужной воронки с семантикой успеха и переводит сделку на неё. Такой подход переживает переименования стадий менеджерами и не ломается при добавлении промежуточных этапов.
Перевод стадии — это полноценное событие CRM: срабатывают роботы, триггеры и бизнес-процессы, привязанные к этапу. Если интеграция массово двигает сделки, учитывайте нагрузку от автоматизации и, при необходимости, отключайте лишние уведомления через параметры метода.
Создание своих статусов
Добавить новую стадию или элемент справочника можно методом crm.status.add:
{ "fields": { "ENTITY_ID": "DEAL_STAGE_7", "STATUS_ID": "C7:APPROVAL", "NAME": "Согласование", "SORT": 40 } }
crm.status.update— переименовать или пересортировать;crm.status.delete— удалить пользовательский элемент;crm.status.entity.types— список доступных справочников.
SYSTEM перед изменением.При создании стадии для дополнительной воронки её STATUS_ID обязан начинаться с префикса C{ID}:, а сортировка SORT определяет положение на канбане. Семантику новой стадии система вычисляет по её положению: крайняя правая «успешная» и «провальная» зоны формируются автоматически, поэтому после массового создания стадий стоит проверить итоговую семантику через crm.status.list.
Итог
Стадии и воронки в REST Битрикс24 — это связка справочников статусов и категорий. Понимание формата C{ID}:CODE, машинной семантики P/S/F и разницы между crm.category и crm.dealcategory избавляет от большинства ошибок при автоматическом движении сделок.
Мы в B2Bsite настраиваем воронки и автоматику перехода стадий под реальные процессы продаж, связывая их с событиями сайта и 1С. Если движение сделок должно быть управляемым и предсказуемым — поможем спроектировать логику стадий.
Частые вопросы
Как получить список стадий конкретной воронки?
Вызовите crm.status.list с фильтром ENTITY_ID равным DEAL_STAGE_N, где N — идентификатор категории. Для основной воронки используйте просто DEAL_STAGE.
Почему при update сделки возникает ошибка стадии?
Скорее всего STAGE_ID принадлежит другой воронке. Стадия неосновной категории имеет формат C{CATEGORY_ID}:CODE и должна совпадать с CATEGORY_ID сделки.
Как понять, что стадия означает успех?
Смотрите поле SEMANTICS: S — успех, F — провал, P — в работе. Названия стадий у каждого портала разные, а семантика универсальна.
Чем crm.category отличается от crm.dealcategory?
crm.category — универсальное современное семейство для воронок любых сущностей через entityTypeId. crm.dealcategory — более старое, специфичное для сделок; для новых проектов лучше crm.category.
Можно ли создать свою стадию через API?
Да, методом crm.status.add с указанием ENTITY_ID справочника и STATUS_ID новой стадии. Для дополнительной воронки код стадии должен иметь префикс C{ID}:.
Ставится ли CLOSED автоматически?
Да, при переходе на стадию с семантикой S или F поле CLOSED сделки автоматически становится Y. Вручную его менять обычно не требуется.
Поможем с настройкой и поддержкой Для разработчиков
Поможем с настройкой, доработкой и поддержкой Для разработчиков.