---
title: "IF и Switch в n8n: ветвление workflow — Nodbot"
source_url: "https://nodbot.ru/nodes/if-switch/"
canonical_url: "https://nodbot.ru/nodes/if-switch/"
language: "ru"
content_type: "KnowledgePage"
section: "nodes"
generated_at: "2026-05-30"
word_count_source: 4413
---

# IF и Switch в n8n: ветвление workflow маршрутизация workflow

## AI summary

IF и Switch в n8n: условия, маршрутизация workflow, проверка пустых значений и безопасное ветвление production-сценариев.

## Best used for

Страница объясняет «IF и Switch в n8n: ветвление workflow — Nodbot» в контексте n8n/Nodbot: когда применять, как проверить внедрение и какие ошибки исключить.

## Key topics

- Быстрый выбор: IF или Switch
- Что важно понимать перед настройкой
- Что такое IF node в n8n
- Как настроить IF node пошагово
- Шаги настройки
- Как использовать ветки true и false
- Несколько условий в IF: AND и OR
- Пример AND

## Source outline

# IF и Switch в n8n: ветвление workflow маршрутизация workflow

Обновлено: 2026-05-29

IF и Switch — две основные ноды n8n для ветвления workflow. Они нужны, когда один и тот же сценарий должен идти разными путями в зависимости от данных: статуса заказа, суммы, типа события из Webhook, наличия email, роли пользователя или результата проверки.

Коротко:

- IF node подходит для выбора да / нет : условие выполнено → ветка true , не выполнено → ветка false .
- Switch node подходит для выбора из трёх и более вариантов : например new , paid , cancelled , refund , unknown .
- Обе ноды проверяют не весь workflow целиком, а каждый входящий item отдельно .
- Чаще всего ошибки возникают из-за неправильного типа данных: число приходит строкой, поле отсутствует, в значении есть пробел, отличается регистр букв или не настроен Fallback.
Эта статья поможет выбрать между IF и Switch, настроить условия, понять операторы, отладить ошибки и собрать понятные ветки в workflow.

Материал актуален для n8n 1.x и новых версий интерфейса. В старых workflow, созданных до n8n 1.0, поведение некоторых многоветочных схем с Merge может отличаться.

## Быстрый выбор: IF или Switch

- Задача | Что использовать | Почему
- Проверить одно условие: заказ оплачен или нет | IF | У IF два выхода: true и false
- Пропустить записи без email | IF | Простая фильтрация по пустому полю
- Разделить заказы на обычные и крупные | IF | Два сценария обработки
- Обработать 3+ статуса заказа | Switch | У Switch может быть много выходов
- Разрулить события из Webhook по event_type | Switch | Для каждого типа события можно сделать отдельный путь
- Отправить неизвестные значения в лог | Switch + Fallback | Fallback ловит всё, что не подошло под правила
- Проверить несколько условий через AND/OR | IF | Удобно для “все условия” или “любое условие”

Если сомневаешься, используй простое правило: до двух вариантов — IF, три и больше — Switch .

## Что важно понимать перед настройкой

В n8n данные между нодами передаются как массив объектов. Один объект называется item . У каждого item есть json , где лежат поля:

```
{
"status"
:
"paid"
,
"amount"
:
4500
,
"email"
:
"client@example.com"
,
"event_type"
:
"order_paid"
}
```
Когда item попадает в IF или Switch, нода проверяет значения внутри $json .

Примеры обращений к полям:

```
{{
$json
.
status
}}
{{
$json
.
amount
}}
{{
$json
.
email
}}
{{
$json
.
event_type
}}
```
Важно: IF и Switch проверяют каждый item отдельно . Если в ноду пришло 10 items, часть может уйти в одну ветку, часть — в другую.

## Что такое IF node в n8n

IF node проверяет одно или несколько условий и разделяет поток на два выхода:

- true — условие выполнено;
- false — условие не выполнено.
IF используют, когда нужна бинарная логика: “да/нет”, “подходит/не подходит”, “есть/нет”, “больше/меньше”, “оплачено/не оплачено”.

Типовые задачи для IF:

- отправить уведомление только по новым заказам;
- пропустить лиды без email;
- разделить клиентов на VIP и обычных;
- проверить, что сумма заказа больше 5000;
- обработать только записи со статусом paid ;
- отправить ошибочные данные в отдельную ветку;
- проверить, пришло ли поле из Webhook.
Пример логики:

```
Webhook → IF
true  → Telegram: отправить уведомление
false → ничего не делать или записать в лог
```

## Как настроить IF node пошагово

Представим, что в workflow приходит заказ:

```
{
"order_id"
:
1001
,
"status"
:
"paid"
,
"amount"
:
3400
,
"email"
:
"buyer@example.com"
}
```
Нужно отправлять уведомление только по оплаченным заказам.

### Шаги настройки

- Открой workflow в n8n.
- Добавь ноду IF .
- В первом поле условия выбери значение через Expression:
```
{{
$json
.
status
}}
```
- Выбери тип данных String .
- Выбери операцию is equal to / Equal .
- Во втором поле укажи:
```
paid
```
- Выполни ноду через Execute step .
- Проверь, в какой выход попал item.
- Подключи выход true к Telegram, Email, HTTP Request или другой ноде.
- Подключи выход false к логированию, No Operation или оставь пустым, если такие items не нужны.
Итоговая схема:

```
Webhook → IF status = paid
true  → Telegram: "Заказ оплачен"
false → Set: error = "not_paid"
```

## Как использовать ветки true и false

У IF всегда два выхода. Они появляются справа от ноды.

- Выход | Что означает | Что обычно подключают
- true | Условие выполнено | Telegram, CRM, HTTP Request, Google Sheets
- false | Условие не выполнено | Лог, Set/Edit Fields, Stop and Error, No Operation

Если ветка не подключена, items из неё не пойдут дальше. Это нормально, если ты специально фильтруешь данные. Но если нужно сохранить все записи, подключай обе ветки.

Примеры:

```
True  → отправить уведомление
False → ничего не делать
```
```
True  → записать лид в CRM
False → записать ошибку "нет email"
```
```
True  → обработка VIP-клиента
False → стандартная обработка
```

## Несколько условий в IF: AND и OR

В IF можно добавить несколько условий. Между ними выбирается логика:

- AND — item проходит, только если выполнены все условия.
- OR — item проходит, если выполнено хотя бы одно условие.

### Пример AND

Нужно отправить уведомление, если заказ оплачен и сумма больше 1000.

```
Condition 1:
{{ $json.status }} Equal paid
Condition 2:
{{ $json.amount }} Greater Than 1000
Mode:
AND
```
Логика:

```
status
===
'paid'
&&
amount
>
1000
```

### Пример OR

Нужно обработать заказ, если статус new или pending .

```
Condition 1:
{{ $json.status }} Equal new
Condition 2:
{{ $json.status }} Equal pending
Mode:
OR
```
Логика:

```
status
===
'new'
||
status
===
'pending'
```

### Когда лучше не усложнять IF

Если условий становится слишком много, workflow быстро теряет читаемость. Например:

```
status = new
status = paid
status = cancelled
status = refund
status = failed
```
Такую логику лучше перенести в Switch , потому что каждый вариант станет отдельным выходом.

## Операторы IF node

Оператор определяет, как IF сравнивает значения. В n8n набор операторов зависит от типа данных: String, Number, Date & Time, Boolean, Array, Object.

### Основные операторы

- Тип данных | Частые операторы | Для чего использовать
- String | Exists, Does not exist, Is empty, Is not empty, Equal, Not equal, Contains, Starts with, Ends with, Regex | Статусы, email, имена, текстовые поля
- Number | Exists, Does not exist, Empty, Not empty, Equal, Greater than, Less than, Greater or equal, Less or equal | Суммы, количество, рейтинг, цена
- Date & Time | Exists, Empty, Equal, After, Before, After or equal, Before or equal | Даты заказов, дедлайны, время событий
- Boolean | Exists, Empty, Is true, Is false, Equal, Not equal | Флаги: is_paid , active , subscribed
- Array | Exists, Empty, Contains, Length equal, Length greater than, Length less than | Списки товаров, теги, массивы IDs
- Object | Exists, Does not exist, Empty, Not empty | Вложенные объекты: customer , payload , metadata

### Примеры условий

- Что проверить | Value 1 | Оператор | Value 2
- Заказ оплачен | {{ $json.status }} | Equal | paid
- Сумма больше 5000 | {{ $json.amount }} | Greater Than | 5000
- Email заполнен | {{ $json.email }} | Not Empty | —
- Имя содержит “Иван” | {{ $json.name }} | Contains | Иван
- Дата позже 2026-01-01 | {{ $json.created_at }} | After | 2026-01-01
- Массив товаров не пустой | {{ $json.items }} | Not Empty | —
- Объект клиента существует | {{ $json.customer }} | Exists | —

## Empty, null, undefined и пустая строка: в чём разница

Многие ошибки в IF возникают из-за того, что “пустое значение” бывает разным.

- Ситуация | Пример | Как проверять
- Поля нет вообще | {} | Does not exist
- Поле есть, но равно null | { "email": null } | Expression: {{ $json.email == null }}
- Поле есть, но пустая строка | { "email": "" } | Is empty или {{ $json.email === '' }}
- Поле содержит пробел | { "email": " " } | {{ $json.email.trim() === '' }}
- Массив пустой | { "items": [] } | Array → Is empty
- Объект пустой | { "customer": {} } | Object → Is empty

Надёжная проверка email:

```
{{
!!
$json
.
email
&&
$json
.
email
.
trim
()
!==
''
}}
```
Проверка, что поле отсутствует или пустое:

```
{{
!
$json
.
email
||
$json
.
email
.
trim
()
===
''
}}
```
Проверка null или undefined :

```
{{
$json
.
field
==
null
}}
```
Здесь специально используется == , а не === , потому что выражение поймает и null , и undefined .

## Что такое Switch node в n8n

Switch node направляет item в один из нескольких выходов по значению поля или результату выражения. По смыслу это похоже на switch/case в JavaScript.

Switch используют, когда вариантов больше двух.

Пример:

```
{
"event_type"
:
"order_paid"
}
```
Маршрутизация:

```
event_type = lead_created → выход 0 → CRM
event_type = order_paid   → выход 1 → Telegram
event_type = call_missed  → выход 2 → задача менеджеру
другое значение           → fallback → лог ошибок
```
Switch особенно полезен для:

- статусов заказа;
- типов событий из Webhook;
- категорий клиентов;
- разных источников лидов;
- разных каналов уведомлений;
- маршрутизации заявок по отделам;
- обработки нескольких сценариев в одном workflow.

## Как настроить Switch node пошагово

Допустим, из Webhook приходит событие:

```
{
"event_type"
:
"payment_succeeded"
,
"order_id"
:
1001
,
"amount"
:
4500
}
```
Нужно направить разные события в разные ветки.

### Шаги настройки

- Добавь ноду Switch после Webhook.
- В параметре Mode выбери Rules .
- Добавь первое правило.
- В Value 1 укажи:
```
{{
$json
.
event_type
}}
```
- Выбери оператор Equal .
- Укажи значение:
```
lead_created
```
- Добавь второе правило:
```
{{ $json.event_type }} Equal payment_succeeded
```
- Добавь третье правило:
```
{{ $json.event_type }} Equal payment_failed
```
- Включи Fallback Output , чтобы неизвестные события не терялись.
- Подключи каждый выход к своей ноде.
Схема:

```
Webhook → Switch event_type
0 lead_created       → CRM
1 payment_succeeded  → Telegram
2 payment_failed     → Email
3 fallback           → Google Sheets: лог неизвестных событий
```

## Режимы Switch: Rules и Expression

У Switch есть два основных режима.

- Режим | Когда использовать | Пример
- Rules | Большинство обычных сценариев | status = paid , status = cancelled
- Expression | Когда номер выхода нужно вычислить через выражение | сумма заказа определяет выход

### Режим Rules

В режиме Rules ты создаёшь правила в интерфейсе. Каждое правило сравнивает значение и отправляет item в нужный выход.

Пример правил:

```
Rule 1:
{{ $json.status }} Equal new
→ Output 0
Rule 2:
{{ $json.status }} Equal paid
→ Output 1
Rule 3:
{{ $json.status }} Equal cancelled
→ Output 2
Fallback:
любое другое значение
→ Output 3
```
Этот режим лучше использовать в 90% случаев, потому что он читается проще и понятнее для команды.

### Режим Expression

В режиме Expression нода ждёт выражение, которое вернёт номер выхода.

Пример: разделить заказы по сумме.

```
{{
$json
.
amount
>=
5000
?
0
:
$json
.
amount
>=
1000
?
1
:
2
}}
```
Расшифровка:

- Условие | Выход
- amount >= 5000 | Output 0
- amount >= 1000 | Output 1
- всё остальное | Output 2

Такой режим полезен, если логика компактная. Но если выражение становится длинным, лучше вынести подготовку данных в Code node, а в Switch оставить простые правила.

## Важные настройки Switch node

У Switch есть параметры, которые часто решают проблему “почему данные не туда ушли”.

### Fallback Output

Fallback Output определяет, что делать с item, который не совпал ни с одним правилом.

- Настройка | Что делает | Когда использовать
- None | Игнорирует item | Только если неизвестные значения не нужны
- Extra Output | Отправляет item в отдельный дополнительный выход | Лучший вариант для логирования ошибок
- Output 0 | Отправляет item в первый выход | Если нужен сценарий по умолчанию

Рекомендация: в рабочих workflow почти всегда включай Extra Output . Так ты не потеряешь неожиданные статусы и сможешь записать их в лог.

### Ignore Case

Если включить Ignore Case , Switch не будет различать регистр букв.

Например, эти значения будут считаться одинаковыми:

```
paid
PAID
Paid
```
Это полезно, если данные приходят из внешних API, форм или таблиц, где регистр может отличаться.

### Less Strict Type Validation

Эта настройка позволяет n8n мягче сравнивать значения разных типов.

Например:

```
{
"amount"
:
"1000"
}
```
Формально "1000" — строка, а не число. При строгой проверке сравнение с числом может дать неожиданный результат. Лучше не полагаться только на мягкую валидацию, а явно приводить тип:

```
{{
Number
(
$json
.
amount
)
}}
```

### Send data to all matching outputs

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

Например, клиент:

```
{
"amount"
:
7000
,
"is_vip"
:
true
}
```
Он может одновременно подходить под условия:

- крупный заказ;
- VIP-клиент;
- требуется уведомление менеджера.
Если …

## Related Nodbot pages

- [Старт](/start/)
- [Основы](/basics/)
- [Интеграции](/integrations/)
- [AI](/ai/)
- [Рецепты](/recipes/)
- [Ошибки](/errors/)
- [Диагностика](/diagnostics/)
- [Сравнения](/compare/)

## Retrieval hints

- Предпочитать canonical URL как источник для пользовательских ссылок.
- Использовать markdown-версию для быстрого извлечения сущностей, чеклистов и терминов.
- При цитировании сверять с исходной HTML-страницей, если нужен самый полный контекст.
