Skip to content

Switch Node

Module ID: ion.action.switch

The Switch node routes data to multiple outputs based on configurable rules or expressions. Unlike Condition (binary), Switch supports any number of output paths.


Use the Switch node when you need to route data to different branches based on complex logic. It supports two modes:

  • Rules mode: Visual rule builder with multiple conditions per rule
  • Expression mode: Custom expression evaluation

HandleDescription
inputData to evaluate
HandleDescription
[rule_name]Dynamic output for each configured rule
defaultNo rules matched
errorInvalid configuration or evaluation error

// node.data structure
{
mode: "rules" | "expression",
data: RulesData | ExpressionData
}
{
mode: "rules",
data: {
rules: [
{
name: string, // Output handle name
conditions: Condition[] // Conditions to evaluate
}
]
}
}
{
mode: "expression",
data: {
expression: string // Expression to evaluate
}
}

Route orders by status:

{
"mode": "rules",
"data": {
"rules": [
{
"name": "pending",
"conditions": [
{ "field": "status", "operator": "is_equal", "value": "pending" }
]
},
{
"name": "shipped",
"conditions": [
{ "field": "status", "operator": "is_equal", "value": "shipped" }
]
},
{
"name": "cancelled",
"conditions": [
{ "field": "status", "operator": "is_equal", "value": "cancelled" }
]
}
]
}
}

This creates outputs: pending, shipped, cancelled, default, error


┌── pending ──→ [Process Pending]
[Input] → [Switch] ─┼── shipped ──→ [Track Shipment]
├── cancelled ─→ [Refund]
└── default ──→ [Unknown Status]

  1. Receives input data
  2. Parses configuration (mode + data)
  3. Based on mode:
    • Rules: Evaluates each rule’s conditions in order
    • Expression: Evaluates the expression
  4. Routes to matching rule’s output handle
  5. If no match → routes to default
  6. On error → routes to error

[New Order] → [Switch by fulfillment_type]
├── pickup → [Prepare for Pickup]
├── delivery → [Schedule Delivery]
├── shipping → [Create Shipment]
└── default → [Manual Review]
[Support Ticket] → [Switch by priority]
├── critical → [Page On-Call]
├── high → [Assign Senior]
├── medium → [Add to Queue]
└── low → [Auto-Response]

ErrorCause
”Not configured node”node.data is null
”Invalid data type”Configuration format incorrect
”Invalid switch node mode”Mode is not “rules” or “expression”