Hightouch helps marketers activate their customer data from Snowflake to over 125 different applications. The Data Activation platform, powered by Reverse ETL, provides both a SQL-based UI as well as a no-code audience builder to help teams across an organization complete what is now being called the "last mile" of the Modern Data Stack.

Snowflake and Hightouch stack

Audience targeting strategies have become increasingly important in modern marketing due to the rising cost of advertising and the increasing expectations of consumers. While there are many ways organizations can target customers, one of the simplest strategies to optimize advertising spend is suppression audiences.

A suppression audience is a group of customers who are excluded from a marketing campaign to ensure that they do not see irrelevant ads. Suppression audiences can be created using various segments, such as current customers, churned customers, or those with low purchasing propensity. The idea behind suppression audiences is simple: you define who you do not want to target with your ads. By excluding certain groups from your campaign, you can focus on delivering relevant marketing to your desired audience. There are several reasons a company might want to suppress or exclude existing purchasers from their ad campaign. Firstly, it may be a product, like a subscription, that can only be purchased once. Another reason is that you may simply want to use different messaging for different audiences. Existing customers may be excluded in one campaign and exclusively targeted in another. Finally, it may be a product with a long replenishment cycle, so that purchasers are excluded from messaging for a certain amount of time after their purchase.

In this Quickstart, we will cover this last example, a suppression audience use-case where recent purchasers are added as an excluded (suppression) audience segment in a Youtube campaign run through Google Ads. Leveraging existing customer data in Snowflake, we will build a purchaser audience with Hightouch's no-code audience builder and sync an audience of users who recently made a purchase to Google Ads.

Prerequisites

What You'll Learn

What You'll Build

First, you need to have the data that you want to push prepared within Snowflake.

Log in to Snowflake

If you already have a Snowflake account, you can use your credentials to log in. If you do not already have an account, you can visit [https://signup.snowflake.com/]https://signup.snowflake.com/ to sign up for a 30-day free trial. You will want to make sure that the account you use in Snowflake has the permissions to create a new database, schema, and warehouse to be used by Hightouch.

Set-up Hightouch through Partner Connect

You can set up a database, schema, and warehouse for use with Hightouch by setting up Hightouch through Partner Connect in Snowsight. See the [https://hightouch.com/blog/hightouch-snowflake-partner-connect](detailed instructions) on the Hightouch Blog for more details.

  1. Click the Partner Connect tab under Admin.

Partner Connect

  1. Search for Hightouch (or scroll to the Data Integration section), and select it.

Select Hightouch

  1. View the Database, Warehouse, User, and Role that will be created for the integration, and click Launch.

Click Launch

  1. When the creation is complete, you will see a pop-up telling you that the creation has finished. Click Activate to be taken to Hightouch to log in.

Click Activate

  1. Log in to Hightouch using your Hightouch credentials, and you will have a Data Source from Snowflake created in Hightouch.

Create test data

First, we need to create a database and schema to hold the data.

CREATE DATABASE HIGHTOUCH_QUICKSTART;
CREATE SCHEMA HIGHTOUCH_QUICKSTART.DEMO;

USE HIGHTOUCH_QUICKSTART.DEMO;

Next, we create the customers and sales data, and a view to unify them to make the audience.

-- create customer list
CREATE OR REPLACE TABLE customers AS
SELECT sha1(seq4()) as user_id,
  'user'||seq4()||'_'||uniform(1, 3, random(1))||'@email.com' as email,
    case when uniform(1,6,random(2))=1 then 'Less than $20,000'
       when uniform(1,6,random(2))=2 then '$20,000 to $34,999'
       when uniform(1,6,random(2))=3 then '$35,000 to $49,999'
       when uniform(1,6,random(2))=3 then '$50,000 to $74,999'
       when uniform(1,6,random(2))=3 then '$75,000 to $99,999'
  else 'Over $100,000' end as household_income,
  round(18+uniform(0,10,random(3))+uniform(0,50,random(4)),-1)+5*uniform(0,1,random(5)) as age_band,
    case when uniform(1,10,random(6))<4 then 'Single'
       when uniform(1,10,random(6))<8 then 'Married'
       when uniform(1,10,random(6))<10 then 'Divorced'
  else 'Widowed' end as marital_status
  FROM table(generator(rowcount => 100000));

-- verify the data
select * from customers;

-- create random sales for those customers
CREATE OR REPLACE TABLE sales AS
select sha1(uniform(1, 100000, random(3)))::varchar(40) as user_id
  ,dateadd(second, uniform(1, 5256576, random(4)), ('2022-09-01'::timestamp)) as sale_timestamp
  ,uniform(10000,20000,random(5)) as cost_cents
from table(generator(rowcount=>50000));

-- verify the data
select * from sales;

-- create a view for easy lookup
create or replace view PC_HIGHTOUCH_DB.public.customer_sales as
select c.user_id, c.email, c.household_income, c.age_band, c.marital_status,
 max(s.sale_timestamp) as latest_sale, sum(cost_cents)/100 as ltv_dollars
from HIGHTOUCH_QUICKSTART.DEMO.customers c
 inner join HIGHTOUCH_QUICKSTART.DEMO.sales s on s.user_id=c.user_id
group by c.user_id, c.email, c.household_income, c.age_band, c.marital_status;

-- verify the data
select * from customer_sales;

Now we need to grant access to the view to Hightouch.

GRANT SELECT ON VIEW PC_HIGHTOUCH_DB.public.customer_sales TO ROLE PC_HIGHTOUCH_ROLE;

Now that we have our test data, we can create the audience in Hightouch and push it to Google Ads. Connecting to Hightouch from Snowflake via Partner Connect already created the data source within Hightouch.

Creating a Google Ads destination

To push data to Google Ads for use with a Youtube campaign, we need to create a destination.

  1. Navigate to destinations and click Add Destination.

Add destination

  1. Search for Google Ads, select it, and click Continue.

Select Google Ads

  1. Log in to Google Ads to authorize the connection. Once authorized, click Continue.

Login to Google AdsContinue after login

  1. Name the destination (ex. Sample Google Ads Destination) and then click Finish.

Name destination

Create a Parent Model

A parent model must first be defined for Hightouch to understand what Snowflake data to query. The creation of a parent model is a one time setup that can be ignored if already completed.

  1. Navigate to Audiences and click Configure parent model.

Configure parent model

  1. Select your Snowflake data source.

Select data source

  1. You will be presented with multiple options for setting up your parent model. For this Quickstart, select the Select a Table or View option.

Select Table or View

  1. Define your customer table by selecting the table that you'd like to build the model off of - in this case, the Customer Sales Table we created earlier in the Quickstart. Once selected, click Preview to ensure the data is available, and then click Continue.

Select Customer Sales

  1. Finalize the parent model settings by naming the model (Customer Sales), and defining your Primary Key (User_ID). Additionally, select your Content Label Fields which will display when previewing members of this audience (Email and UserId) and then click Finish.

Finalize parent model

Note: Hightouch supports a number of entity relationships like Related Models and Event Models to enable more complex targeting, however we are going to just leverage a parent model in this Quickstart. For more information, visit: https://hightouch.com/docs/audiences/schema.

Create Purchaser Audience

With the parent model defined, users can now leverage Hightouch's no-code audience builder to create any audience of customers.

  1. Navigate to the Audiences tab and click on Add audience.

Add audience

  1. Select the parent model of interest (in this case Customer Sales).

Select parent model

  1. Add the segmentation logic to identify those who have purchased within the last two months by clicking Add condition, then Have a property.

Add condition

  1. Click Select property, Latest Sale.

Select property

  1. Set the date criteria to be after previous 2 months.

After previous 2 months

  1. Click Preview results to see the users who will be included in the audience.

Preview results

  1. Once previewed, click Continue.

Continue after preview

  1. Name the audience "Recent Purchasers," and then click Finish.

Finish audience

Sync Audience to Google Ads

With the audience now created, we need to configure how often it is pushed to Google Ads for use with the Youtube campaign.

  1. Click on the recent-purchasers audience we just created and then click Add a sync.

Add sync

  1. Select the Google Ads destination that we set up previously.

Select Google destination

  1. Select the Google Ads account you would like to sync the audience to.
  2. Select Customer match user list as the sync type.

Customer match user list

  1. Set your user list type as "Contact_Info".
  2. Map the email column in the audience to the destination.

Map email

  1. Select Create a new user list.
  2. Under "Would you like Hightouch to automatically hash your PII data?" select "Yes, automatically hash PII for me." Then click Continue.
  3. Select the type of schedule for sending data. It should be set depending on how often the data changes and the cadence of your campaign. For this example, we can select "Interval" and select every 12 hours to sync the data twice daily.

Map email

  1. Click Finish.

This section will tell you how to exclude the audience from your Youtube campaign using Google Ads. For more details, see the Google documentation.

  1. Click on the Audiences tab.
  2. Click Edit Exclusions.
  3. Under the "Exclude from" drop-down menu, select the campaign you want this audience excluded from.
  4. Click the checkmark next to the audience that has synced from Hightouch.
  5. Click Save Audience Segment Exclusions.

Especially in challenging macroeconomic environments, it is important that ad campaigns are targeted to the right people. In this example, we showed how we could use Snowflake and Hightouch to suppress recent purchasers from an ad campaign running with YouTube.

What we've covered