Integrating with Braze
Set up A/B test in Braze and analyze in Eppo
Braze’s built in A/B testing for campaigns combined with Eppo’s data warehouse native integrations allow for teams to measure downstream metrics such as revenue or retention. This combination of tools gives teams richer insights into their CRM and Lifecycle Marketing campaigns.
In this section, we will walk through how to set up your analysis in Eppo if you use Braze for experimentation. This can be especially helpful to users who want to leverage Braze’s UI to easily setup a test without additional code and compare test results using data warehouse metrics that cannot be shared with Braze. More specifically, this guide will provide instructions on how to:
- Integrate your Braze data to your warehouse
- Set up your experiment in a Braze Campaign or Canvas
- Set up Eppo to measure Braze experiments
Braze Setup
Integrate Braze campaign data to warehouse.
Since Eppo can analyze experiments directly in your warehouse, all that is needed is the Braze campaign data in the warehouse that you have connected to Eppo. Braze allows you to export campaign data using Currents. Additionally, Braze data can be made available in your Snowflake instance through Braze Data Sharing.
Creating experiments in Braze
Braze has two main paths for creating an experiment that will have different downstream data schemas associated with them:
- Canvas -- Multi-step campaign builder that allows users to test different steps throughout a user's journey. See Setting up a Variant in a Canvas in Braze's documentation.
- Campaign -- Send one off messages through a variety of channels available through Braze. See Creating multivariate and A/B tests in a Campaign
Create a Canvas in Braze
Follow Braze's documenation for setting up an experiment within Braze. This will include:
- Adding a variant within your Canvas.
- Determining the steps that should be included in each variant.
- Who is eligible for this Canvas.
- Scheduling when this Canvas should run.
Create a Campaign in Braze
Follow Braze’s documentation for setting up your experiment within a Campaign. This will include:
- Selecting the message type (e.g., Push, Email, In-App Message, etc.).
- Defining the target audience for your A/B test.
- Configuring the variations.
- Scheduling the campaign.
Once your experiment is set up, launch the test in Braze.
Eppo Experiment setup
The first step to setting up your experiment in Braze is to create an Assignment table in Eppo based on user-level Braze campaign data in your warehouse. We recommend setting up separate Assignments table for Canvas experiments and Campaign experiments since each will use different metadata in the Braze event payload.
Use Braze’s docs to determine which event schema you should use as experiment assignments in Eppo. More context about the specific event types to use are provided below.
Canvas Assignment Table Setup
For Canvas experiments, there are two ways to create experiments:
- At the Canvas level that corresponds to the users.canvas.Entryevent
- Within the Canvas that corresponds to the  users.canvas.experimentstep.SplitEntryevent
For experiments on the Canvas entry, canvas_name is used as the Experiment name, and the canvas_variation_name as the Variation name in the Assignments table.
For experiments witin a Canvas, experiment_step_id is uesed as the Experiemnt name and experiment_split_id is used as the Variation name in the Assignment table.
Additionally time as the Timestamp for both of these experiment types on the Eppo Assignments table.
These events in Braze represents when a user enters an Experiment step or a Canvas and the timestamp will be the most accurate representation of when a user was exposed to the experiment.
Your Braze Canvas Assignments table will look like this:
| Column | Type in Eppo | Data from Braze Table | 
|---|---|---|
| assignment_timestamp | Timestamp | time | 
| user_id | Experiment subject ID | user_idThis should be an ID that maps to the metrics used in a experiment, this will most likely be an internal User ID | 
| experiment | Experiment key | canvas_nameandexperiment_step_id | 
| variant | Variant | canvas_variation_nameandexperiment_split_id | 
See below for a visual overview of what Braze Canvas steps map to as Braze data.

Campaign Assignment Table Setup
For Campaign experiments, you will identify the channels your team uses. Typically we recommend using Send events to represent when a user was entered into an experiment. The following Send events all have a campaign_name to represent the Experiment name, message_variation_name to represent the Variation name, and time to represent the timestamp in an Eppo Assignment table:
- users.messages.contentcard.Send
- users.messages.email.Send
- users.messages.pushnotification.Send
- users.messages.sms.CarrierSend
- users.messages.sms.Send
- users.messages.whatsapp.Send
Your Braze Campaign Assignments table will look like this:
| Column | Type in Eppo | Data from Braze Table | 
|---|---|---|
| assignment_timestamp | Timestamp | time | 
| user_id | Experiment subject ID | user_idThis should be an ID that maps to the metrics used in a experiment, this will most likely be an internal User ID | 
| experiment | Experiment key | campaign_name | 
| variant | Variant | message_variation_name | 
Including Campaign and Canvas Specific Metrics with a Secondary Entity
When analyzing channel outreach experiments, it's common to measure both overall user-level metrics (engagement, revenue, retention, etc.) and campaign-specific metrics (click through rate, unsubscribes, etc.).
A Secondary Entity on the Assignments table will ensure any message-specific metric such as Clicks, Bounces, or Opens are specific to the Campaign or Canvas experiment.
To include Campaign or Canvas specific metrics:
- Create a new Entity called Combined ID.
- On the Braze Campaign or Canvas Assignments table, concatenate the User ID and Campaign or Canvas Name and adding it as a Secondary Entity called combined_idFor example, a Campaign called Email_14_day_nurture, would be concatenated to12345-Email_14_day_nurtureas thecombined_id.
- Include this combined_idon the Assignments table as a Secondary Entity. Your Assignments table should look like this:
| Column | Type in Eppo | Data from Braze Table | 
|---|---|---|
| assignment_timestamp | Timestamp | time | 
| user_id | Experiment subject ID | user_idInternally defined User ID | 
| experiment | Experiment key | campaign_name,canvas_name,experiment_step_id | 
| variant | Variant | message_variation_id,canvas_variation_name, andexperiment_split_id | 
| combined_id | Combined ID Entity as the Secondary ID | Concatentated campaign_name,canvas_name, orexperiment_step_idwithuser_id | 
- Concatenate the Campaign or Canvas Name with the User ID on your Braze Facts table and use that as the Entity for the Fact. Your Fact table should look like this:
| Column | Type in Eppo | Data from Braze Table | 
|---|---|---|
| timestamp | Timestamp | time | 
| user_id | No column specified | user_idInternally defined User ID | 
| experiment | No column specified | campaign_name,canvas_name,experiment_step_id | 
| combined_id | Combined ID as the Entity ID | Concatentated campaign_name,canvas_name, orexperiment_step_idwithuser_id |