This article will help you:
  • Use Lotame visitor data to create Optimizely Dimensions
  • Integrate Lotame and Optimizely so that Lotame can pass information into experiments

Lotame is a Data Management Platform that provides demographic information about your visitors. This data allows you to define Optimizely Custom Dimensions, which in turn allow you to analyze your results and target your experiments by otherwise unavailable attributes. This article explains how to get started.


This integration requires a Lotame subscription and an Optimizely Enterprise account. You will use Lotame's Audience Extraction API with Optimizely's JavaScript API to assign a visitor to a custom dimension when she is a member of a Lotame Audience. You will also need the following:

  1. Your Lotame Client ID
  2. The Lotame Audience IDs of the Audiences you would like to assign to Optimizely custom dimensions

Create Optimizely Custom Dimensions

Open the Dimensions tab on the Home page and select New Dimension. Place the Lotame Audience ID that corresponds to the custom dimension in the Dimension API Identifier field:

In the example above, "12345" would be replaced with the Lotame Audience ID that corresponds to this Custom Dimension.

Deploy Integration Snippet

In the following block of code, set the value of lotameId  (currently "12345") to match your Lotame Client ID.


The value of lotameId should be a string, not an integer

Insert this code at the bottom of your head tag, wherever you wish to identify and segment your visitors. A standard implementation would deploy this site wide:

<script type="text/javascript">
window['optimizely'] = window['optimizely'] || []; window['optimizely'].push({ type: 'integration', OAuthClientId: '5395531275' });
var lotameId = '12345'; // Replace with your Lotame Client ID

window.parseLotameAudiences = function(data) {
 var json = JSON.stringify(data, undefined, 2),
 obj = JSON && JSON.parse(json) || window.jQuery.parseJSON(json);

 var firstParty = obj.Profile.Audiences.Audience || [];
 var thirdParty = obj.Profile.Audiences.ThirdPartyAudience || [];
 var audiences = firstParty.concat(thirdParty);

 if(audiences) {
 window['optimizely'] = window['optimizely'] || [];
 for(var i=0; i < audiences.length; i++) {
 var audienceId = audiences[i].id;
 if(audienceId) {

optimizely.push(['setDimensionValue', lotameId, audienceId]);
window['optimizely'].push(['trackEvent', window.location.href]);


function getAudiences() {
 var url = '' + lotameId + '/pe=y/callback=parseLotameAudiences';
 var tempScriptTag = document.createElement('script');
 tempScriptTag.type = 'text/javascript';
 tempScriptTag.src = url;


Visitors bucketed into Lotame Audiences will now be included in Custom Dimensions on your results dashboard and through the Targeting interface.


Because the Lotame Audiences API is called asynchronously, after the Optimizely snippet, any Segment(s) a visitor is assigned will not be available until after the visitor's first pageview. This means you cannot use a Segment defined by this integration to target an experiment until a visitor's second pageview.

The snippet described above could also be deployed by opening the Optimizely Editor and placing the code in Options > Experiment Javascript.  Just remember to delete the opening and closing script tags!