| Audience | Marketers |
| Prerequisites | Completed schema setup by your data team |
Audiences define the group of users or accounts you want to target in your campaigns. Using the visual audience builder, marketers can filter, preview, and activate audiences without writing SQL.
Learning objectives
After reading this article, you’ll know how to:
- Create a new audience in Customer Studio
- Apply filters to define and refine audience membership
- Preview and validate audience results
- Limit and control audience size
- Analyze and reuse audiences
- Sync audiences to destinations
Overview
The audience builder lets you visually define and activate segments of users or accounts. It’s designed for marketers to build precise audiences using data from your warehouse, preview the results, and activate them directly in campaigns.
You can filter audiences based on properties, events, relationships, and traits, then preview and activate them directly in your marketing and advertising tools.
Once created, audiences can be:

Audiences are built from models configured by your data team. These models define the source data you’ll use to segment users, accounts, or other entities.
Audience types (batch vs real-time)
Hightouch supports both batch and real-time audience evaluation.
| Type | Description | Example use |
|---|---|---|
| Batch | Evaluated on a schedule or manually refreshed. | Weekly “High-LTV Customers” campaign |
| Real-time | Evaluated continuously as new events arrive. | “Users who searched flights in the last 10 minutes” |
Use batch audiences when you need stable segments that update on a predictable cadence, such as lifecycle or nurture campaigns.
Use real-time audiences when you want to respond instantly to user behavior like triggering an ad, notification, or personalization within seconds of an event.
Create and refine audiences (core workflow)
Step 1: Create a new audience
- Go to Customer Studio → Audiences.
- Click
Add Audience.

- Select a Parent Model to segment (for example,
Users,Accounts, orDevices).

- Name your audience (for example, High-Value Customers) and add an optional description.
Step 2: Apply filters
Start from an audience template or create filters from scratch.
| Filter type | Use it to filter by… | Example filters |
|---|---|---|
| Properties | Columns on the parent model | email contains "@gmail.com" |
| Relations | Linked records (purchases, accounts) | has Purchase where amount > 100 |
| Events | Actions users performed | Product Viewed within last 30 days |
| Audiences | Membership in another audience | is in VIP Members |
| Journeys | Participation in a journey | currently in Abandoned Cart Journey |
| Traits | Custom or computed fields | customer_score > 80 |


If you find yourself recreating the same logic across multiple audiences, convert that logic into a reusable trait. Traits help maintain consistent segmentation.
Combine filters with AND/OR logic
Use AND, OR, and nested groups to express complex logic.
Example:
Include users who made a purchase or added to cart, and belong to the Gold tier.
| Group | Condition |
|---|---|
| (A) | has Purchase where amount > 100 OR added to cart within last 7 days |
| (B) | loyalty_tier equals "Gold" |
| Audience logic | (A) AND (B) |
Unexpectedly small results often indicate a one-to-many relationship mismatch or overlapping event time windows. Check your schema relationships and event time filters.
Step 3: Preview and validate your audience
After defining filters, preview your audience to confirm that your logic returns the expected members.
- Click
Calculate sizeto estimate audience size. - Click the member count (for example,
110 members) to preview sample records.

Use Sampling to test filters and preview large datasets without querying your entire warehouse.
Limit audience size
Limit audience size to focus on your highest-value members or to run controlled experiments on an audience subset.
- Click the
Limit audience sizeicon. - Choose Top or Bottom, specify size, and select a sort column (for example,
purchase_amountorlast_purchase_date).

You can also limit by percentile (for example, top 25th percentile of spend). The percentile option appears only for numeric columns without value suggestions enabled.
Preview with destination rules
If your workspace uses destination rules, you can select a destination to preview how the audience will sync before saving.

Step 4: Analyze your audience
Use Insights to analyze composition and overlap.
- Click
Show Insightsto open the panel.- Overlap compares shared members with another audience.
- Breakdown displays distribution by trait, geography, or behavior.


Step 5: Save and reuse audiences
Click Save audience to finalize your setup.

Reuse audiences with templates
To create repeatable logic, apply an audience template directly in the builder.
Templates let you standardize approved audience definitions for faster setup.
Clone audiences
To duplicate an existing audience, open the overflow menu and click Clone.
You can modify filters, rename the copy, and choose which syncs to duplicate.
Step 6: Sync to destinations
After saving, activate your audience by syncing to tools such as CRMs, ESPs, or ad platforms.
Learn more in Sync audiences →
Run a test sync to a sandbox destination before enabling production syncs. This helps validate column mappings and audience behavior without affecting live campaigns.
Advanced filtering and configuration
Use these optional tools to create more sophisticated or large-scale audiences.
Filter using related models
If your data includes relationships (for example, Users → Orders → Items), you can build filters across connected models. This lets you target users based on behaviors or attributes in other tables.
Example
Target users who placed an order worth more than $100 where at least one item purchased was in the “Flights” category.
If related models or expected fields are missing, your data team may need to adjust schema relationships or merge columns.
Filter nested JSON data
Some columns contain nested JSON objects or arrays (type unknown JSON).
You can filter inside these structures using dot-path notation to access specific fields.
For example:
booking.product.geo.cityfilters by a nested property inside an object.booking.0filters by the first item in an array.
This is useful when event data or object payloads store multiple attributes within a single column.
JSON filtering is supported on parent, event, and related models.
Example JSON
{"inventory":{"on_order":50,"stock":750,"warehouse":"WHB"}, "dimensions":[9, 8, 7]}
{"inventory":{"on_order":10,"stock":120,"warehouse":"WHA"}, "dimensions":[5, 4, 3]}
If the column is on a parent model:

If the column is on an event model:

How to filter
Use dot-path notation to specify the exact field you want to filter on. Hightouch supports both object and array traversal for nested JSON fields.
By default, JSON columns are treated as type unknown with the exists operator. You can manually set the data type—string, number, or boolean—to unlock the operators that make sense for that field.
All standard operators supported in the audience builder (for example, equals, contains, greater than, exists) are available, but only if they’re compatible with the selected type.
Preview
Depending on your dataset size and how recent your events are (if filtering event data), you may use the member preview to confirm that your JSON paths and filters return the expected results.
JSON filtering is an advanced feature intended for users who understand their data structure. If you’re unsure which JSON fields to target, ask your data team for help or contact your Customer Success team to enable JSON column filtering for your workspace.
Drag and drop values
For certain textual and numerical operators, you can upload a list of values directly into your filter using drag and drop instead of entering them manually.
This feature saves time when working with long lists, such as customer IDs, organization IDs, or email addresses, so you don’t have to copy and paste each value.
You can drag and drop .txt or .csv files containing comma-separated values (CSV) directly into the filter’s value field.
Example use case
- You have a CSV file with hundreds of organization IDs.
- Instead of entering each ID manually, drag and drop the file into the input box of a property filter.
- Hightouch automatically uploads and parses the list of values for you.

Supported operators
| Data type | Supported operators |
|---|---|
| Textual | contains · does not contain · equals · does not equal |
| Numerical | equals · does not equal |
Operator reference
Each filter condition in the audience builder uses a set of comparison operators to determine whether records meet your criteria.
The available operators depend on the data type (text, number, Boolean, or timestamp).
Use this table to confirm which operators are available for each data type.
| Data type | Supported operators |
|---|---|
| Textual | equals · does not equal · contains · does not contain · starts with · ends with · exists · does not exist |
| Numerical | equals · does not equal · greater than · less than · greater than or equal to · less than or equal to · exists · does not exist |
| Boolean | equals · does not equal · exists · does not exist |
| Timestamp | equals · before · after · within · not within · between · anniversary · exists · does not exist |
The anniversary operator checks whether a date falls on an anniversary of the current day—useful for birthdays, renewals, or membership milestones.
Textual operators
When filtering on textual data (for example, product brand, location, or email domain), you can use:
- equals
- does not equal
- contains
- does not contain
- starts with
- ends with
- exists
- does not exist
Behavior details
The contains operator performs a fuzzy match—it translates to the SQL LIKE operator with the value wrapped in % %.
The equals operator looks for an exact match (also using LIKE, but without surrounding wildcards).
Numerical operators
When filtering on numerical data (for example, price, score, or lifetime value), you can use:
- equals
- does not equal
- greater than
- less than
- greater than or equal to
- less than or equal to
- exists
- does not exist
You can use the drag and drop feature with the following operators: equals and does not equal.
When using greater than, less than, greater than or equal to, or less than or equal to, you can enter:
- an absolute numerical value (for example,
purchase_amount > 100), or - a percentile (for example, “top 50th percentile of lifetime value”).

To use the percentile option, make sure the column has value suggestions turned off in the schema configuration.
Percentile filtering is helpful when audience size, rather than a fixed number, is your targeting driver (for example, “top 10% of users by spend”).
Timestamp operators
When filtering on timestamps (for example, purchase date or last activity), you can use:
- equals
- before
- after
- within
- not within
- between
- anniversary
- exists
- does not exist
You can choose between rolling or calendar time periods for relative filters.
Examples:
- To find users active in the last 60 days → use “within previous 2 months” (rolling window).
- To find users active during a specific range → use “within previous 2 calendar months.”
If today is June 3, this filters for dates between April 1 and May 31.
If a column contains timezone data, that timezone is used when calculating date and time values. If not, Hightouch uses the warehouse’s default timezone for both stored values and current time calculations.

Operators vary by data type. If you don’t see an operator available for a specific column, check the column’s configured data type in your schema setup. For example, string types support text-based filters, while number types unlock percentile and inequality operators.
Configure null-value behavior
When building filters, you may encounter null data (for example, missing country values).
Admins can control how nulls behave for “not” operators in Workspace Settings.
Options:
- Treat null values like any other value (default):
Country does not equal USA→ includesCountry = null - Use special behavior for null values:
Country does not equal USA→ excludesCountry = null

Experimentation and governance
Split audiences for experiments
Divide an audience into random or rule-based groups for testing.
| Split type | Description |
|---|---|
| A/B Split | Divide members randomly between two syncs. |
| Multi-branch Split | Route members to multiple destinations. |
Each profile is assigned once, based on its primary key.
Changing split percentages can reassign users—use a snapshot to preserve consistency.
How audiences stay up to date
Audiences update automatically as your source data changes so campaigns always reach the right people.
| Behavior | Description |
|---|---|
| Automatic updates | New data or events trigger re-evaluation. |
| Manual refresh | Trigger a full recalculation from the overflow menu. |
| Snapshots | Freeze membership at a point in time to measure lift or maintain fixed test groups. |
Segment by households or accounts
In some workspaces, audience data is organized around more than one entity type, such as: People, Households, or Accounts. When you enable schema labeling, the audience builder automatically reflects these relationships.
This allows you to create audiences that consider shared characteristics or behaviors across related entities, rather than limiting segmentation to individuals.

With schema labels applied, filters adjust automatically so you can build audiences using data from connected entities. For instance, you can define a People audience that includes or excludes members based on traits of their associated Household or Account.

Examples:
-
Household segmentation: Include people in households that meet a shared condition (for example, at least one member identifies as female or holds an active subscription).

-
Account segmentation: Include people whose associated account shows recent activity or engagement (for example, a recent purchase or contract renewal).

Schema labeling enables you to build audiences using both individual and group-level data.
This supports coordinated targeting and measurement when multiple related entities—like people within households or employees within accounts—affect campaign outcomes.
Example use cases
Abandoned checkout retargeting
Goal: Retarget users who started checkout but didn’t complete.
Filters
- Event:
Checkout startedwithin last 24 hours - Event:
Order completednot performed in same window - Trait:
LTV > 200 - Property:
Email is not null
Sync to
- Facebook Custom Audiences
- Klaviyo List
Combine this audience with a subset or destination rule to exclude opt-outs.
Real-time travel personalization
Goal: Personalize offers for users who searched flights or hotels in the last 24 hours.
Filters
- Event:
searchwherecategory = flight OR hotel - Event:
search_timeperformed within 24 hours - Trait:
loyalty_status = Gold
Enable real-time evaluation, split 80/20 for testing, and sync to ad platforms.
Learn more in Same-session audiences →
Best practices
| Goal | Recommendation |
|---|---|
| Ensure consistent segmentation | Build complex logic once as reusable traits. |
| Avoid audience drift | Use snapshots to lock membership for control groups. |
| Simplify experimentation | Keep split audiences clearly named (for example, retargeting_a and retargeting_b). |
| Test before activation | Use sampling to preview results on smaller datasets. |
Troubleshooting
| Issue | Likely cause | Resolution |
|---|---|---|
| Audience size changes unexpectedly | Real-time evaluation enabled | Use snapshots to lock membership |
| Filters return no results | Wrong relationship or null handling | Check schema configuration and null settings |
| Members appear in both split groups | Split percentages edited after launch | Avoid editing live splits |
| Cannot assign sync | Missing permissions | Contact your workspace admin |
Common issues and detailed resolutions
Filter value suggestions not appearing
Ensure you’ve enabled column suggestions.
If suggestions are enabled but missing, refresh them in the filter UI.

Error: column "…" does not exist in _ht_with_column_casts
This occurs when a model column was deleted but cached in Hightouch.
Preview and re-save the model configuration to refresh cached columns.

If audience sizes or syncs change unexpectedly, review your schema relationships and sync schedules regularly to ensure alignment.
What’s next?
After creating audiences, you can activate and measure them using these related features: