> For the complete documentation index, see [llms.txt](https://docs.salebot.pro/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.salebot.pro/crm-sistema/sdelki-v-crm.md).

# Сделки в CRM

Сделки в CRM отображаются в виде карточек с информацией о клиенте, названии сделок, описании и суммы.&#x20;

<div data-with-frame="true"><figure><img src="/files/kxndaTrUQEiXGdXA5HlD" alt=""><figcaption><p>Рис. 19. Отображение сделок в CRM</p></figcaption></figure></div>

При необходимости можно добавить и другие поля (например, переменные) (см. рис. 8 — 12).

## Кнопка "Создать сделку"

<div data-with-frame="true"><figure><img src="/files/wES9acCWhhHEWvkN66M6" alt="" width="375"><figcaption></figcaption></figure></div>

<p align="center">Рис. 20. Кнопка "Создать сделку"</p>

Создать сделку - модальное окно создания новой сделки:

<div data-with-frame="true"><figure><img src="/files/RAgqx5SE6emtfGfKbvvh" alt=""><figcaption></figcaption></figure></div>

<p align="center">Рис. 21. Модальное окно создания сделки</p>

Вы можете заполнить все данные в форме и создать клиента. Если клиент есть в базе клиентов, то salebot предложит выбрать данного клиента:

<div data-with-frame="true"><figure><img src="/files/BOQ0Fiahv0jSuq1GF9z6" alt="" width="563"><figcaption></figcaption></figure></div>

<p align="center">Рис. 22. Выбор клиента из существующих в системе <br>(p.s. все данные вымышлены, совпадения случайны)</p>

В случае, если клиента нет, то для создания клиента в проекте должен быть подключен или WhatsApp или email-бот - в эти каналы вы можете писать первым, поэтому создание клиента пройдет успешно, даже если клиент не найден в базе.

Также можно выбрать состояние воронки, в которое будет добавлена сделка:

<div data-with-frame="true"><figure><img src="/files/dmTcJRhrEyn0L4v5WPII" alt="" width="563"><figcaption></figcaption></figure></div>

<p align="center">Рис. 23. Выбор воронки и состояния, где будет создана сделка</p>

Также в окне модальной формы можно добавить переменные сделки:

<div data-with-frame="true"><figure><img src="/files/m7rNCisuhY4hUaAZUdjL" alt="" width="563"><figcaption></figcaption></figure></div>

<p align="center">Рис. 24. Вкладка "Переменные сделки" в окне создания сделки</p>

Далее нажмите "Создать", чтобы сделка была добавлена в систему.

## Кнопка "Быстрое добавление"

Данная кнопка также поможет добавить нового клиента в CRM-систему вручную.&#x20;

<div data-with-frame="true"><figure><img src="/files/ojm4yhqBIJV5p6bXuWGq" alt="" width="563"><figcaption></figcaption></figure></div>

<p align="center">Рис. 25. Кнопка "Быстрое добавление"<br>(p.s. все данные вымышлены, совпадения случайны)</p>

Кликните по кнопке (рис. 25), чтобы открылось окно с полями для заполнения информации о клиенте:

<div data-with-frame="true"><figure><img src="/files/gUa84Z1GlBT6aleZf5xM" alt="" width="563"><figcaption></figcaption></figure></div>

<p align="center">Рис. 26. Окно для быстрого добавления сделки<br>(p.s. все данные вымышлены, совпадения случайны)</p>

Таким образом, сделка будет создана в состоянии "Заинтересовались":

<div data-with-frame="true"><figure><img src="/files/sEz48sO8s4k7jElwIFUm" alt="" width="281"><figcaption></figcaption></figure></div>

<p align="center">Рис. 27. Сделка, созданная с <br>помощью кнопки "Быстрое добавление"</p>

{% hint style="success" %}
Готово!&#x20;

Теперь вы знаете, как создавать сделки.
{% endhint %}

## Создать сделку из чат-бота

<div data-with-frame="true"><figure><img src="/files/2aWTC85cPTxBQL8Az7uL" alt=""><figcaption></figcaption></figure></div>

<p align="center">Рис. 28. Пример схемы чат-бота <br>для создания сделки с помощью функции</p>

Порядок действий:

1. Создайте блок с условием ("Стартовое условие"):

<div data-with-frame="true"><figure><img src="/files/SUPDTSJR6VQYBQi8sRCo" alt=""><figcaption></figcaption></figure></div>

<p align="center">Рис. 29. Настройки блока "Стартовое условие"</p>

В этом блоке обозначим простую информацию для клиента.

2. Создайте блок ниже, соединенный стрелкой с предыдущим блоком:

<div data-with-frame="true"><figure><img src="/files/Oe7v2Fab5JPnRxqsrMa9" alt=""><figcaption></figcaption></figure></div>

<p align="center">Рис. 30. Настройки блока с кнопками</p>

В данном блоке созданы кнопки с функцией "По умолчанию" и текстом "Многостраничный сайт", "Одностраничный сайт". При выборе клиентом кнопки он перейдет в один из блоков "Состояние", а с помощью стрелок мы передали переменную description и активировали чекбокс "Пользователь вводит данные":

<div data-with-frame="true"><figure><img src="/files/C3N34krNRPYSjEjCjGSY" alt=""><figcaption></figcaption></figure></div>

<p align="center">Рис. 31. Настройки стрелки</p>

3. Далее в блоках, к которым ведут стрелки "Многостраничный сайт" и "Одностраничный" сайт запрашиваем номер телефона клиента и сразу объявляем переменную budget со стоимостью услуги (сделки):

<div data-with-frame="true"><figure><img src="/files/MIdLYtGsFhoGmNMkYndI" alt=""><figcaption></figcaption></figure></div>

<p align="center">Рис. 32. Настройки блока с объявлением переменной budget</p>

4. Далее создадим два блока: "Состояние" и "Не состояние". Данные блоки нам понадобятся для проверки номера телефона клиента.&#x20;

<div data-with-frame="true"><figure><img src="/files/veNVo6l2XlGOMg8UT5T5" alt=""><figcaption></figcaption></figure></div>

<p align="center">Рис. 33. Настройки стрелки: проверка номера телефона и <br>объявление переменной для сохранения номера клиента в системе</p>

В условии стрелки указываем регулярное выражение для проверки валидности номера телефона, а выбор соответствия выбираем "Регулярное выражение".

Также активируем чекбокс "Пользователь вводит данные" и указываем переменную phone.

Если клиент введет номер телефона с ошибкой, например, 89938383ааа, то отработается блок "Не состояние" — клиенту будет необходимо повторно ввести номер телефона.&#x20;

Если номер телефона пройдет проверку, то клиент перейдет в следующий блок "Как вас зовут?"

5. Предпоследним блоком в схеме будет блок "Состояние", в котором будем спрашивать у клиента его имя.

<div data-with-frame="true"><figure><img src="/files/SBJpqki2339BVI7LhvOE" alt=""><figcaption></figcaption></figure></div>

<p align="center">Рис. 34. Блок "Состояние" для запроса имени клиента</p>

Из данного блока (рис. 34) протягиваем стрелку со сбором данных:

<div data-with-frame="true"><figure><img src="/files/SrHWKW4PXJAoULAEK7a2" alt=""><figcaption></figcaption></figure></div>

<p align="center">Рис. 35. Настройки стрелки со сбором данных в виде<br>имени клиента</p>

В стрелке активируем чекбокс "Пользователь вводит данные" и указываем переменную client\_name.

6. В последнем блоке прописываем функцию для создания сделки в CRM системе:

<div data-with-frame="true"><figure><img src="/files/GtFGlU0ZGaoe7k20zr1l" alt=""><figcaption></figcaption></figure></div>

<p align="center">Рис. 36. Блок "Состояние" с функцией для создания сделки</p>

**Функция create\_order(name, budget, description, client\_name, phone, email, state\_id) - для создания сделки из чат-бота в CRM**

<details>

<summary>Параметры</summary>

Текущая активная сделка в воронке вместе с переменными станет доступна только в функциях для работы со сделками и в CRM.&#x20;

<table><thead><tr><th width="303.3046875">Параметры</th><th>Значение</th></tr></thead><tbody><tr><td><strong>name</strong></td><td><p>название сделки. </p><p>Необязательный параметр, если не передан, то применит к текущей активной сделке клиента</p></td></tr><tr><td><strong>budget</strong></td><td>стоимость сделки (число).  Необязательный параметр, если не передан, то применит к текущей активной сделке клиента<br>Если передать в параметре <strong>budget</strong> не число, функция вернет ответ: <strong>'budget must be a number'</strong></td></tr><tr><td><strong>description</strong> </td><td>Описание сделки. Необязательный параметр;</td></tr><tr><td><strong>client_name</strong></td><td>(необязательный параметр) строка, имя для нового клиента</td></tr><tr><td><strong>phone</strong></td><td>(необязательный параметр)  строка, телефон для нового клиента</td></tr><tr><td><strong>email</strong></td><td>(необязательный параметр)  строка, емейл для нового клиента</td></tr><tr><td><strong>state_id</strong> </td><td>число, позволяет указать состояние, в котором будет сделка после создания, необязательный параметр</td></tr></tbody></table>

{% hint style="info" %}
Для создания клиента должна быть указана переменная phone или email. Если указана phone, и клиента с таким телефоном в проекте нет, то будет создан новый.

Если указана переменная email без переменной phone, и клиента в проекте с таким адресом нет, будет создан новый.
{% endhint %}

</details>

В схеме мы поэтапно собрали следующие данные:

* Name - название сделки (в примере это "Многостраничный сайт" или "Одностраничный лендинг" — рис. 30-31);
* Budget — стоимость сделки, которую объявили в блоках после выбора клиентом типа сайта (рис. 32);
* Phone — номер телефона клиента (рис. 33);
* Client\_name — имя клиента (рис. 34-35).&#x20;

<div data-with-frame="true"><figure><img src="/files/sMGzkPwFEi540BfWT7sm" alt=""><figcaption></figcaption></figure></div>

<p align="center">Рис. 37. Блок "Состояние" с функцией для создания сделки</p>

При необходимости создания сделки в определенном состоянии сделки, передайте параметр state\_id:

<div data-with-frame="true"><figure><img src="/files/jhzGoKVt1ed5dTA8sevk" alt="" width="563"><figcaption></figcaption></figure></div>

<p align="center">Рис. 38. Передача id состояния сделки</p>

{% hint style="info" %}
Важно!&#x20;

Если вы не передаете какие-либо параметры, то вместо параметра передайте none (как на рис. 36, где вместо параметра email указан none).
{% endhint %}

Где найти id состояния (параметр state\_id):

<div data-with-frame="true"><figure><img src="/files/eFABSvBKBjB9cX4hmjPi" alt="" width="563"><figcaption></figcaption></figure></div>

<p align="center">Рис. 39. Меню дополнительных настроек состояния</p>

ID состояния:

<div data-with-frame="true"><figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcc7z-CsqHVfmZq-RA1SXr0YO3G1UOEeFxykLkOXz3kCGXpwN7_GjOEMkuaKTVvItclZ3_4y0KYjSZ25zeFPrYwiSJBAQ5KCX6tm59Ma4Knk6xCaiNVoT_6J8HVIdDmsYYPnvQ9aQ?key=-rPG2GUEvYW_RB8HLUT5kg" alt="" width="563"><figcaption></figcaption></figure></div>

<p align="center">Рис. 40. ID состояния</p>

Теперь бот будет отрабатывать следующим образом:

<div data-with-frame="true"><figure><img src="/files/15qqLYReKcK0Y7ahFsBC" alt="" width="375"><figcaption></figcaption></figure></div>

<p align="center">Рис. 41. Тестирование бота в Telegeam</p>

После чего вы можете найти сделку в том состоянии воронки, ID которого передали в функции create\_order:

<div data-with-frame="true"><figure><img src="/files/ZtgbJxxINw3ZIfutESmW" alt="" width="283"><figcaption></figcaption></figure></div>

<p align="center">Рис. 42. Пример созданной<br>сделки с помощью функции</p>

В разделе "Клиенты" вы сможете увидеть созданного клиента, посмотреть с ним переписку и увидеть сделки.

## Другие настройки

* Строка поиска - поиск сделки по имени клиента.

<div data-with-frame="true"><figure><img src="/files/7GwskQr6836b4ul5ZBpf" alt=""><figcaption></figcaption></figure></div>

<p align="center">Рис. 43. Строка поиска сделки</p>

* Фильтр - позволяет фильтровать сделки с указанием различных параметров. Так же вы можете сохранить созданный фильтр, если часто его используете.

<div data-with-frame="true"><figure><img src="/files/UnFdluks0GKrg7EMh2tt" alt=""><figcaption></figcaption></figure></div>

<p align="center">Рис. 44. Фильтр для сделок</p>

## Запуск бота при смене состояния воронки

Вы можете запустить бота при перемещении сделки по этапу воронки в CRM. Для включения данной функции перейдите в настройки проекта:

<div data-with-frame="true"><figure><img src="/files/WwckUyaTxosssjtk0k0d" alt="" width="200"><figcaption></figcaption></figure></div>

<p align="center">Рис. 45. Вкладка с настройками<br>проекта</p>

\
Далее перейдите в раздел Callback's:

<div data-with-frame="true"><figure><img src="/files/pqHTy666KtSSNjGas1h2" alt=""><figcaption></figcaption></figure></div>

<p align="center">Рис. 46. Вкладка Calbacks в настройках проекта</p>

Нажмите на "Настройки колбеков при переходе между этапами CRM":

<div data-with-frame="true"><figure><img src="/files/vgBHyyI586ZoxBHvfFgj" alt="" width="563"><figcaption></figcaption></figure></div>

<p align="center">Рис. 47. Переход в настройки колбеков для CRM</p>

После чего вам откроется модальное окошко со всеми воронками, которые существуют в проекте, где необходимо выбрать всю воронку или только определенное состояние:

<div data-with-frame="true"><figure><img src="/files/ZO5CzdGeEITu9kiODTCZ" alt="" width="563"><figcaption></figcaption></figure></div>

<p align="center">Рис. 48. Выбор воронки или состояний воронки</p>

Затем сохраните настройки.&#x20;

Теперь при смене состояния сделки (в автоматическом или ручном режиме) из любого места на сайте сгенерируется уведомление, с помощью которого можно настроить реакцию в боте.

{% hint style="info" %}
Уведомление умеет вид: **crm\_state\_changed Имя воронки:Название этапа**
{% endhint %}

Также в карточке клиента появится переменная **callback\_query\_id**, в которой будет сохранен идентификатор сделки, для которой отправлено уведомление

<div data-with-frame="true"><figure><img src="/files/NEtetmjTS4Swqvi14pkZ" alt="" width="563"><figcaption></figcaption></figure></div>

<p align="center">Рис. 49. Вид колбека при смене состояния</p>

Чтобы запустить бота на это событие, необходимо указать текст колбека (уведомления) в поле  Условие стрелки или любого блока с условием ("Стартовое условие", "Не состояние с условием").&#x20;

<div data-with-frame="true"><figure><img src="/files/TgQP7A46EEVbnKMaNR0F" alt="" width="563"><figcaption></figcaption></figure></div>

<p align="center">Рис. 50. Настройка реакции с помощью блока "Не состояние с условием"</p>

<div data-with-frame="true"><figure><img src="/files/WH4gYVC8I9FSeVIdqf4j" alt="" width="563"><figcaption></figcaption></figure></div>

<p align="center">Рис. 51. Настройка реакции с помощью блока "Стартовое условие"</p>

{% hint style="info" %}
Если вы не хотите выбивать клиента из основной схемы чат-бота, воспользуйтесь блоком "Не состояние с условием" — в этот блок нельзя перейти, поэтому клиента после реакции на уведомление (колбек) не выбьет из основной воронки, но сообщение все равно будет отправлено.

А если вам нужно продолжить воронку с реакции на смену состояния, то используйте блок "Стартовое условие", тогда клиент перейдет в блок "Стартовое условие" с реакцией на колбек, с которого вы можете продолжить воронку.
{% endhint %}

### Перемещение сделок

Для перемещения сделки в любое состояние воронки достаточно захватить ее левой кнопки мыши и переместить в необходимое состояние:

<div data-with-frame="true"><figure><img src="/files/edSsQE8MT2avbDhJRIow" alt="" width="563"><figcaption></figcaption></figure></div>

При перемещении сделки в "Проваленные" или "Архив" появляется модальное окно с просьбой указать причину перемещения, далее создается переменная сделки failed\_reason или achived\_reason соответственно.

В failed\_reason или achived\_reason и вписывается текст причина перемещения в проваленные, при восстановлении сделки обратно будет добавляться переменная restored\_from\_failed или restored\_from\_archived со значением "true"

## Установить запрет на перемещение сделки в указанное состояние

Если необходимо ограничить стадии в которые сделки будет перемещена при ручном перемещении, то настройте запрет в настройках состояния. \
Откройте воронку и перейдите в настройки состояния.&#x20;

<div data-with-frame="true"><figure><img src="/files/HDvuza0qYaDZ1YWHpap2" alt="" width="440"><figcaption></figcaption></figure></div>

В настройках состояния вы можете задать состояния, в которые сделку нельзя будет перенести. Отмечать выбранные этапы воронки необходимо в чек-боксе. Вы можете указать несколько состояний. После того, как все необходимые состояния будут выбраны, сохраните изменения.&#x20;

<div data-with-frame="true"><figure><img src="/files/Zw7KFIJhLJfg112Ke0iM" alt="" width="563"><figcaption></figcaption></figure></div>

После того, как настройки будут сохранены, при перемещении сделки в разделе SalebotCRM недоступные состояния будут визуально отличаться по цвету. Они станут темнее, и возможность переноса будет ограничена. В диалоге с клиентом, запрещенные состояния отображаться не будут если установлен запрет на перенос.&#x20;

## Реакция на удаление сделки в CRM

При удалении сделки в CRM в бот клиенту приходит колбек об этом **crm\_lead\_removed**

<div data-with-frame="true"><figure><img src="/files/R3Kl6hdImNXE2ehxXfey" alt=""><figcaption><p>Callback об удалении сделки</p></figcaption></figure></div>

## Функции API Salebot

{% hint style="info" %}
Для работы со сделками в чат-боте можно использовать функции API в калькуляторе.

Подробнее о функциях читайте в статье "[Для работы со сделками](/chatbots/peremennye-i-funkcii/kalkulyator/dlya-raboty-so-ssylkami.md)".
{% endhint %}

## Переключение сделок

Если на странице CRM происходят действия со сделками, то приходят колбеки со следующими ключевыми словами:

1. change\_responsible\_order - у сделки поменяли ответственного
2. crm\_state\_changed - сделку перенесли по стадиям воронки
3. crm\_system\_state\_changed - сделку перенесли в Проваленные, Успешные или Архивные
4. crm\_lead\_removed - сделку удалили

Также в переменные клиента записывается переменная "callback\_order\_id", содержащая id сделки, с которой происходили действия на странице CRM.

<div data-with-frame="true"><figure><img src="/files/RZBLdTcmhMoa1iQJSxBK" alt=""><figcaption></figcaption></figure></div>

При обработке такого колбека в блоке сделка временно становится активной - то есть в этом блоке можно обращаться к её переменным.

При переходе в следующий блок работает стандартная логика Salebot - при обращении к переменным сделки пользователь получит значения для последней сделки клиента.

### Переключение сделки в активное состояние в боте

**switch\_order(order\_id)** - позволяет переключить сделку в активное состояние, чтобы обращаться к её переменным

order\_id - необязательный параметр, id сделки. Если не передавать, то активной станет последняя сделка Клиента.&#x20;

В функцию switch\_order(order\_id) нужно передать id сделки, тем самым сделать эту сделку активной. Если вызвать эту функцию в калькуляторе и передать id желаемой сделки, то далее в блоке можно обращаться к переменным этой сделки.

<div data-with-frame="true"><figure><img src="/files/NKzA4bLxcSgCUvQb8Ku4" alt="" width="563"><figcaption></figcaption></figure></div>

Если в функцию switch\_order передать id удалённой или несуществующей сделки, то переключения не произойдет, и функция вернет id той сделки, которая сейчас установлена активной у Клиента (или None, если у Клиента нет активной сделки).

Таким образом можно проверить, произошло ли переключение сделки, сравнив order\_id, который был передан в функцию, с тем результатом, что она вернула:

`switch_result = switch_order(order_id)`

`РЕЗУЛЬТАТ = if(switch_result == order_id, value_if_true, value_if_false)`

<div data-with-frame="true"><figure><img src="/files/bILp3yXmcFTLtufBTTJu" alt="" width="563"><figcaption></figcaption></figure></div>

Если в функцию switch\_order не передавать ничего, то функция сделает активной последнюю сделку Клиента, таким образом можно откатывать переключение сделки (после переключения сделки или в блоке, обрабатывающем колбеки от CRM, если не требуется делать временно активной сделку, по которой пришел колбек)
