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.
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.
First, you need to have the data that you want to push prepared within 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.
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.
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.
To push data to Google Ads for use with a Youtube campaign, we need to create a destination.
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.
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.
With the parent model defined, users can now leverage Hightouch's no-code audience builder to create any audience of customers.
With the audience now created, we need to configure how often it is pushed to Google Ads for use with the Youtube campaign.
This section will tell you how to exclude the audience from your Youtube campaign using Google Ads. For more details, see the Google documentation.
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.