ChangelogBook a demoSign up

Campaign schema

Overview

Campaigns is the channel-level reporting surface in Intelligence, covering Emails, Ads, and SMS. It requires a specific schema configuration using interaction models and asset models.

This page covers how to set up your schema for Campaigns and provides entity relationship diagrams for each channel type.


Set up your schema for Campaigns

Campaigns requires a parent model with interaction models configured in your schema. A standard parent model with only event and related models is not enough — the Campaigns page will show a "configure a parent model" warning until this is done.

StepWhat to doWhy
1Go to Customer Studio, then Schema and select your parent model.Campaigns reads from the same schema as the rest of Customer Studio.
2Add an event model as a relationship from the parent model, then set its Event type to a specific interaction type (for example, Email Delivered, Sessions, or SMS Sent) rather than leaving it as Generic.Setting a specific event type converts the event model into an interaction model, which is what Campaigns requires.
3(Optional) Relate the interaction model to an asset model that represents the campaign content — such as which email, ad, or SMS message was sent.Asset models enable Campaigns to break down reporting by individual campaign content, not just by channel.

The Campaigns page shows tabs for Emails, Ads, and SMS. Which tabs appear depends on which interaction types you've configured in your schema. For example, configuring an Email Delivered interaction model enables the Emails tab.


Model types

Campaigns uses two main model types: Events (interaction models) and Assets. The sections below describe each model type and provide schema diagrams.

Events

Events connect a user to an asset model. Events require:

  1. a timestamp
  2. a relationship with a parent model
  3. a relationship with an asset model

Events

Apply one of the standard Event types to an Event to populate the default metrics on the various asset dashboards of the Campaigns page. We will add more Event types over time.

Event types

Assets

Assets are the most granular elements of a campaign. For paid channels this might be ads and for lifecycle marketing this might be an email or even a variant.

Assets

We support the following Asset types:

  • Emails
  • SMS
  • Ads

Asset types

Message assets

Campaigns for messages, such as emails and SMS, leverages three types of models:

  1. Users are the parent model.
  2. Events are events that connect users to an asset, such as email clicks or opens.
  3. Emails are a type of asset.

Schema

In the entity relationship diagram (ERD) below, we show a schema for messages using emails as an example. The ERD shows expected model columns and their relationships, with necessary primary (PK) and foreign keys (FK).

Messages schema

In the ERD above, Users are connected to different Events -- such as email opens and clicks -- through a unique user_id. Events require a timestamp. They can have additional columns based on the Event type, such as a clicked_url for email click events.

Each Event is also linked to an Asset model, either email or SMS, by way of a message_id. The message can have a variety of columns, including date columns such as start_at and ended_at to indicate the dates that email asset was in use.

Ad assets

Campaigns for ads leverages four types of models:

  1. Users are the parent model.
  2. Sessions are a type of Event and connect a user to an ad. They necessarily have a timestamp and typically include utm parameters.
  3. Ads are a type of Asset, and minimally include campaign and platform information.
  4. Ad stats is a model that indicates engagement with an ad, such as clicks, impressions, and spend. It should fit the format of this dbt model.

The relationships between these models depend on whether your ad model has information about the ad itself, such as an ad_name or ad_group_id alongside the ad campaign information or just campaign information.

Below are entity relationship diagrams (ERDs) that show expected columns and relationships in both situations, including necessary primary (PK) and foreign keys (FK). We note differences between the schemas.

Schema with only campaign data for ads

Ads schema with campaign data

The ERD above includes the important features:

  • Sessions connect to Ads with a campaign identifier based on what's available in the session, in this case through a mapping from utm_campaign to campaign_name.
  • Ads also connect to Ad stats through a campaign identifier, in this case the campaign_id.
  • Hightouch generates a primary key in the Ad stats model that combines the date_day and campaign_id columns.

Schema with ad, ad group, and campaign data

Ads schema with additional ads data

Two notable differences in the schema are evident when there is additional ad and ad group information.

  • Sessions now connect to Ads through an identifier at the level of an individual ad, in this case with a mapping from utm_content to ad_name.
  • Ads also now connect to Ad stats through an individual ad level identifier, here the ad_id.
  • Both Ads and Ad stats have additional columns for individual ad level information.

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: May 18, 2026

On this page
  • Overview
  • Set up your schema for Campaigns
  • Model types
  • Events
  • Assets
  • Message assets
  • Ad assets
Send feedback