Target your advertising activity at specific audiences to increase its effectiveness. You can choose from standard audiences, curated and provided by Roku, and your own custom audiences, which you create. You can create custom audiences via customer lists (first-party data) or based on events (specific user actions). If you want to use standard audiences instead of creating your own custom audiences, see About standard audiences. These are the two types of customer audiences you can create, and how they differ:
-
Customer list audience
Create a customer list audience with your first-party data. Upload a file containing customer contact information which Roku matches to its users to create a specific group you can target. Some common uses for a customer list audience include reengaging past buyers and promoting loyalty programs.
-
Event-based audience
Create an event-based audience based on specific actions (events) that people take on your website, app, and offline, tracked by either a JavaScript pixel or Conversions API (CAPI). Examples of events are: viewing a specific product page (page views), adding an item to a shopping cart (add to cart), or completing a registration (complete registration). Some common uses for event-based audiences include:
- Retargeting customers who visited or took an action on your website to convert potential customers or drive existing customers to buy again.
- Removing customers who recently completed a specific action to hone your targeting and reduce waste.
Use the same POST Create custom audiences call to create either type of custom audience. Both processes are explained, below.
Create a custom audience from a customer list
Your customer list needs to be in the form of a CSV (.csv) or TXT (.txt) file and is referred to in Ads API as a customer relationship management (CRM) file. If you aren’t sure how to properly format your CRM file, see CRM file rules and formatting below.
-
Make a
POSTCreate CRM file upload URLs call and include the following in your request body parameters:filename- name of your CRM fileaccount_uid- the unique identifier of your account
A successful call returns three things:
- An
upload_url- the unique, write-only URL you upload your CRM file to in Step 2. You need oneupload_urlper CRM file, or custom audience that you want to create. - A
metadata_urlyou can use to validate the upload of Step 2 is successful, if you want. - The
raw_pathyou use in Step 3.
-
Make a
PUTcall to theupload_urlyou received in Step 1 with your CRM file. -
Make a
POSTCreate CRM file objects call to inform Ads API that you've uploaded your CRM file. Include the following in your request body parameters:filename- name of your CRM file (has to match the filename in Step 1)account_uid- unique identifier of your accountraw_path- the path to the raw CRM file
A successful call returns the
crm_file_uidyou need in Step 4 along with data likeinput_size_counts,matched_size_counts, andhousehold_matched_countswith a value of zero. This is because the data ingestion hasn't been triggered yet. -
Optionally, to check the processing status of your CRM file, make a
GETGet a CRM file call. Check the successful response forstatus: match_valid. If you don't see this, the two most common errors to check are:- The headers in your file could be formatted incorrectly.
- The data in your file didn't match to 1,000 Roku households.
-
Make a
POSTCreate custom audiences call and include the following in your request body parameters:name- the name of the custom audienceaccount_uid- the unique identifier of your accountaudiences_config- the configuration for how users are added to this audience.typeset tofile_audiences, needs to include the following key-value pairs:crm_file_uid- the unique identifier of your CRM fileexpiration_value- the expiration value of your CRM file key. Default is90.expiration_unit- the expiration unit of your CRM file key. Default isday.
You can make a GET Get an audience call to view your newly created custom audience.
CRM file rules and formatting
Your CRM file should include as much of the following information as possible to improve your data matching: customer email, SHA-256-hashed email address, phone number, mobile advertiser ID (MAID) or IP address.
It needs to follow these rules:
- Must be in the form of a CSV (.csv) or TXT (.txt) file
- Must include enough data to match at least 1,000 Roku households
- hashed email addresses can’t be Base64-encoded
See the table below for an example of a customer list in the form of a CSV file.
| sha256email | phone | |
|---|---|---|
| [email protected] | a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2 | 1-(310)-555-0101 |
| [email protected] | b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3 | 1-(909) 555-0102 |
| [email protected] | c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4 | 1-(323) 555-0103 |
| [email protected] | d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5 | 1-(925) 555-0104 |
| [email protected] | e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6 | 1-(415) 555-0105 |
| [email protected] | f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1 | 1-(212) 555-0106 |
Create a custom audience using events data
Make a POST Create custom audiences call and include the following in your request body parameters:
name- the name of the custom audienceaccount_uid- the unique identifier of your accountaudiences_config- the configuration for how users are added to this audience.typeset toevent_audiences, provide the following keys and a value for each:event_name- the name of the event you want to use for your audience (see the full list of events, below)event_group_uid- the unique identifier of the event groupqualified_event_timeframe_value- the value of yourqualified_event_timeframe_unit. Max is 90.qualified_event_timeframe_unit- the unit of yourqualified_event_timeframe. Default is days.
You can make a GET Get an audience call to view the newly created custom audience.
Events
The table below lists the possible events with descriptions.
| Event name | Description |
|---|---|
| Page views | Tracks visits to your webpage; this event is automatically installed with your base pixel |
| App installs | Assesses how often your audience installs your app |
| Subscribe | Captures how often your audience subscribes to a service or offering |
| Sign-ups | Records how often your audience has signed up for a newsletter, updates, events, or marketing offers |
| Add to cart | Gauges purchase intent by tracking how often products are added to the online shopping cart |
| Purchases | Tracks purchase information and the cost of purchased items |
| Achieve level | Records when users reach a certain level that you’ve defined in your game |
| Add payment info | Tracks when payment details are added during the checkout process, such as saving billing details |
| Add to wishlist | Tracks which products are added to wishlists |
| Complete registration | Records how many finish the registration form |
| Contact | Tracks when a user initiates contact with your business via telephone, SMS, email, chat, etc |
| Customize product | Tracks how many users customize a product |
| Donations | Tracks how many users donate funds to your organization or cause |
| Downloads | Records how many downloads are made from your website |
| Find location | Tracks how many users search for your store location via a website or app |
| First video view | Records when a user watches their first video on your platform or app. |
| Initiate checkout | Tracks how many customers enter the checkout flow prior to completing the purchase |
| Lead | Tracks when a customer submits their information in order to be contacted by your business in the future |
| Quality streaming session | Tracks when a streaming session meets predefined quality benchmarks. |
| Schedule | Tracks when a customer books an appointment |
| Search | Monitors how many times customers are searching on your website |
| Session start | Records when a user initiates a new session on your app or website. |
| Sign up | Records how often your audience signs up for a newsletter, updates, events, or marketing offers |
| Start trial | Records when a user starts a free trial of a product or service you offer |
| Subscription cancellation | Tracks when a subscription is canceled |
| Subscription renewal | Tracks when a subscription is renewed (including auto-renewals) |
| Unlock achievement | Tracks when users unlock a certain achievement that you’ve defined in your app |
| View content | Captures in-app views, like which movies or shows were streamed |
Custom audience status
Custom audience objects returned by the API don't include a status field. Their status is only visible in the Roku Ads Manager UI. For event-based audiences, the UI reflects a PENDING state for 72 hours after audience creation before moving to ACTIVE. You can’t forecast with an audience while it’s PENDING. For file-based audiences, status can be: PENDING, ACTIVE, and EXPIRED.