Filter
Conditionally pass or block data based on an expression.
The Filter node evaluates a condition and either passes data downstream or stops execution at that branch.
Configuration
| Field | Type | Required | Description |
|---|---|---|---|
| Node Label | text | No | Display name shown on the canvas |
| expression | string | Yes | Value to evaluate (supports template expressions) |
| operator | string | Yes | Comparison: equals, not_equals, contains, exists |
| value | string | For equals/not_equals/contains | Comparison value |
| Output Variable Name | string | No | Optional response name for downstream references |
How it works
- The
expressionis rendered using upstream node data - The
operatorcompares the rendered value againstvalue - If true, data passes through. If false, the branch stops.
If you set an Output Variable Name, downstream nodes can reference the filter result by that name. Leave it empty if you only need pass/block behavior.
Examples
Only continue if a value exists (non-empty):
expression: {birdeyeResponse.data.value}
operator: existsCheck if a field matches a specific value:
expression: {birdeyeResponse.data.symbol}
operator: equals
value: SOLCheck if a field contains a keyword:
expression: {aiResponse.data}
operator: contains
value: bullishFor numeric comparisons (greater than, less than), use the Condition node instead.
Output
When the expression passes the operator check:
{ "filtered": false, "passed": true, "value": "SOL" }When it does not pass, downstream nodes on this branch are skipped and the node records:
{
"filtered": true,
"passed": false,
"reason": "Expression \"{birdeyeResponse.data.symbol}\" resolved to \"BONK\" which did not pass equals check"
}An empty expression short-circuits to { "filtered": true, "reason": "Filter expression is empty" }.
If you set an Output Variable Name, downstream nodes can read the result, for example {filterResponse.passed} or {filterResponse.value}. The value field is the rendered expression string, not the original template.
