n8n Merge: как объединять ветки и данные workflow ¶
Обновлено: 2026-05-29
Merge объединяет данные из двух веток workflow. Это нужно, когда одна ветка получает основную запись, другая — дополнительные данные, а дальше их надо снова собрать в один поток: например, лид + профиль из CRM, товар + цена, пользователь + последние события.
Основные сценарии ¶
| Сценарий | Подход | Пример |
|---|---|---|
| Склеить два списка подряд | Append | Собрать результаты из двух API |
| Объединить записи по id | Combine / matching fields | Лид из формы + строка из базы |
| Дождаться двух веток | Merge как точка синхронизации | После параллельных запросов |
| Сохранить только совпавшие | Inner join-логика | Обработать только найденных клиентов |
Пример: лид + данные из CRM ¶
- Webhook получает заявку и передаёт
email. - Ветка A нормализует заявку через Set / Edit Fields.
- Ветка B ищет контакт в CRM или PostgreSQL по email.
- Merge объединяет две ветки по
email. - IF решает: обновить существующего клиента или создать нового.
Ключ к успешному merge ¶
Перед Merge поля для сопоставления должны называться одинаково и иметь одинаковый формат. Если в одной ветке email в верхнем регистре, а в другой в нижнем, matching может не сработать. Поэтому почти всегда перед Merge стоит Set / Edit Fields.
email: {{ ($json.email || "").toLowerCase().trim() }}
external_id: {{ String($json.id || "") }}Типовые ошибки ¶
- После Merge пусто. Нет совпадений по matching field или поле называется по-разному.
- Записей стало слишком много. Получился cartesian product из-за неуникального ключа.
- Порядок сломался. Не полагайтесь на индекс, если данные приходят из разных API.
- Дубли в Google Sheets. Используйте уникальный ключ и проверку перед append.
Merge или IF? ¶
IF выбирает ветку по условию, Merge собирает ветки обратно. В сложном workflow они часто работают вместе: IF разводит новые и старые записи, Merge соединяет обогащённые данные перед финальной записью.
Как читать эту ноду в execution history ¶
Разбор n8n Merge: как объединять ветки и данные workflow полезен только тогда, когда читатель понимает, что именно нода получает и что отдаёт дальше. В n8n всегда проверяйте input и output ноды рядом: количество items, имена полей, binary data, paired items и ошибки преобразования.
| Проверка | Что смотреть | Типичная проблема |
|---|---|---|
| Item count | сколько items вошло и вышло | фильтр, merge или code случайно потерял строки |
| JSON shape | верхний уровень, вложенные поля, arrays | следующая нода ждёт другое имя поля |
| Expressions | какой item используется в expression | берётся первый item вместо текущего |
| Errors | continue on fail, retry, error branch | ошибка скрыта и дальше уходит пустой результат |
Роль ноды в архитектуре workflow ¶
Для n8n Merge: как объединять ветки и данные workflow заранее назовите ноду по действию: “нормализовать лид”, “получить заказ”, “проверить дубль”, “ответить webhook”. Если название звучит как “тут вся логика”, ноду стоит разделить: отдельно сбор данных, отдельно проверка, отдельно действие.
- одна нода должна делать одно понятное действие
- после внешнего API нормализуйте response в стабильные поля
- сложные условия выносите в IF/Switch или Code node с тестовыми примерами
- после Merge/Loop/Code проверяйте item linking, иначе downstream expressions могут ломаться
- для production добавляйте owner, комментарий и ссылку на runbook или ошибку
Практика использования ноды ¶
Страница n8n Merge: как объединять ветки и данные workflow должна отвечать за поведение ноды, а не за полный бизнес-рецепт. Поэтому при внедрении фиксируйте вход, выход и изменение количества items.
| Проверка | Что посмотреть в execution | Частая ошибка |
|---|---|---|
| Input items | сколько items вошло в ноду и какие поля обязательны | ожидается один item, но приходит массив |
| Output items | сколько items вышло после обработки | последующие ноды получают другой item index |
| Expressions | какие значения реально подставились в параметры | expression возвращает undefined или строку вместо числа |
| Error behavior | останавливает ли нода workflow или продолжает ветку | ошибка скрыта Continue On Fail без логирования |
Практический контекст для внедрения ¶
Эта страница полезна не как абстрактная справка, а как рабочая инструкция под использование ноды/паттерна «n8n Merge: как объединять ветки и данные workflow» в рабочем workflow, где важно понимать входные items и формат результата. Перед изменением workflow зафиксируйте источник события: входные данные по теме merge: webhook, schedule, ручной запуск или событие внешнего сервиса. Так проще отделить ошибку данных от ошибки настройки n8n и не превратить исправление в набор случайных правок.
Минимальная проверка перед публикацией workflow: один happy path, один пустой payload, один повтор события и одна ошибка внешнего сервиса. Для мониторинга используйте successful executions, skipped items, retry count, error branch usage; эти показатели быстро покажут, что сценарий работает иначе, чем ожидалось.
Что читать дальше ¶
Для подготовки ключей смотрите Set / Edit Fields, для ветвлений — IF / Switch.