ChangelogBook a demoSign up

Define data schema

AudienceData or analytics engineers, platform admins, technical marketers
Prerequisites
  • A connected data source (e.g., Snowflake, BigQuery, Databricks)
  • Technical understanding of your data and its relationships
  • Familiarity with Hightouch models (recommended)

Schema setup is a one-time configuration that determines what data marketers can use in the Customer Studio audience builder. It defines models, relationships, and events that power audience filtering.


What you'll learn

After reading this article, you'll know how to:

  • Create parent, related, and event models
  • Define relationships and join keys across datasets
  • Configure optional schema features like merge columns and sampling
  • Structure schema so marketers can build audiences more easily

Overview

Before marketers can build audiences visually, data teams configure the schema in Customer Studio.

In Customer Studio, you’ll define:

  • Parent model: The base entity audiences are built from (for example, Users)
  • Related models: Additional context joined to the parent (for example, Households)
  • Event models: Timestamped behaviors (for example, Product Viewed)

Once configured, marketers can build audiences using warehouse data.

Audience example


What is a data schema?

Imagine you run an online plant store. You want to target customers in the Midwest who recently bought a succulent.

To build this audience, Hightouch needs:

  • Who your customers are (a Users table)
  • What they’ve done (a Purchases table)

Together, these models and relationships form your data schema—a map of what marketers can filter on (for example, purchased succulents in the last 30 days) when building audiences.

Schema builder


Coordinate with business teams

Before building your schema, align with marketers or campaign owners on:

  • Which entities they’ll target (for example, Users, Accounts)
  • Which attributes or behaviors they want to filter on
  • Whether real-time or batch syncs are part of their workflow
  • How frequently audiences need to update

Use this input to decide:

  • Which tables or views to expose
  • Which relationships to define
  • How to name models and columns clearly for business users

Schema design best practices

  • Use clear, marketer-friendly names (avoid internal abbreviations)
  • Keep the schema focused on fields that support targeting and analysis
  • Start small (one parent model + a few related/event models), then expand over time
  • Validate join keys early to avoid confusing audience results

Schema setup

1. Define the parent model

The parent model is the core dataset for audience building--most commonly a Users table, but it could also be Accounts, Households, or Devices.

Requirements:

  • One row per entity (for example, one row per user)
  • A stable, unique primary key (for example, user_id)
  • Fields useful for filtering (for example, email, region, created_at)

Create a parent model

  1. Go to Customer Studio → Schema.

  2. Click Create parent model.

    Create parent model

  3. Select a modeling method:

    • Table selector (default)
    • SQL query
    • dbt model
    • dbt Cloud model
    • Looker model
    • Sigma model

    Select modeling method

  4. Preview the results, then click Continue.

    Continue setup

  5. Configure the model:

FieldDescriptionExample
NameDisplay name in Customer StudioUsers
DescriptionContext for your teamRepresents end users of the platform
Primary keyUnique ID columnuser_id
Primary labelDisplay name in audience previewsfull_name or email
Secondary labelAdditional preview contextsignup_date
Column suggestions are enabled by default to help marketers discover useful filters.
  1. Click Create parent model.

    Configure model


Related models join to the parent via a foreign key and provide additional filtering context—like purchases, subscriptions, or devices.

Examples:

  • Households linked to People by household_id
  • Subscriptions linked to Companies by company_id
  1. Go to Customer Studio → Schema.

  2. Click the + icon next to your parent model.

  3. Select Create related model.

    Create related model

  4. Choose your table or modeling method and preview results.

  5. Configure the relationship:

FieldDescriptionExample
NameRelated model nameHouseholds
DescriptionContext for marketersUser purchase records
RelationshipCardinality (1:many, etc.)1:many
Foreign key (join key)Column joining modelsuser_id

To match on multiple columns (for example, product_id and location_id), enable multiple join keys in the relationship configuration.

The primary key uniquely identifies rows. The join key connects tables.
  1. (Optional) If you want to add columns from the parent model onto the related model, turn on Merge columns.

  2. Click Create related model.

    Configure related model


3. Add event models

Event models represent timestamped behaviors like page views, logins, or checkouts. These power both real-time and historical audience logic.

Requirements:

  • At least one timestamp column (for example, created_at)
  • A foreign key linking to the parent model (for example, user_id)

Create an event model

  1. Go to Customer Studio → Schema.

  2. Click the + icon next to your parent model.

  3. Select Create related event.

    Create event

  4. Choose your table or modeling method and preview results.

  5. Click Continue.

    New event

  6. Configure the event:

FieldDescriptionExample
NameEvent nameProduct Viewed
DescriptionContext for marketersTracks user product views
Timestamp columnWhen the event occurredcreated_at
Event typeCategory (Generic, Checkout)Generic
Primary keyFor referencing or triggering Journeysevent_id
RelationshipCardinality to parent1:many
Foreign key (join key)Column joining event with parentuser_id

The primary key uniquely identifies a row. The join key links it to another model. Often, the primary key in the parent model becomes the join key in a related model, but they serve distinct purposes.

  1. (Optional) If you want to add columns from the parent model onto the event model, turn on Merge columns.

  2. Click Create event.

    Create event

If all events live in a single table, you can create multiple event models by filtering by event type (for example, Page View and Add to Cart).


Manage schema

View and edit your schema

To manage models in your schema:

  1. Go to Customer Studio → Schema.
  2. Select a model to open its details page.
  3. Use the tabs across the top to configure the model.

Available tabs depend on the model type:

  • Columns: enable fields, set aliases, redact values, and manage suggestions
  • Relationships: create and edit relationships to other models
  • Match Booster: enhance match rates using additional identifiers (if enabled)
  • Sampling: configure sampling to speed up previews
  • Activity: review changes and see what depends on the model
  • Configuration: manage core model settings like primary key, labels, and suggestion refresh interval

Delete a model

  1. Open the model you want to remove.
  2. Click the three-dot menu, then select Delete.

Delete a model

Deleting a model removes it from the audience builder. Any audiences using it will break and must be updated.


Columns

Use the Columns tab to control which fields appear in Customer Studio and how marketers interact with them.

  1. Open the model you want to update.
  2. Go to the Columns tab.

Columns tab in model configuration

Enable or exclude columns

Use the toggle next to each column to control whether it appears in Customer Studio.

Disable columns when:

  • the field isn’t useful for filtering (for example, internal IDs)
  • the field adds noise for marketers
  • you don’t want it available in audience filters

Rename columns using aliases

Aliases control how columns appear in the audience builder.

For example:

  • geo_regionRegion
  • created_atSignup date

To set an alias, hover over the column and click the pencil icon.

Edit column alias

Redact column values in previews

Redaction hides values in places like audience previews and profile exploration, while keeping the column available for filtering.

This is useful for sensitive fields like:

  • email addresses
  • phone numbers
  • internal identifiers

Enable filter value suggestions

Suggestions help marketers choose common values from a dropdown when filtering (for example, brands like Nike or Adidas).

You can also control how often suggestions refresh from the model’s Configuration tab.

Refresh columns from your source

If you add or remove columns in your warehouse, you can refresh the columns available in the model.

  1. Open the model.
  2. Click the three-dot menu.
  3. Select Refresh columns available in source.

Refresh columns available in source


Relationships

Use the Relationships tab to define how models connect in your schema. These relationships power cross-model filtering in the audience builder.

  1. Open the model you want to update.
  2. Go to the Relationships tab.

Relationships tab in model configuration

Relationship types

Relationships define how rows connect across models:

RelationshipUse when...Example
1:manyOne parent maps to many related recordsOne user has many purchases
1:1One parent maps to one related recordA company has one active subscription
many:1Many records map to one shared recordMany users belong to one household

Use 1:many for most behavioral data (for example, purchases, page views). Use many:1 when referencing shared entities like plans or organizations.

Add a relationship

  1. Click Add relationship.
  2. Choose the relationship type (for example, 1:many or many:1).
  3. Select the model you want to connect to.
  4. Choose join keys for each model.
  5. Click Save.

Create a new relationship

Edit an existing relationship

To update a relationship:

  1. Go to the Relationships tab.
  2. Select the relationship you want to edit (for example, Purchase History).
  3. Update join keys, the connected model, or cardinality.
  4. Click Save changes.

Match on multiple join keys

Multiple join keys let you match models on two or more columns. This is helpful when you need compound keys (for example, product_id and location_id).

Enable multiple join keys

  1. Open the model and go to the Relationships tab.
  2. Select the relationship you want to edit.
  3. Toggle Multiple join keys ON.
  4. Select the additional join key columns.
  5. Click Save changes.

Toggle multiple join keys

Merge columns

Merge columns let you surface fields from a parent model into a related or event model, so marketers can filter on those fields without switching models.

This is useful when:

  • the related/event model doesn’t include marketer-friendly fields like region or plan name
  • you want to reduce duplication across traits or audiences
  • marketers need both behavior (events) and customer attributes in the same workflow

Merged columns appear as read-only copies in the target model and are filterable like native fields.

Merge column eligibility

Whether you can merge columns depends on the relationship’s cardinality:

Relationship typeMerge allowed?Merge directionUI toggle appears?
1:1✅ YesEither direction✅ Yes
1:many❌ NoN/A❌ No
many:1✅ YesFrom parent → related✅ Yes (on related)

Examples:

  • Users → Purchases

  • Merge geo_region from Users so marketers can filter Purchases by customer location.

  • Products → Product Viewed events

  • Merge brand or category from Products so marketers can build audiences based on product attributes.

Enable merge columns

  1. Open the model and go to the Relationships tab.
  2. Select the relationship you want to edit.
  3. Under Merge columns, toggle Merge columns ON.
  4. Choose the columns you want to merge, then click Save changes.

Merge columns toggle

Through relationships

Through relationships let you connect two models through an intermediate model (a linking table). This is useful for many-to-many scenarios.

Example: Users → Memberships → Subscriptions

  • Users join to Memberships on user_id
  • Memberships join to Subscriptions on subscription_id

This enables filters like “users with an active subscription” without duplicating logic.

Entity relationship diagram model

Set up a through relationship

Through relationships are configured in the Relationships tab of your parent model.

  1. Create the two direct relationships:

    • Users → Memberships (1:many)
    • Memberships → Subscriptions (many:1)

    Intermediate table

  2. Select your parent model, then open the Relationships tab.

  3. Click Add through relationship.

    Add through relationship

  4. Under Access, select the model you want to access (for example, Products).

    Select model

  5. In the through dropdown, choose the indirect path that connects your parent model to the target model (for example, PurchasesProducts).

    Choose path

  6. Click Save.


Match Booster

Match Booster enhances match rates by enriching your schema with additional identifiers from Hightouch’s identity graph.

Enable Match Booster

  1. Open your parent model.
  2. Go to the Match Booster tab.
  3. Toggle Enable Match Booster.
  4. Select one or more identifier columns (for example, email or phone).
  5. Click Initialize Match Booster to start enrichment.

Match Booster tab

Learn more: Match Booster overview →


Sampling

Sampling creates a smaller subset of your model data to improve performance when previewing audiences.

Enable sampling

  1. Open your model.
  2. Go to the Sampling tab.
  3. Turn on sampling and configure the settings.
  4. Click Save & run sampling.

Learn more: Sampling →

Sampling tab


Activity

Use the Activity tab to review recent changes and understand how a model is being used.

You can track:

  • recent updates to the model definition
  • audiences, traits, or syncs that reference the model
  • usage history for debugging and cleanup

Activity tab


Configuration

Use the Configuration tab to manage core model settings such as primary key and preview labels.

Common settings include:

  • Primary key
  • Primary label
  • Secondary label
  • Column suggestion refresh interval

Configuration tab

Column suggestion refresh interval

Hightouch can automatically refresh filter suggestions so dropdown values stay up to date as your warehouse data changes.

  1. Open your model.
  2. Go to the Configuration tab.
  3. Under Column suggestion refresh interval, choose how often suggestions should update.

Column suggestion refresh interval dropdown

This setting controls how frequently Hightouch updates suggested dropdown values in the audience builder.

It does not affect:

  • live audience results
  • sync behavior
  • warehouse queries (these always use your source-of-truth data)

Refreshing columns updates the fields and dropdown values shown in filters. It does not change your warehouse data or audience results.


What’s next?

After defining your schema, choose the next step based on your role.

If you're managing governance and delivery

Set up rules that control how data flows to destinations and how consent is enforced:

  • Destination rules
    Define sync behavior, redaction policies, and delivery restrictions per destination.

  • Subsets
    Apply destination-specific filters (for example, opt-outs) without changing core audience logic.

  • OneTrust Snowflake Native App
    Enforce consent policies using Snowflake-native integration with OneTrust.

If you're a marketer

Once the schema is in place, you can begin building audiences:

  • Audiences
    Use filters, traits, and events to define dynamic segments directly from your data.

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: Jan 23, 2026

On this page

Was this page helpful?