parentId) and nested in execution (parent.subNodes[]). The parent’s main out handle is unused once sub-nodes exist — the engine follows the chosen sub-node connections.out.
Canvas edges from a sub-node use sourceHandle: "in" (NestedSubNode quirk).
If / Else
Parentif with exactly two conditionEvaluation children. The engine picks by title.toLowerCase():
Switch
Children:switchCaseEvaluation (max 25) plus optional noSelectionFallback. Conditions live on each case child (data.conditions, data.evaluationMode ALL | ANY). First matching case wins; otherwise fallback connections.out.
Message answers, fallback, timeout
WhenwaitForUserResponse: true on whatsapp / facebookMessenger / instagram / webchat:
Fallback modes (never parent)
Never put the parent message id on fallbackconnections.out or draw fallback → parent.
Sub-node canvas fields:
draggable: false, extent: "parent", position: { "x": 138, "y": 120 + 35 * index } relative to the parent. Answers first, then fallback, then timeout. Prefer sending autoLayout: true on save so the server writes these fields.
settings.sharedTimeout / settings.sharedFallback can stand in when a message node has no local timeout/fallback. See Sub-workflows.