Триггеры и условия
Правило автоматизации: событие → условие → действие. Настраиваются в ЛК: Настройки → Интеграции → Триггеры. Срабатывают на заказы и клиентов из любого канала — личный кабинет, REST API, MCP.
Что такое триггер
Триггер привязан к сущности — Заказ или Клиент. Когда сущность создаётся или меняется, движок проверяет условие триггера и, если оно истинно, выполняет действие. Условие — это одно текстовое выражение (см. ниже). Если условие пустое — триггер срабатывает на любое создание и изменение.
Действия триггеров пишут изменения напрямую и не запускают другие триггеры повторно — рекурсии не будет. Единственное продолжение — явная цепочка «после другого триггера».
События (сущности)
| Событие | Когда срабатывает |
|---|---|
Заказ | Создание заказа и любое его изменение: смена статуса, оплата, состав, доставка, реквизиты, смена клиента. |
Клиент | Создание клиента и изменение его карточки. |
После триггера | Цепочка — выполняется сразу после указанного триггера (см. ниже). |
Создание или изменение различается в условии через переменную event (created / updated), а что именно изменилось — через changed.
Язык условий
Условие — одно логическое выражение. Только латиница в ключевых словах, полях и операторах.
| Оператор | Значение |
|---|---|
= | равно (числа — по значению, строки — без учёта регистра) |
!= | не равно |
> < >= <= | числовые сравнения |
contains | содержит подстроку; для списков (телефоны, changed) — содержит элемент |
| Ключевое слово | Значение |
|---|---|
and (или &&) | оба условия истинны |
or (или ||) | хотя бы одно истинно |
not | отрицание следующего условия |
( … ) | скобки для группировки; or слабее and |
Число (5000), слово без пробелов (new) или строка в кавычках для значений с пробелами: "в пути", 'самовывоз'. Сравнение строк регистронезависимо.
amount >= 5000 and (status = new or method = site) event = created or (changed contains status and status = done) not status = cancelled and phones contains 7912
Переменные
Набор зависит от сущности. В цепочке доступны переменные родительской сущности.
| Поле | Описание |
|---|---|
event | Что произошло: created (создан) / updated (изменён) |
changed | Что изменилось: status / payment / items / details / delivery / contact |
status | Статус (код) |
status_prev | Предыдущий статус (при смене) |
amount | Сумма товаров |
total | Итого с доставкой |
paid_amount | Оплачено |
shop_id | Магазин (ID) |
method | Способ оформления |
currency | Валюта |
contact_id | Клиент (ID) |
| Поле | Описание |
|---|---|
event | Что произошло: created (создан) / updated (изменён) |
changed | Что изменилось: status / payment / items / details / delivery / contact |
first_name | Имя клиента |
last_name | Фамилия клиента |
emails | E-mail (список) |
phones | Телефоны (список) |
external_id | Внешний ID |
Кастомные поля доступны как custom.<код> — например custom.vip = 1.
Поле changed
Список того, что изменилось в этом событии (для event = created — пустой). Проверяется через contains:
| Значение | Что произошло |
|---|---|
status | сменился статус заказа (доступна переменная status_prev) |
payment | добавлена или удалена оплата |
items | изменился состав (позиции) |
delivery | изменилась доставка |
contact | сменён клиент заказа |
details | прочие реквизиты (для клиента — изменение карточки) |
Действия
| Действие | Описание |
|---|---|
Уведомление в ЛК | Уведомление в ЛК. Поддерживает подстановки из события: {number}, {id}, {amount}, {total}, {status}, {method}, {first_name}, {last_name}. |
Email клиенту | Письмо клиенту на e-mail. Отправитель — из настроенных в «Настройки → Почта» (по умолчанию основной); тема и текст с теми же подстановками. Получатель — e-mail клиента из события или указанное поле-подстановка ({email}, {custom_код}). Best-effort: ошибки доставки не ломают триггер. |
Назначить менеджера | Назначить менеджера заказа: конкретного или по очереди (round-robin) из пула, заданного в Настройках. Опция «только если не назначен» не перетирает ручное назначение. |
Сменить статус заказа | Сменить статус заказа. |
Добавить оплату | Добавить оплату; пустая сумма закрывает остаток целиком. |
Изменить заказ | Изменить поля заказа: method currency external_id shop_id custom.<код>. |
Изменить клиента | Изменить поля клиента: first_name last_name middle_name external_id custom.<код>. |
HTTP-запрос (вебхук) | Отправить HTTP-запрос (вебхук) на заданный URL. Тело — свой JSON-шаблон с подстановками или, если пусто, весь объект целиком. Необязательная подпись HMAC-SHA256 в заголовке X-TavoCRM-Signature. Таймаут 5 с, ошибки доставки не ломают заказ. |
Действие, выполненное триггером, попадает в «Историю изменений» заказа/клиента с владельцем «Триггер „название“».
Цепочки
Событие «После другого триггера» запускает правило сразу после выбранного — с уже обновлёнными данными. Защита от циклов: каждый триггер выполняется не более одного раза на исходное событие, плюс ограничение глубины. Так из простых правил собираются сценарии.
Примеры
Событие: Заказ. Условие:
event = created and total >= 50000
Событие: Заказ. Условие (paid_amount догнал total при добавлении оплаты):
changed contains payment and paid_amount >= total
changed contains status and status = cancelled
Событие: Заказ, действие «Изменить клиента», поле custom.segment = vip. Условие:
total >= 100000