Ресёрч: инспекторы нод (Email / Delay / If-Else / Action) у конкурентов

Шаг 1 задачи MLF-287 («Сценарии: достроить ключевые ноды до конкурентного MVP»). Основа для макетов инспекторов в Claude Design → согласование с М. Терентьевым → реализация.

Метод: deep-research (fan-out поиск → фетч 23 источников → 93 утверждения → состязательная верификация 25 ключевых, 3 голоса на claim → синтез). Дата: 2026-07-09. Продукты: ноды 1–3 (Email/Delay/If) — Customer.io, Braze, Klaviyo, Iterable; нода 4 (ACTION, §4) — добавились HubSpot, ActiveCampaign, n8n (отдельный добор). Mailchimp / Ortto подтверждёнными данными почти не покрыты — см. «Пробелы».


TL;DR для проектирования

Инспекторы конкурентов сходятся на устойчивых паттернах — их и берём за базу MVP:


1. EMAIL / Send-message нода

Что показывает инспектор (подтверждено):

Терминология конкурентов: Send behavior, Queue Draft / Send Automatically (Customer.io); Variants / Control group (Braze).

Рекомендация для MVP-инспектора Email: ✓ реализована в макете.

  1. Выбор Message (из библиотеки) + предпросмотр — как в задаче. ✓ Тема + режим (шаблон / HTML) + ID шаблона.
  2. Режим отправки (тумблер). ✓ Сегмент-переключатель «Черновик / Автоматически», дефолт — черновик.
  3. A/B — за рамками MVP, но заложить место в config-schema. ✓ В макете задел-блок «за рамками MVP».
  4. from / reply-to / subject — ✓ в инспекторе ноды; частотные лимиты — остаются open question (см. §Открытые вопросы).

2. DELAY / Wait нода

Три независимые модели задержки — их удобно сделать режимами одной ноды (radio/tabs):

A. Фиксированная длительность (подтверждено, Klaviyo) Wait N Minutes / Hours / Days — минимальный универсальный контрол. Это и есть базовый Delay из задачи MLF-287.

B. Ожидание до момента (подтверждено, Klaviyo + Customer.io)

C. Wait until (ожидание условия/события) (подтверждено, Customer.io)

Терминология: Time delay, Delay until, Time Window, Wait Until, Maximum wait time.

Рекомендация для MVP: режим A (фикс. N мин/час/дн) — обязателен, соответствует задаче. Режим C с max-wait-таймаутом стоит спроектировать сразу, т.к. If/Else по реакции («открыл в течение 2 дней») по сути = delay-until-event с таймаутом. Режим B (окно доставки) — nice-to-have, заложить в schema.

Реализация в макете (нода «Пауза»): режим A (фикс. длительность) — есть. Режим B (до момента: время суток + дни недели + таймзона) — есть как переключатель, окно доставки помечено заделом. Режим C уточнён при реализации: отдельного «wait-until с таймаутом» не делаем — «открыл в течение N» собирается связкой Пауза → Условие (см. §3), это чище, чем таймер внутри ноды.


3. IF/ELSE / branch / decision нода

Существует в двух формах — их стоит различать и в нашем UI:

Форма 1 — бинарный yes/no (подтверждено у всех: Braze / Iterable / Customer.io / Klaviyo)

Форма 2 — множественный switch (подтверждено, Braze / Customer.io / Iterable)

По каким условиям ветвят (подтверждено):

Терминология: Decision Split / Audience Paths (Braze), Yes-No Split / Attribute Split (Iterable), True-False / Multi-Split / Random Cohort (Customer.io), Conditional Split (Klaviyo).

Рекомендация для MVP (главный дифференциатор задачи):реализована в макете (editor-ui-redesign.html, нода «Условие»).

⚠️ Терминологическое уточнение по макету: нода «Условие» — это и есть этот If/Else (развилка да/нет). Отдельная нода «Фильтр» — не про §3: она отсеивает контактов (два выхода «прошёл / отсеян», кто не подходит — дальше не идёт), и в макете тоже обновлена под тот же билдер.


4. ACTION / update-attribute / tag нода

Добор отдельным прогоном (6 углов, 25 источников, 88 утверждений → 25 верифицировано, 25/25 подтверждено). Дата: 2026-07-09.

4.1 UPDATE-ATTRIBUTE / update-profile

Главный вывод: типизированные операции increment/append как first-class-контрол — редкость. Конкуренты идут тремя путями:

Продукт Нода set increment append/list Как задаётся значение
Customer.io Create or update person ❌ (нет типизир.) через JSON dot-notation type-дропдаун: Static / Profile attr / Journey attr / Liquid / JS
Braze User Update ✅ (в JSON) $add/$remove (в JSON) UI-редактор (только Custom Attributes) + Advanced JSON; Liquid
Iterable User Update tiles (User Profile / List Membership / Subscription) через Handlebars-math в JSON отдельный List Membership tile JSON-редактор + Handlebars
Klaviyo Update profile property ✅ (+create/delete property) add/remove одного значения шаги «+ Add step», тип нового свойства Text/Number/List/Boolean/Date
HubSpot Edit record (+ отдельный Increase/decrease property value) ✅ (set/edit/copy/clear) ✅ (отдельная action) Append/Replace/Remove/Clear для list-полей literal или Insert data (ссылка на др. свойство)
ActiveCampaign Perform Math (отдельная action) ✅ (add/sub/mul/div) 2 операнда, каждый literal или field (⚡-иконка) → Output-поле

Ключевые детали для проектирования:

4.2 TAG / список-метка

→ Для нас (теги в identity graph): тумблер add/remove + селектор тега с созданием на лету (паттерн Klaviyo).

4.3 WEBHOOK / HTTP-request как action

4.4 CRM / integration-update

4.5 UX-паттерн подачи

Правая боковая панель доминирует (Customer.io, Klaviyo, HubSpot). ActiveCampaign — модалка- пикер действий. Часто список операций/шагов внутри одной ноды (Klaviyo + Add step, Customer.io — несколько атрибутов за раз).

Рекомендация для MVP-инспектора Action (задача: set/increment/append + теги) — ✓ реализована в макете


Пробелы и предостережения

  1. UX-layout инспектора — по итогам добора (§4.5) правая боковая панель доминирует (Customer.io / Klaviyo / HubSpot); ActiveCampaign — модалка; n8n — центральная Node Detail View. Для journey-билдера берём правую боковую панель. ✓ Реализовано в макете (editor-ui-redesign.html): инспектор — правая панель 420px с плавным слайдом.
  2. Перекос источников по нодам 1–3 (Email/Delay/If) смещён к Customer.io / Braze / Klaviyo / Iterable. Mailchimp Customer Journey и Ortto не покрыты нигде. По ACTION-ноде (§4) покрытие шире — добавились HubSpot, ActiveCampaign, n8n.
  3. Опровергнуто (1-2 голоса): утверждение, что Braze Decision Split требует ровно один из Segments/Filters (но не оба) — не подтвердилось, не опираться.
  4. Лимиты и дефолты (8 вариантов, 20 путей, «Queue Draft») актуальны на 2025–2026, но продукты быстро меняются — перепроверить перед реализацией.
  5. Нужен единый русский глоссарий — терминология конкурентов разнится (Time Window / Decision Split / Audience Paths / Multi-Split / Attribute Split). ✓ В макете принят подход: основной текст по-русски человеческим языком, англ-термин конкурента — в скобках как справка (напр. «черновик (Queue Draft)», «развилка да/нет (If/Else)», «до момента / окно доставки (Time Window)»).

Открытые вопросы (для добора)

  1. Где в Email-ноде живут frequency capping и from/reply-to/subject — в инспекторе ноды или в глобальных настройках кампании (по нодам 1–3 не подтверждено). → Частично решено макетом: subject и from/reply-to/subject положили в инспектор Email-ноды (editor-ui-redesign.html). Открытым остаётся frequency capping (частотные лимиты) — в макете его нет, где ему жить (нода vs глобальные настройки кампании), пока не решено.
  2. Инспекторы непокрытых продуктов (Mailchimp Customer Journey, Ortto) — добавляют ли паттерны, которых нет у Customer.io/Braze/Klaviyo/Iterable/HubSpot. Открыт (добор не делался).

ACTION-нода (операции, теги, webhook, CRM, UX-паттерн) — закрыта добором §4.

Источники (primary, верифицированные)

Email: customer.io/docs/journeys/sending-behavior · braze.com/.../multivariant_testing/create_multivariate_campaign Delay: help.klaviyo.com/.../115003885212 · .../360046164352 · docs.customer.io/journeys/delivery-window · .../wait-until · .../send/timezones/match · .../release-notes/2022-06-06-wait-until-changes If/Else: braze.com/.../decision_split · .../audience_paths · customerio.netlify.app/docs/journeys/branches · support.iterable.com/.../4411913074964-Parts-of-a-Journey · help.klaviyo.com/.../115003883992 UX: docs.n8n.io/.../ux-guidelines · help.ortto.com/a-766 · docs.customer.io/journeys/workflow-builder

Action (верифицировано, добор §4): Customer.io: docs.customer.io/journeys/create-update-person · .../workflows/webhooks/action · .../cdp/sources/connections/salesforce/mapping-to-customerio · Braze: braze.com/.../canvas_components/user_update · Iterable: support.iterable.com/.../17743524980756-Journey-Setup-User-Update-Tiles · ActiveCampaign: help.activecampaign.com/.../20353560158364-Data-Formatting · .../360003463720-do-math · .../15428354770716-Action-Updates · Klaviyo: help.klaviyo.com/.../30101956634523 · .../360001768432 · HubSpot: knowledge.hubspot.com/workflows/choose-your-workflow-actions · .../edit-records-using-workflows · .../salesforce/map-hubspot-properties-to-salesforce-fields · n8n: docs.n8n.io/.../n8n-nodes-base.httprequest · .../credentials/httprequest · .../n8n-nodes-base.webhook

Статистика: прогон 1 (ноды 1–3) — 5 углов, 23 источника, 25 верифицировано (24✓/1✗), 105 агентов. Прогон 2 (ACTION, §4) — 6 углов, 25 источников, 25 верифицировано (25✓/0✗), 108 агентов.