The Celigo platform allows you to filter data as it progresses through a flow. You can apply an output filter on a flow step's incoming data to selectively refine which records are passed on to subsequent steps of your flow, or you can create an input filter on a lookup or import flow step that only accepts incoming data that meets a specific criteria. The Filter editor is where you define the logic that excludes or includes matching records.
Tip
You can use filters to exclude any ID values in customer ID fields generated before a specific date.
Caution
- When you're setting filters, if a specific field doesn't show in the list, then you can enter the field and define your rule or condition.
- When you're developing flows, if your sample or mock output record doesn't flow to downstream steps for testing, then check & update the mock output record at the initial step to satisfy any filter rules or conditions and allow the record to proceed for testing your flow.
You can add an output filter to a source (export), or to any flow step (import/lookup) that has subsequent flow steps. Records that meet the rules criteria you define in the output filter are passed into subsequent steps of the flow. Records that do not meet the rules criteria you define in the output filter are discarded and will not be processed by any subsequent flow steps in the flow.
If you apply an output filter to a source (export) flow step, the flow will only receive and process records that are not blocked by the output filter.
If you add an input filter on a flow step (import/lookup), the flow step will only process records that meet the input filter criteria that you define. Any subsequent flow steps will continue to process incoming data from previous flow steps, even if it was excluded by an input filter on a previous flow step. In other words, a record passing through a flow will skip a flow step that blocks it with an input filter, but will be processed by a subsequent flow step with no filter.
The filter applied on this step will only accept data the meets the input filter criteria. All data initially sent from the export will continue through any subsequent steps of the flow, but the flow step will ignore any record that does not fit the input filter's rules.
Tip
Troubleshoot records skipped by a flow. A flow can skip a record without reporting an error if the record does not meet a filter or field-based criterion. Compare the record's field value with the configured operator and value. For example, Type IN ('Customer') skips records whose Type does not match Customer. Also check for differences in operators, capitalization, formatting, or missing field values. After correcting the criteria or record value, rerun the flow with a sample record. Enable debug or execution logging to confirm whether the record is evaluated or skipped.
Create filters
- Open Flow builder.
- Click the ellipsis (...) on a flow step to add a filter. You can add an output filter to an export (or an import/lookup with subsequent flow steps). You can add an input filter on an import or lookup flow step.
- Click the filter option appropriate for the flow step’s context: output (
) or input (
)
- The filter editor displays.
-
Logical operators: You can use any of the following logical operators to define rules for data:
- NOT: Select the checkbox if you want to use the NOT operator. NOT excludes any data that meets the criteria you define in the rules. If the checkbox is not selected, the filter includes any data that meets your defined rule criteria.
- AND: Select AND if you want data that meets the combined criteria defined in the rules.
- OR: Select OR if you want data that meets any criteria defined in the rules.
Notice
If you want to exclude all records that belong to a subsidiary company, select NOT. You can also select AND or OR to create filters that combine multiple rules for your filtration criteria. AND filters records that fit all listed rules in the group. OR filters records that fit any listed rules in the group.
- Field name: Flow Builder allows you to select any field from your data record from this menu. Choose the relevant field for your filter. By default, a drop-down list contains all available record fields. You can also use a value or an expression instead. Click + Add field at the bottom of the list to add a new field. You can modify existing field names in the Input text box of the filter editor. Once the field exists in the sample record, it will be available in this drop-down list.
-
Operand type and Data type: Operand types can be:
- Field: The first field in a filter rule. Use the drop-down menu to select any field from your sample record.
- Value: Enter the number, string, or Boolean value to use as the filter criterion. Select Value as the second field when the filter rule is based on a specific value.
-
Expression: The expression to compute or transform values. Expression supports two kinds of operations:
- Basic calculations – Use this syntax to perform Add, Divide, Multiply, Subtract, or Replace calculations for the filter rule.
- Handlebars expressions – Starting from the 2026.7.1 release, use the double-curly brace syntax {{}}to manipulate data and keep filter logic inline and maintainable, without using scripts. You can use Handlebars expressions to transform values before comparing them. For example, to trim whitespace, change case, compute a date offset, or format a number.
Caution
Before the 2026.7.1 release, filter rules treated values within double-curly braces
{{ }}as literal {{...}} text. Starting with 2026.7.1, filter rules automatically interpret and evaluate{{ }}values as expressions.If an existing filter rule uses
{{ }}to represent a literal, hardcoded value, the rule may no longer work as expected. Review and update affected filter rules to ensure they produce the intended results.
Data type is available only for field or value operand types, for use in defining the format as a string, number, date-time, or Boolean.
-
Operator: This list allows you to apply conditional operators to the filter. This menu has the following operators:
- equals: equal to specific date or numeric value.
- not equals: not equal to a specific date or numeric value.
- is greater-than: greater than a specific date or numeric value.
- is greater-than or equals: greater than or equal to a specific date or numeric value.
- is less-than: less than a specific date or numeric value.
- is less-than or equals: less than or equal to a specific date or numeric value.
- between: falls within a defined range. Specify the start and end values.
- ends with: ends with a specific string of characters.
- contains: has a specific string of characters at any point in the field value.
- does not contain: does not have a specific string of characters at any point in the field value.
- null: has no value in the field.
- is not null: has any value in the field.
- matches: has a specific value in the field.
- Value: Enter the appropriate value according to the selected operator.
- Operand type and Data type: see step 3.
- + Condition: You can add as many conditions to a filter as you need. Click + Condition after you’ve defined one or more rules for your filter and are ready to add one to another field.
- Add group: Click Add group to create filters with a set of rules that use multiple Boolean conditions. Groups allow you to segment your filtration logic for complex circumstances. For example, you could use one rule group that uses the NOT Boolean operator to exclude records that were created before a certain date, then create another rule group to include records that use the AND or OR operator.
-
Condition handle (only visible on hover): If you have multiple conditions that must be organized in a specific chronological order to accurately filter your records, click and drag the handle (
) to rearrange the order of the conditions .
- Plus sign (+ ) (only visible on hover): Click to add a new condition. This has the same function as clicking + Condition in step 10.
-
Ellipses (...) (only visible on hover): Click to clone or delete a condition.
You can toggle between rules and JavaScript to implement filter logic with the JSON/JavaScript toggle switch at the top of the filter editor.
Rules are the preferred option for simple filter logic; JavaScript is better suited to complex logic. You can't define both in the same filter. If you apply rules and then switch the filter editor to JavaScript, JavaScript takes precedence, and any previously defined rules are ignored.
Consider JavaScript filters for the following requirements:
- Concatenate multiple string fields, and then filter records based on the results of the concatenated value
- Parse a complex string field that contains multiple different values, and then filter based on the parsed value
- Add multiple numeric fields together, calculate an average, and then filter records based on the average
- Filter records where a date field in the record is older than a specific number of days ago
A filter expression operand provides useful shorthand for complex logic, such as in the following example:
["add",["number",["extract","number__a"]]]
Where:
- add is the arithmetic operation to be performed using the expression
- number__a is the field name
- number is the data type of number__a
- extract is the keyword that extracts a value from number_a
["add",20,["number",["extract","number__a"]],["number",["extract","number__c"]]]
Where:
- add is the arithmetic operation to be performed using the expression.
- number__a is the field name that can contain any value.
- number__c is the field name that can contain any value.
- number is the data type of number__a and number__c.
- 20 is the hard-coded value that will be added to the value extracted from number__a and number__c . For example, if number__a contains 15 and number__c resolves to 5, then the expression would mean 15+5+20 and the result will be 40.
- extract is the keyword that extracts a value from number__a and number__c.
["divide",["number",["extract","number__a"]],2]
Where:
- divide is the arithmetic operation to be performed using the expression.
- number__a is the field name that can contain any value.
- number is the data type of number__a.
- 2 is the hard-coded value that will act as the divisor for the value extracted from number_a . For example, if number__a contains 20, then the expression would mean 20/2 and the result will be 10.
- extract is the keyword that extracts a value from number_a.
["multiply",4,["number",["extract","number__a"]]]
Where:
- multiply is the arithmetic operation to be performed using the expression.
- number__a is the field name that can contain any value.
- number is the data type of number__a.
- 4 is the hard-coded value that will act as a multiplier for the value extracted from number__a . For example, if number__a contains 20, then the expression would mean 20*4 and the result will be 80.
- extract is the keyword that extracts a value from number__a.
["subtract",["number",["extract","number__a"]],["number",["extract","number__c"]]]
Where:
- subtract is the arithmetic operation to be performed using the expression.
- number__a is the field name that can contain any value.
- number__c is the field name that can contain any value. For example, if number__a contains 22 and number__c contains 2, then the expression would mean 22-2 and the result will be 20.
- number is the data type of number__a and number__c.
- extract is the keyword that extracts a value from number__a and number__c.
["replace",["string",["extract","string__c"]],"string/letter to be replaced","string/letter to replace with"]
Where:
- replace is the operation to be performed using the expression
- string__c is the field name that can contain any value
- string is the data type of string__c
- string/letter to be replaced is the string value that is to be replaced
- string/letter to be replaced with is the string value that replaces it
For example, if string__c contains:
AAAA BBBB CCCC DDDD
and the expression is:
["replace",["string",["extract","string__c"]],"AAAA","CCCC"]
The result is:
CCCC BBBB CCCC DDDD
For questions and tips about filters, visit the Community forum.
To learn more about this topic, take the Level 2: Exploring Flow builder course.
You can use the Handlebars syntax for expressions. For more information on Handlebars, see the Handlebars helper reference. The filter evaluates a value and auto-converts it from H (Hardcoded text) to E (Expression) when it's enclosed in double curly braces {{ expression...}} within an existing expression.
Limitations
- Filter rules evaluate a Handlebars expression as a string. For example, if you enter
{{record.stores.0.count}}as the operand, then it is evaluated as “12” (a string), and not 12 (a number). If a string comparison is what you want, no further action is required. But if you want the value to be treated as a number — for example, to compare it numerically against another value — wrap the expression in the number format:["number", {{record.stores.0.count}}]This evaluates the Handlebars expression and casts the result to a number on the right-hand side. Always confirm that the operand uses the correct datatype for the comparison you intend. - Filter rules only support
{{ }}format, not{{}}{{}}or nested handlebars, and notabc{{ }}or{{ }}abcfor raw Handlebars input. - Filter rules do not support block helpers in Handlebars expressions.
FBA inventory adjustments custom flow Assign status details to Amazon inventory Add input filter for FBA inventory adjustments Edit Async helper to disable quote validation and strip enclosing quotes.