The Filter action evaluates a condition and either continues execution (if true) or stops the workflow for that record (if false). Use it to gate processing and prevent unwanted records from continuing through your workflow.
How it works
Define a condition using an expression
If the condition is true , execution continues to the next node
If the condition is false , execution stops for this record
Stopped records are marked as “filtered” in execution logs
Configuration
Property Description Condition An expression that must be true for execution to continue
Writing filter conditions
Basic comparisons
{{nodes.score.value >= 50}}
{{nodes.enrich.employees > 100}}
{{nodes.start.status == "active"}}
Check for required values
{{nodes.start.email}}
{{nodes.enrich.company_name}}
{{nodes.search.results.length > 0}}
Exclude specific values
{{nodes.start.email.includes("@gmail.com") == false}}
{{!nodes.enrich.is_competitor}}
{{nodes.start.source != "test"}}
Combine conditions
{{nodes.enrich.email && nodes.enrich.company_name}}
{{nodes.score.value >= 50 && nodes.enrich.employees >= 100}}
{{nodes.start.tier == "enterprise" || nodes.score.value >= 80}}
Common use cases
Quality gate for leads
Only process leads that meet minimum criteria:
Condition: {{nodes.score.value >= 50 && nodes.enrich.employees >= 20}}
Records below the threshold are filtered out, saving processing time and API credits.
Require essential data
Stop processing if required fields are missing:
Condition: {{nodes.start.email && nodes.start.company_domain}}
Exclude competitors
Filter out competitor domains:
Condition: {{!["competitor1.com", "competitor2.com"].includes(nodes.start.domain)}}
Prevent duplicate processing
Check if the record was already processed:
Condition: {{!nodes.lookup.already_processed}}
Validate enrichment results
Only continue if enrichment was successful:
Condition: {{nodes.enrich.success && nodes.enrich.company_name}}
Skip test data
Filter out test or internal records:
Condition: {{!nodes.start.email.endsWith("@yourcompany.com")}}
Filter vs. Branch
Choose the right action for your use case:
Scenario Use Filter Use Branch Stop processing if condition fails ✅ Need to handle both outcomes ✅ Simple gate/quality check ✅ Take different actions per outcome ✅ Log or track failed records ✅
Filter is simpler when you just want to stop processing. Branch is better when you need to do something specific with records that don’t pass.
Use Filter for simple quality gates. Use Branch when you need visibility into
why records were stopped or want to handle failures explicitly.
Filter on arrays
When working with search results or lists:
Check if array has items
Condition: {{nodes.search.results.length > 0}}
Check if array has minimum items
Condition: {{nodes.find_contacts.results.length >= 3}}
Check array contents
Condition: {{nodes.search.results.some(r => r.score >= 50)}}
Best practices
Place filters early in your workflow to avoid wasting API calls and credits
on records that will be filtered later.
Be explicit about requirements
Make your filter conditions clear and specific. Future you should understand
why a record would be filtered.
Consider using Branch instead
If you need to track or handle filtered records (log them, send alerts), use
Branch instead of Filter.
Test your filters with null values, empty strings, and unexpected data to
ensure they behave correctly.
If most records are being filtered, your filter might be too strict or your
data source might have quality issues.
Example: Lead qualification pipeline
A workflow with multiple quality gates:
1. Start → Receive inbound lead
2. Filter: Has required fields
Condition: {{nodes.start.email && nodes.start.company}}
Stops leads missing email or company
3. Enrich Company → Get firmographic data
4. Filter: Not a competitor
Condition: {{!nodes.enrich.is_competitor}}
Stops competitor companies
5. Score Lead → Calculate lead score
6. Filter: Meets qualification threshold
Condition: {{nodes.score.value >= 50 && nodes.enrich.employees >= 20}}
Stops leads below qualification threshold
7. Allocate → Assign to sales rep
8. Create CRM Contact → Add to HubSpot
Only leads that pass all three filters reach the CRM.