Personalization: Create Audiences with Dynamic Customer Profiles

  • Updated

This topic describes how to:

  • Connect your first and third-party data sources to Optimizely Web Experimentation
  • Create a single, unified view of your customers
  • Customize Audience conditions based on behavioral targeting, as well as online and offline data about your customers

A Dynamic Customer Profile (DCP) is a single, actionable view of your customer built from a combination of first and third-party customer data. It enables you to deliver consistent, personalized web and mobile experiences for your most valuable customers, and measure the impact of those experiences.

The following list shows a few examples of the data sources that you can connect to Optimizely Web Experimentation through DCP:

  • Customer Relationship Management software

  • Email Service Providers

  • Data Warehouses

  • Analytics platforms

  • Point-of-Sale Systems

  • Data Management Platforms

For example, use DCP in combination with behavioral targeting to create a personalized experience based on a visitor’s browsing behavior during a session, as well as frequent flyer account information, favorite airports, and average purchase amount. 

Other first and third-party data that you can leverage through DCP include:

Key Terms

This section defines key terms to help you get started. If attributes, data sources, and data management platforms are intuitive to you, go to setup.

Attributes

Attributes describe what you know about your individual customers: their favorite products, lifetime value scores, VIP or loyalty memberships, gender, and other historical data. These attributes help you create tightly tailored experiences for every known customer who comes to your site.

create-new-audience-image.png

Data source

A data source such as your CRM, Email Service Provider, data warehouse, or DMP stores individual customer attributes under corresponding customer IDs. To use these attributes to personalize your customers’ experiences on your site, create a DCP Table and corresponding Table Attributes.

DCP Table

A DCP Table is used to store records extracted from your data sources and make them available for targeting. Each row in the table represents a customer, and each column represents an attribute describing customers.

DCP Table Attribute

You can think of Table Attributes as the column headers in a DCP Table. Each attribute represents a discrete piece of information contained in the customer records extracted from your data source.

DCP Service

Optimizely Web Experimentation's DCP Service collects and handles the data that you use to deliver personalized messaging. The third-party data that you send to Optimizely Web Experimentation is stored here.

Optimizely Web Experimentation uses a method called “aliasing” to connect all the attributes kept in different tables to a single Optimizely Web Experimentation User ID. This single ID allows Optimizely Web Experimentation to deliver customized experiences based on the data you have on individual customers across different tables. See aliasing in our developer docs.

 
Dynamic Customer Profiles are available as an add-on with Accelerate and Scale plans. To learn more, see Optimizely Web Personalization.

You can also read more about DCP on the Optimizely blog.

Remember, your terms of service prohibit you from collecting or sending any personally identifiable information (such as names, social security numbers, email addresses, or any similar data) to Optimizely's services or systems through Dynamic Customer Profiles or any other feature.

See the article on PII to learn more about sending data to Optimizely Web Experimentation and handling personally identifiable information.

Currently, even when we provision or upgrade an account to Personalization Professional, DCP is not automatically included.  You need to separately place DCP as a standalone feature on the allow list. The same is true for your own free employee account.

Create a DCP service

To set up Dynamic Customer Profiles, first create a DCP service in Optimizely Web Experimentation. A DCP Service collects, stores, and processes the customer data that you’ll use to deliver personalized messaging.

create-dcp.gif

  1. Go to Account Settings.

  2. Select the Dynamic Customer Profiles tab.

  3. Name your new DCP Service and click Create DCP Service.

    You can associate each Optimizely Web Experimentation Account only with one DCP Service, so you will not see the option to create a DCP Service if one already exists.

  4. Link the Optimizely Web Experimentation projects that should be able to target based on data stored in this DCP Service. You can add multiple projects to the same service at any time.

Create a DCP table

Create a table to store records extracted from your data source:

create-table.gif

  1. Go to the Audiences dashboard.

  2. Select the Attributes tab and click Create New Table. Optimizely Web Experimentation gives you a preview of the steps required to create a table.

  3. Click Create New Table.

  4. Tell Optimizely Web Experimentation how your table is organized. Fill in the name of your table and identify how your web page stores the customer IDs to be used in this table: in a cookie, JavaScript variable, query parameter, or Optimizely Web Experimentation End User ID cookie.

In the example above, the customer IDs for the table are stored in a JS variable called “locator_name”. When using the JS variable option, ensure that the variable is global. You will not be able to refer to embedded properties using dot notation such as "object.locator_name".

Optimizely Web Experimentation syncs the IDs in your new data source with Optimizely Web Experimentation User IDs, so you do not have to manage identity. As your visitor data updates, Optimizely Web Experimentation's DCP Service automatically connects and adds this information to your customer profiles.

Sometimes, customer IDs are stored in multiple locations. For example, IDs may be stored in cookies on some pages and as JavaScript variables on others. In this situation, use our REST APIs to alias this information. See also Customer profiles (DCP).

Define table attributes

Identify the customer attributes (text, Boolean value, number, or date) that you want Optimizely Web Experimentation to store in this table. Define this value type in the drop-down menu.

create-table-2.png

Check the Content-enabled box next to any values that you’d like to be able to display directly in the browser. For example, if you’d like to show a visitor her “gold” level membership as part of a personalized experience on your site, check the Content-enabled box for the “membership level” attribute.

Above, “membership level” and “purchased in store” are attributes you use in Optimizely Web Experimentation. Membership level value is also available for display in the browser.

Enter as many attributes as you like by clicking Add an Attribute.

 
Attribute names are case sensitive, so “membership level” and “Membership level” register as two different attributes.

Upload your data

There are three ways to upload data to your table.

  • The v1.0 REST API lets you stream the data, one visitor at at time.
  • You can also upload data in bulk as a CSV. Every table is provisioned an Amazon S3 bucket. When you drop CSVs here, we will automatically begin uploading them into our system.
  • You can also upload small files (5mb or less) in the browser via Direct Upload.

create-table-3.png

Learn how to set up a streaming API or the bulk CSV upload in our developer docs.

 
The Data Upload page for each table contains a link to download a pre-configured CSV file you can use as a template for uploads to that table. This is a great place to start if you're having trouble with the header formatting!

If you still have trouble, make sure your CSV file is formatted as follows:

  • Each column in the header row must be a registered attribute name. A CSV may contain a subset of the registered attributes.

  • The header row must include a customerId column. All rows must contain a valid customer ID under this column.

  • If a column header does not correspond to a registered attribute name, the upload will fail.

  • If an attribute value does not respect the attribute's datatype/format, the upload will fail. Click here to view datatype requirement details.

Check that your upload is successful by going to Audiences. Open the Attributes tab and select a table.

Click Actions () and select Upload History.

The Data Upload History view provides a chronological view of your upload attempts.

dcp-table-history.png

If your latest upload was unsuccessful, check the formatting of your CSV and try again.

Common mistakes include:

  • Uploading a .xlsx file instead of a .csv or .tsv

  • Forgetting to register attributes before uploading data

  • Not having a column labeled “customerId” - remember, ALL IDs must take this format

  • Having “,” within an Attribute Value and saving the file as a .csv instead of .tsv

Files uploaded to DCP are processed in the order they are received, using infrastructure shared by all customers. This means that while we typically begin processing uploaded files immediately, processing may be delayed if other customers are uploading a large number of files.

Create an audience

Create an audience using the customer attributes you added to your DCP table:

dcp-audience.gif

  1. In the Audiences dashboard, click Create New Audience.
  2. In the Audience Builder, name the audience.
  3. Expand the list of External Attributes and find the table you just created. To use a table attribute as an audience condition, drag and drop it into Audience Conditions. Use logical conditions to create your new Audience.
  4. Click Save Audience.

See Set up audiences in Optimizely Web Experimentation: Audience builder.

Build a campaign

Congratulations! You can create a personalization campaign with your new audience, powered by your dynamic customer profiles.

To add 1-to-1 personalization to your campaigns, read this article on exposing content attributes with DCP.