Reputation: 24853
When I run an experiment on my website, I want to be able to find out which test and variation the current visitor sees. I can't find how to do this from the Optimizely Javascript API.
Upvotes: 13
Views: 4100
Reputation: 1574
To expand on Kevin Borders' answer. It's possible that you are running more than one experiment on a page. I've included a code snippet below, demonstrating how to return an array of active variation IDs:
// Return a list of active Optimizely variation IDs
function activeVariations(){
// Multiple variations may currently be active
var activeVariations = [];
// Get state settings from optimizely object
var state = window['optimizely'].data.state;
// For each of the active experiments:
for (var i = state.activeExperiments.length - 1; i >= 0; i--) {
// Current experiment ID
var experimentID = state.activeExperiments[i];
// Current corresponding variation ID
var variationID = state.variationIdsMap[experimentID];
// If we have an active variation, add it to our array
if (variationID) { activeVariations.push(variationID[0]); }
}
// List of active variations
return activeVariations;
}
Upvotes: 6
Reputation: 2982
You can get the ID of the first running experiment (assuming you have one), and then the variation index (e.g., 0, 1, 2), name, and ID:
var experimentID = window['optimizely'].data.state.activeExperiments[0];
var variationIndex = window['optimizely'].data.state.variationMap[experimentID];
var variationName = window['optimizely'].data.state.variationNamesMap[experimentID];
var variationID = window['optimizely'].data.state.variationIdsMap[experimentID];
Upvotes: 20