ChangelogBook a demoSign up

Campaign Schema

Campaigns is only available on Business tier plans as an add-on product.

Overview

Hightouch's Campaigns product leverages two main model types: Events and Assets. This guide walks you through configuring these models in your schema.

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: Aug 14, 2025

On this page
  • Overview
  • Events
  • Assets
  • Message assets
  • Ad assets

Was this page helpful?