Skip to Content
BuildAction StepsFilter

Filter

The Filter step checks every item in a list on its own. Matching items continue on the KEPT route, and non-matching items go to DISCARDED.

At a glanceVerified in app · Oct 29, 2026
Use it to
Keep or discard items in a list using typed or AI rules
Find it
Tools → Flow → Filter
Cost
Free for typed rules · AI Filter rules use Glow AI tokens
Limits
Up to 100,000 items · Splits a list into Kept and Discarded outputs
Output
{{ N.kept }}, {{ N.discarded }}, {{ N.keptCount }}, {{ N.discardedCount }}
Instead
Conditions (to branch a run) or inline {{ 1.items | where:"status":"paid" }}

Use Filter to trim a list before running downstream Steps. Each route carries its share of the list, and an empty route does not run. See Choosing a Flow Step.

A list arrives:
12 leads · 5 over £10,000
  • 5 itemsKEPT — matched “deal size is over 10,000”Notify sales
  • 7 itemsDISCARDED — the restLog for review

Both routes run, each carrying its own share. That is what makes Filter different from the other two.

Setting it up

Connect the source step and select data

Connect the upstream Step that returns the list (or choose Enter it myself), then click Select data on the first rule to bind FILTERING.

Choose the type and operator

Pick Text, Number, Yes/no, Record, List, or Date & Time, then select an operator from the shared Conditions catalogue.

Add rules and logic

Click Rule to add checks. Under Kept, set Rules to All rules must match (AND), Any rule may match (OR), or custom AND/OR groups.

Point the routes at steps

Select a target Step under KEPT. Assign DISCARDED to handle rejected items, or leave it blank to drop them.

With no rules configured, every item is kept. An unfinished Filter is not a closed gate.

Item tokens, inputs, and edge behavior

Inside Filter rulesFilter Uses $item
  • {{ $item }} reads the whole current item.
  • {{ $item.field }} reads a property on that item.
  • {{ $itemIndex }} reads the 0-based position in the list.
Inside loop StepsLoops Use item (No Dollar Sign)
  • Run for each item and Repeater use {{ item.field }}.
  • The two tokens are separate and not interchangeable.
  • Downstream Steps read {{ N.kept }} after Filter finishes.
InputResult
A listEach item is tested on its own.
A single recordTreated as a 1-item list and output in kept or discarded.
Valid JSON textParsed as a list or record automatically.
Blank, number, or plain textFails: “Filter needs a list or record. Connect a step that returns a list, or pick a field that holds one.”

Describing a rule in words

Set a rule’s type to Plain words (AI Condition) to test items with a natural-language prompt such as "the message sounds like a complaint" (Prompt Examples provides templates). Also available in Conditions; Switch is typed-only.

100 item-rule pair cap: Each AI evaluation makes one model call. Filter allows at most 100 item-rule pairs (list length × AI rules, e.g., 100 items with 1 AI rule or 50 items with 2). Trim larger lists with typed rules first.

What it passes on

ReferenceReturns
{{ N.kept }}Matching items (not results or items).
{{ N.discarded }}Non-matching items, even when DISCARDED is unwired.
{{ N.keptCount }}Count of kept items.
{{ N.discardedCount }}Count of discarded items.
{{ N.errors }} / {{ N.totalErrors }}Rule evaluation errors (up to 25 detailed in errors, total in totalErrors).

Outputs also include keptEdgeId, discardedEdgeId, firedEdgeIds, failedEdgeCount, and error.

Limits

  • List size: A single Filter step processes up to 100,000 items. Larger lists fail the Step.
  • Regex budget: 5 seconds cumulative across the list and 250 ms per item. A single-item timeout counts as a rule error; exceeding 5 seconds fails the Step.

Examples to copy

SettingValue
Propertystatus (from the user list)
TypeText
Operatoris equal to
Valueactive

Downstream Steps read {{ N.kept }}.

Verify it works
Run
Test the Filter Step against a sample list containing both matching and non-matching items.
You should see
The Step outputs {{ N.kept }}, {{ N.discarded }}, {{ N.keptCount }}, and {{ N.discardedCount }} in the Execution log.

What’s Next?

Last updated on

Search documentation

Start with a guide, or search by Step, task or error.