1

I have just tried Optimizely. The problem is it will show different variations to a user. Sometimes we don't expect this behaviour. For example if I change color to red from blue, Optimizely will randomly select between the orginal (blue) and the variation (red) for the same user which is inconsistent. How can I make Optimizely to always show the same variation to a user?

3 Answers3

1

Place the following code in your Experiment JavaScript:

setCookie = function (c_name,value,exdays) {
  var exdate=new Date();
  exdate.setDate(exdate.getDate() + exdays);
  var expires = exdate.toUTCString();
  var isIE8 = (document.documentMode !== undefined);
  if (exdays == 0) {
      expires = (isIE8 == true) ? "" : "0";
  }
  var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+expires);
  document.cookie=c_name + "=" + c_value;
}

Within each variant (e.g. Blue Variant, Red Variant, etc.), call setCookie and check whether the cookie exists for a user in that particular variant. If the cookie does exist, then run whatever code you want that particular variant to run. Below is an example of setting a cookie called tester that will expire after 30 days.

setCookie('tester',true,30);

if(document.cookie.indexOf('tester')>-1){
  //RUN YOUR CODE HERE IF THIS VISITOR HAS THIS COOKIE
}
Ao C
  • 127
  • 1
  • 9
1

Hi there I am an engineer at Optimizely,

You could alternatively try the Fullstack product, which is more developer-oriented. With this you get an SDK that you install with your bundle and you implement your testing logic using code.

Example:

npm install optimizely-client-sdk

const optimizely = require('optimizely-client-sdk');
const optimizelyClient = optimizely.createInstance({
  datafile: {} // this is your experiment config which you get from the Optimizely UI
});

const variation = optimizelyClient.activate('color_experiment', 'user_1');
if (variation === 'blue') {
  // do something for blue
} else if (variation === 'red') {
  // do something for red
} else {
  // default case
}

And as long as you pass in the exact same user_id as the second argument to activate, you are guaranteed to always get the same variation for that user.

For more information or details on getting started please take a look at: https://developers.optimizely.com/x/solutions/sdks/getting-started/index.html?language=javascript

0

Also keep in mind that Optimizely gets blocked by adblockers, it can happen if a user turns their adblocker on after they've been on the page and served up an experiment to see - they would get the original version.

Zsolt
  • 1