ChangelogBook a demoSign up

Create audiences

AudienceMarketers
PrerequisitesCompleted 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:

Audience overview

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.

TypeDescriptionExample use
BatchEvaluated on a schedule or manually refreshed.Weekly “High-LTV Customers” campaign
Real-timeEvaluated 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

  1. Go to Customer Studio → Audiences.
  2. Click Add Audience.
    Add audience
  3. Select a Parent Model to segment (for example, Users, Accounts, or Devices).
    Select parent model
  4. 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 typeUse it to filter by…Example filters
PropertiesColumns on the parent modelemail contains "@gmail.com"
RelationsLinked records (purchases, accounts)has Purchase where amount > 100
EventsActions users performedProduct Viewed within last 30 days
AudiencesMembership in another audienceis in VIP Members
JourneysParticipation in a journeycurrently in Abandoned Cart Journey
TraitsCustom or computed fieldscustomer_score > 80

Add filters
Filters

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.

GroupCondition
(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 size to estimate audience size.
  • Click the member count (for example, 110 members) to preview sample records.
    Calculate size

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.

  1. Click the Limit audience size icon.
  2. Choose Top or Bottom, specify size, and select a sort column (for example, purchase_amount or last_purchase_date).
    Limit size

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.

Preview destination


Step 4: Analyze your audience

Use Insights to analyze composition and overlap.

  • Click Show Insights to open the panel.
    • Overlap compares shared members with another audience.
    • Breakdown displays distribution by trait, geography, or behavior.

Show insights
Inspect insights


Step 5: Save and reuse audiences

Click Save audience to finalize your setup.

Save audience

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.

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.city filters by a nested property inside an object.
  • booking.0 filters 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:

User property filter

If the column is on an event model:

Event property filter

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.

Drag and drop

Supported operators

Data typeSupported operators
Textualcontains · does not contain · equals · does not equal
Numericalequals · 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 typeSupported operators
Textualequals · does not equal · contains · does not contain · starts with · ends with · exists · does not exist
Numericalequals · does not equal · greater than · less than · greater than or equal to · less than or equal to · exists · does not exist
Booleanequals · does not equal · exists · does not exist
Timestampequals · 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”).

Example percentile

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.

Example date filters

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 → includes Country = null
  • Use special behavior for null values:
    Country does not equal USA → excludes Country = null

Null workspace settings


Experimentation and governance

Split audiences for experiments

Divide an audience into random or rule-based groups for testing.

Split typeDescription
A/B SplitDivide members randomly between two syncs.
Multi-branch SplitRoute 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.

BehaviorDescription
Automatic updatesNew data or events trigger re-evaluation.
Manual refreshTrigger a full recalculation from the overflow menu.
SnapshotsFreeze 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.

Schema labels in dropdown

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.

Schema labels in audience filtering

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).

    Householding audience example

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

    Account management audience example

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 started within last 24 hours
  • Event: Order completed not 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: search where category = flight OR hotel
  • Event: search_time performed 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

GoalRecommendation
Ensure consistent segmentationBuild complex logic once as reusable traits.
Avoid audience driftUse snapshots to lock membership for control groups.
Simplify experimentationKeep split audiences clearly named (for example, retargeting_a and retargeting_b).
Test before activationUse sampling to preview results on smaller datasets.

Troubleshooting

IssueLikely causeResolution
Audience size changes unexpectedlyReal-time evaluation enabledUse snapshots to lock membership
Filters return no resultsWrong relationship or null handlingCheck schema configuration and null settings
Members appear in both split groupsSplit percentages edited after launchAvoid editing live splits
Cannot assign syncMissing permissionsContact 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.

Refresh suggestions

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.

Parent model error

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:

Ready to get started?

Jump right in or a book a demo. Your first destination is always free.

Book a demoSign upBook a demo

Need help?

Our team is relentlessly focused on your success. Don't hesitate to reach out!

Feature requests?

We'd love to hear your suggestions for integrations and other features.

Privacy PolicyTerms of Service

Last updated: Oct 29, 2025

On this page

Was this page helpful?