Use filter logic in the Audience Builder to create precise segments. This article covers the Simple view first, then optional advanced logic.
Applies to
- Feature: Audience Builder
- Who can use it: Users who can create or edit audiences
- Recommended mode: Simple view for almost all audiences
Core concepts (30-second primer)
- Condition (one rule) = Field + Operator + Value.
Example: Giving Summary: Total Giving Is On or After1/1/2024. - Filter logic: How your conditions work together.
Example: “match all” behaves like1 AND 2 AND 3; “match any” behaves like1 OR 2 OR 3. - Type-aware operators: You only see operators that make sense for the field (text, number, date, or yes/no).
Build a segment in Simple view (recommended)
The Simple view covers almost every real-world audience. It also includes case-insensitive text matching and dynamic date options.
Add your first condition
- Click Add Condition.
- Pick a Field → for example, Giving Summary: Total Giving.
- Pick an Operator → for example, Is On or After or >=.
- Enter a Value → for example,
1000or choose a dynamic option such as 30 Days Ago. - For text fields, choose if the comparison is case-sensitive. Turn on the Case-insensitive option when you do not care about upper/lower case.
Result: Your first rule appears in the list of filters.
Choose how filters should match
- Use the dropdown above the conditions to choose Match all filters or Match any filter.
- Match all filters means the audience must pass every rule (logical “AND”).
Example: people who are major donors and gave in the last 90 days. - Match any filter means the audience can pass any one of the rules (logical “OR”).
Example: people in any of three zip codes. - Between each pair of conditions you see a connector such as AND or OR. Click it to toggle it and add another rule with that connector.
- The Add Condition button uses the current choice from Match all filters/Match any filter when it connects the new rule.
Result: Your conditions now work together using either “all must match” or “any can match”.
Add more conditions
- Click Add Condition to add another rule using the current match setting.
- Adjust individual connectors by clicking AND or OR between two rules if you need a mix.
- Use the delete/remove controls on each row to remove rules that you no longer need.
Result: You have a set of conditions that describe your audience.
Preview your audience
- Run or preview the segment to see the audience size.
- If the count is much higher than expected, check whether you chose Match any filter when you meant Match all filters, or an OR connector where you meant AND.
Result: You see the records that match your filters and can refine as needed.
Choose how filters should match
- Use the dropdown above the conditions to choose Match all filters or Match any filter.
- Match all filters means the audience must pass every rule (logical “AND”).
Example: people who are major donors and gave in the last 90 days. - Match any filter means the audience can pass any one of the rules (logical “OR”).
Example: people in any of three zip codes. - Between each pair of conditions you see a connector such as AND or OR. Click it to toggle it and add another rule with that connector.
- The Add Condition button uses the current choice from Match all filters/Match any filter when it connects the new rule.
Result: Your conditions now work together using either “all must match” or “any can match”.
Add more conditions
- Click Add Condition to add another rule using the current match setting.
- Adjust individual connectors by clicking AND or OR between two rules if you need a mix.
- Use the delete/remove controls on each row to remove rules that you no longer need.
Result: You have a set of conditions that describe your audience.
Preview your audience
- Run or preview the segment to see the audience size.
- If the count is much higher than expected, check whether you chose Match any filter when you meant Match all filters, or an OR connector where you meant AND.
Result: You see the records that match your filters and can refine as needed.
Value input modes in Simple view
You can choose how to provide the Value for many operators:
- Static value: Type a value such as
1000or@example.edu. - Compare to column: Compare one field to another field in your data.
- List of options: Pick from distinct values in the field.
- Date comparisons: Use phrases like 30 Days Ago or 1 Year Ago where available.
Use Advanced logic (optional)
Use the Advanced view when you need more control than “match all” or “match any.” For example, you might need logic like “(1 AND 2) OR 3”.
Numbered conditions and custom logic
- In Advanced view, each condition is numbered 1, 2, 3, and so on.
- You define the filter logic using these numbers along with
AND,OR, and parentheses. - Example:
1 AND (2 OR 3)= everyone who matches condition 1 and also matches either condition 2 or condition 3. - Always add parentheses when you mix
ANDandORso the logic is clear.
Regular expression filters (Advanced)
Contains (Regex) and Does Not Contain (Regex) let you match complex patterns in text fields.
- Use them only when the standard Contains operator is not enough.
- Common examples: matching several domains (
@a.edu|@b.edu) or very specific formats. - Avid uses RE2-compatible regular expressions. Lookarounds (such as
(?=...)or(?!...)) are not supported.
Custom logic fields (power users)
- Choose the Custom Logic field to compute a value from other fields (for example, “if donor is active then ‘Yes’ else ‘No’”).
- The result type of the custom logic field decides which operators you can use later (text, number, date, or yes/no).
- Keep custom expressions small and test them in preview. Complex expressions are harder to debug.
Pick the right operator
Common operators (all field types)
- Equals (=) – best for IDs, exact values, and yes/no fields.
- Does Not Equal (<>) – the opposite of Equals.
- Is Blank – the field is empty or missing.
Note: This includes both empty strings and values that are not present. - Is Not Blank – any value exists in the field.
Text
- Contains – the field includes the text you enter, anywhere in the value.
- Does Not Contain – excludes values that contain that text.
- Contains (Regex) – matches a text pattern; use only when needed.
- Does Not Contain (Regex) – excludes values that match a pattern.
Advice: Use Equals for exact identifiers, Contains for domains or partial names, and Regex as a last resort.
Text operators support a Case-insensitive option so you do not have to match the exact capitalization.
Numbers
- >, >=, <, <= – compare numeric values such as gift amounts or counts.
Dates and datetimes
- Is After, Is On or After, Is Before, Is On or Before – compare against dates.
- Many date operators support dynamic values such as
30 Days Agoor1 Year Ago.
File and dataset comparison
- Is In File / Is Not In File – check if a value appears in a column in an uploaded file.
- Is In Dataset / Is Not In Dataset – check membership against a dataset column.
Make sure the column you pick in the file or dataset actually holds the IDs or emails you want. Trim spaces and keep formats consistent before you upload.
Groups, precedence, and common mistakes
- Always group ORs when you mix them with ANDs.
1 AND 2 OR 3is not the same as1 AND (2 OR 3). - Handle blanks on purpose. If it matters whether a field is present or missing, add Is Blank or Is Not Blank alongside other rules.
- Including “Transactions” or “Contacts” fields can show the same person more than once.
- Each gift or contact method creates another row for that person. That can make counts look higher than expected.
Field selection tips
- Identifiers: Id, Contacts: Contact ID → use Equals or membership operators.
- Emails: Contacts › Email: Email → use Contains with
@domain, or Contains (Regex) for advanced patterns such asvalue1|value2. - Transaction behavior: Prefer Giving Summary fields (for example, Giving Summary: Total Giving, Giving Summary: Donor Status) when you care about “ever/any” logic. Use Transactions fields only when you need row-level filters on specific events.
Recipes
A) Major donors who gave in the last 90 days
- 1: Giving Summary: Total Giving >=
1000 - 2: Transactions: Date Is After
90 Days Ago - Logic:
1 AND 2
Note: Condition 2 uses a transactions field and can expand rows internally. Dedupe later if needed.
B) Donors with .edu emails, excluding staff subdomain
- 1: Contacts › Email: Email Contains
.edu - 2: Contacts › Email: Email Does Not Contain
@staff.example.edu - Logic:
1 AND 2
C) People in a stewardship file who are also major donors
- 1: Contacts: Contact ID Is In File → select your file and the ID column.
- 2: Giving Summary: Total Giving >=
5000 - Logic:
1 AND 2
D) Lapsed donors (no gifts in last 365 days)
- 1: Giving Summary: Last Gift Date Is On or Before
1 Year Ago - 2: Giving Summary: Total Giving >
0 - Logic:
1 AND 2
If your schema includes a dedicated “lapsed” flag, use that field instead for faster queries.
E) GDPR: contacts with no email on file
- 1: Contacts › Email: Email Is Blank
- Logic:
1
Results-first tips (get the right audience)
- Use exact matches when you can. For known values (IDs, statuses), pick Equals. Use Contains for partials such as email domains. Use Regex only for edge cases.
- Set clear date boundaries. Prefer exact dates where possible. When you use dynamic values such as
30 Days Ago, preview to confirm the window. - Choose fields that match the question. For “has ever given” or “most recent gift,” use Giving Summary fields. For a specific transaction event, use Transactions fields.
- Membership checks. With Is In File / Is In Dataset, pick the column that actually holds the IDs or emails you care about. Trim spaces and keep casing consistent. Re-preview after selecting.
- Build incrementally. Add one condition at a time and check the audience size after each step.
- Group ORs when mixing with ANDs. Wrap the OR conditions:
1 AND (2 OR 3). - Mind duplicates with transaction filters. Use Giving Summary fields when you expect one row per constituent.
- Spot-check results. Preview a few records to confirm dates, email domains, and membership behave as you expect.
Troubleshooting
Cannot find an operator (for example, “greater than”)
- What it means: That option does not work for this kind of field.
- Best fix: Pick an operator that fits the field, or switch to a field that supports it.
- Example: Use Contains / Starts With for text. Use Greater Than / Less Than for numbers or dates.
Getting way too many results
- What it means: Your filters are too broad, often because you used OR where you meant AND.
- Best fix: Tighten the logic.
- Try switching OR → AND, add another condition, or narrow date and amount ranges.
“Is In File” shows a validation warning
- What it means: This is a warning, not a hard error. Your file column format may not match the field.
- Best fix: Clean the file, then try again.
- Make the column format consistent (all text or all numbers), remove extra spaces, keep leading zeros (format as text), save as CSV, then re-upload.
Quick reference: operators by type
| Operator | String | Number | Date/ Datetime | Boolean |
|---|---|---|---|---|
| =, <> | ✔︎ | ✔︎ | ✔︎ | ✔︎ |
| Is Blank / Is Not Blank | ✔︎ | ✔︎ | ✔︎ | ✔︎ |
| Contains / Does Not Contain | ✔︎ | |||
| Contains (Regex) / Does Not Contain (Regex) | ✔︎ | |||
| >, >=, <, <= | ✔︎ | ✔︎ | ||
| Is In File / Is Not In File | ✔︎ | ✔︎ | ✔︎ | ✔︎ |
| Is In Dataset / Is Not In Dataset | ✔︎ | ✔︎ | ✔︎ | ✔︎ |