docs

Conditional Node

The Conditional node splits your workflow into two paths — True and False — based on rules you define. Data flows to one branch or the other depending on whether the conditions pass. It does not modify data; it is purely a router.

Buy Signal?
1 rule
True
False

Configuration

Conditions
Settings

How the Two Branches Work

The Conditional node always has two output handles on the right side:

  • True (green handle, top) — data flows here when the conditions pass.
  • False (red handle, bottom) — data flows here when the conditions fail.

You connect different downstream nodes to each handle. Only one branch fires per execution — the other is skipped entirely. This is how you build "if this, do that; otherwise, do something else" logic in your workflow.

Claude Analysis
Claude Sonnet 4.6
Contains BUY?
1 rule
Buy BTC
Market Order
No Signal Alert

In this example, the LLM analyzes market data and responds with text. The Conditional checks if the response contains "BUY". If it does, the True branch fires and places an order. If not, the False branch fires and sends an email alert instead.

You don't have to use both branches. If you only care about one outcome — for example, only place a trade when the signal is strong — you can leave the False handle unconnected. The workflow simply ends on that path.


Configuration

FieldDescription
ConditionsOne or more rules to evaluate. Click + Add to add more.
FieldPath to the data to check (e.g., llm.output, price_data.data.prices[0].current). Click Show suggestions to auto-discover available paths from connected nodes.
OperatorHow to compare — see full list below.
Compare ModeStatic Value (compare against a value you type) or Another Field (compare two dynamic values from the input data).
TypeText, Number, or Boolean. Choose Number for price and numeric comparisons so type coercion works correctly.
ValueThe value to compare against.
LogicWhen you have multiple conditions: AND (all must be true for True branch) or OR (at least one must be true for True branch). Only appears with 2+ conditions.
Pass Through DataWhen ON (default), the original input data flows through to whichever branch fires. When OFF, only \{ result: true/false \} is sent.

Operators

CategoryOperatorWhat it checks
EqualityEqualsExact match (after type coercion)
Not EqualsNot an exact match
ComparisonGreater ThanField value is above comparison value
Less ThanField value is below comparison value
Greater Than or EqualField value is at or above comparison value
Less Than or EqualField value is at or below comparison value
TextContainsField includes the comparison string
Not ContainsField does not include the comparison string
Starts WithField begins with the comparison string
Ends WithField ends with the comparison string
ExistenceIs EmptyValue is empty string, null, undefined, or empty array
Is Not EmptyValue has content
ExistsField is present in the data
Not ExistsField is missing from the data

Field Paths

Field paths let you reach into nested data structures:

SyntaxExampleWhat it accesses
Simple keyoutputTop-level field
Dot notationdata.closeNested property
Array index[0]First element of an array
Combineddata.prices[0].currentNested array element

Click Show suggestions in the Field input to auto-discover all available paths from connected upstream nodes.


Pass Through Data

This setting is critical for understanding how data flows after the Conditional.

When ON (default): The original input data passes through unchanged to whichever branch fires. Downstream nodes reference the source node's output paths — the Conditional is invisible in the data chain.

For example, if a Price Data node connects to the Conditional, and the True branch connects to an Exchange Order node, the Exchange Order references {price_data.data.prices[0].current} — not {conditional.anything}.

When OFF: Only the boolean evaluation result is sent downstream: {conditional.result} is true or false.


Use Case: Trade Only When RSI Is Oversold

Check if RSI is below 30 before placing a buy order. If RSI is healthy, send a Telegram alert instead.

BTC Price
CoinGecko
RSI below 30?
1 rule
Buy BTC
Market Order
RSI Normal

Condition setup:

  • Field: price_data.data.prices[0].indicators.rsi
  • Operator: Less Than
  • Value: 30
  • Type: Number

When the RSI is 28, the True branch fires and buys BTC. When the RSI is 55, the False branch fires and sends the Telegram message.


Use Case: Route on LLM Recommendation

Check if an LLM's free-text response contains a specific keyword.

Condition setup:

  • Field: llm.output
  • Operator: Contains
  • Value: BUY
  • Type: Text

The Contains operator converts both sides to strings, so it works on the LLM's full text response. If the LLM says "ACTION: BUY", the True branch fires. If it says "ACTION: HOLD", the False branch fires.


Use Case: Multi-Condition Gate

Require multiple signals to align before acting. This prevents trades based on a single weak indicator.

BTC Price
BTC/USD
RSI + Price Check
2 rules
Buy BTC
Conditions Not Met

Condition setup (Logic: AND):

  1. Field: price_data.data.prices[0].indicators.rsi, Operator: Less Than, Value: 30, Type: Number
  2. Field: price_data.data.prices[0].current, Operator: Less Than, Value: 60000, Type: Number

With AND logic, both conditions must be true. The True branch only fires when RSI is below 30 and price is under $60k. If either condition fails, the False branch fires.

Switch to OR logic if you want the True branch to fire when any condition passes.


Use Case: Compare Two Fields Dynamically

Instead of comparing against a hardcoded value, compare two fields from the same input data.

Example — current price vs. open price:

  • Field: price_data.data.prices[0].current
  • Compare Mode: Another Field
  • Compare Field: price_data.data.prices[0].candles[0].open
  • Operator: Greater Than
  • Type: Number

This evaluates to True when the current price is above the candle's open price — no hardcoded values needed. Useful for detecting intraday trends.


Common Routing Examples

Use caseFieldOperatorValueType
Route on LLM recommendationllm.outputContainsBUYText
Price above thresholdprice_data.data.prices[0].currentGreater Than100000Number
RSI oversoldprice_data.data.prices[0].indicators.rsiLess Than30Number
Parsed function resultparser.actionEqualsBUYText
Funding rate spikecoinglass.data.fundingRateGreater Than0.0005Number
Portfolio loss alertportfolio.positions[0].unrealizedPnlLess Than0Number
Structured output fieldllm.output.signalEqualsbuyText
Confidence thresholdllm.output.confidenceGreater Than0.7Number

Output

With Pass Through Data ON (default):

The original input data flows to whichever branch fires. Downstream nodes reference the source node's output paths directly.

With Pass Through Data OFF:

PathDescription
{conditional.result}true or false — the evaluation result

Next Steps