Skip to main content
The Filter block (Condition step) continues a workflow only when its conditions are true, and stops the run otherwise. It is the cheapest and most important safety block in Attio Workflows. It produces no data, costs no credits, and gates every expensive step that follows. Place it right after the trigger. That way the runs that don’t matter end before they reach a paid block.

Inputs

A condition is a test in three parts: an attribute, an operator, and a value. Join conditions with and / or. Use Convert to advanced condition to build nested groups such as (A and B) or (C and D). Conditions can test record attributes or any output of an earlier block. For the full operator set per attribute type, see Conditions & filters.

Outputs

None. The Filter block decides whether the run continues. It does not expose a value to later blocks. To pass data downstream, reference the upstream trigger or lookup block directly. For example, a record found earlier is available as {{ steps.find_records.records }}.

Behavior

The Filter block evaluates its conditions against the current run’s data. It then either continues to the next block or stops the run. A stopped run is not an error. It ends quietly, costs nothing, and appears in run history as a normal completed run that took the stop path. Conditions joined by and all need to be true. Conditions joined by or need only one. When you mix the two operators in a flat list, the structure evaluates differently than it reads. Wrap the intended grouping in a nested condition group instead. A multi-value attribute holds more than one value at once, such as a multi-select or a multi-reference relationship. For these, a condition is true if any one value matches. A condition like Tags contains Customer passes when any tag is Customer. There is no built-in “all values match” operator. To test that case, use an Execute code block instead.

Gotchas

  • Expensive blocks run on every trigger. A workflow shaped trigger → Web agent → Filter runs the paid block first. So it pays the artificial intelligence (AI) cost on every run, because the filter sits after that block. Move the filter directly after the trigger so the run stops before reaching anything that consumes credits.
  • The workflow re-triggers itself. A workflow that writes a record can fire its own trigger again and loop. Add a Updated by → Type → is not → Workflow filter to admit only human-driven changes. See Infinite loops and safety.
  • The filter fires on re-saves, not real transitions. Testing only the new value matches every save that lands on that value, including the ones already there. Add a second condition on the previous value, such as New value is Won and Previous value is not Won. The filter then passes once per actual transition.
  • Mixed and/or passes records it shouldn’t. A flat list like stage is Won or stage is Lost and Owner is Priya Sharma evaluates as Won or (Lost and Priya), not (Won or Lost) and Priya. Build the intended grouping with Convert to advanced condition. Check the and/or structure first whenever a filter leaks.

Examples

Gating a Slack alert on closed-won deals

This filter lets only a real transition into the Won stage reach a downstream Slack alert. It runs after an Attribute value changed trigger watching stage. The run continues to the alert only when a deal actually moves into Won. Re-saving an already-won deal stops the run quietly.

Blocking self-triggered loops

This filter admits only human edits. A workflow that writes back to the same object then does not re-fire itself. A workspace member updating the record passes the filter. A write made by another workflow stops the run before it can loop.

Routing on a parsed webhook field

This filter sits after a Parse JSON block. It continues only for enterprise-tier leads, so the costly enrichment steps that follow run on a fraction of inbound traffic.
The run continues for an enterprise lead from jane@acme.com. A free-tier lead stops at the filter and consumes no enrichment credits.

Source

Attio Workflows block library. Last reviewed against the Attio Help Center, June 2026.

See also