Run experiments on algorithms, pricing, redesigns, new architectures, omnichannel marketing campaigns, and more.
Run experiments and launch new features in your iOS or Android apps to improve engagement and retention.
Run experiments in your Apple TV or Android TV channels to drive more video engagement and expand your subscriber base.
import optimizely
optimizely = optimizely.Optimizely(datafile)
# Activate an experiment
variation = optimizely.activate('my_experiment', 'user_123')
if variation == 'variation_a':
# Execute code for variation A
elif variation == 'variation_b':
# Execute code for variation B
else:
# Execute default code
# Track an event
optimizely.track('purchase_completed', 'user_123')
import com.optimizely.ab.Optimizely;
Optimizely optimizely = Optimizely.builder(datafile).build();
// Activate an experiment
Variation variation = optimizely.activate("my_experiment", "user_123");
if (variation != null) {
if (variation.is("variation_a")) {
// Execute code for variation A
} else if (variation.is("variation_b")) {
// Execute code for variation B
}
} else {
// Execute default code
}
// Track an event
optimizely.track("purchase_completed", "user_123");
require "optimizely"
project = Optimizely::Project.new(datafile)
# Activate an experiment
variation = project.activate('my_experiment', 'user_123')
if variation == 'variation_a'
# Execute code for variation A
elsif variation == 'variation_b'
# Execute code for variation B
else
# Execute default code
end
# Track an event
project.track('purchase_completed', 'user_123')
var optimizely = require('optimizely-server-sdk');
var optimizely = optimizely.createInstance({ datafile: datafile });
// Activate an experiment
var variation = optimizely.activate('my_experiment', 'user_123');
if (variation === 'variation_a') {
// Execute code for variation A
} else if (variation === 'variation_b') {
// Execute code for variation B
} else {
// Execute default code
}
// Track an event
optimizely.track('purchase_completed', 'user_123');
var optimizely = require('optimizely-server-sdk');
#import <OptimizelySDK/Optimizely.h>
Optimizely *optimizely = [Optimizely initWithBuilderBlock:^(OPTLYBuilder *builder) {
builder.datafile = datafile;
}];
// Activate an experiment
NSString *experimentKey = @"my_experiment";
NSString *userId = @"user_123";
OPTLYVariation *variation = [optimizely activateExperiment:experimentKey userId:userId];
if ([variation.variationKey isEqualToString:@"variation_a"]) {
// Execute code for variation A
} else if ([variation.variationKey isEqualToString:@"variation_b"]) {
// Execute code for variation B
} else {
// Execute default code
}
// Track an event
NSString *eventKey = @"purchase_completed";
[optimizely trackEvent:eventKey userId:userId];
import OptimizelySDKCore
let optimizely: Optimizely = Optimizely.initWithBuilderBlock({ (builder) in
builder.datafile = datafile
})
// Activate an experiment
let experimentKey = "my_experiment"
let userId = "user_123"
let variation = optimizely!.activateExperiment(experimentKey, userId: userId)
if (variation != nil) {
if (variation!.variationKey == "variation_a") {
// Execute code for variation A
}
else if (variation!.variationKey == "variation_b") {
// Execute code for variation B
}
}
else {
// Execute default code
}
// Track an event
let eventKey: String = "eventKey"
optimizely!.trackEvent(eventKey, userId: userId)
import com.optimizely.ab.Optimizely;
Optimizely optimizely = optimizelyManager.getOptimizely();
// Activate user in the experiment
Variation variation =
optimizely.activate(EXPERIMENT_KEY, USER_ID);
if (variation != null) {
if (variation.is("variation_a")) {
// Execute code for variation A
} else if (variation.is("variation_b")) {
// Execute code for variation B
}
} else {
// Execute default code
}
// Track conversion event
optimizely.track(EVENT_KEY, USER_ID);
The Optimizely Full Stack SDK fits in perfectly with our continuous deployment microservice architecture. A/B tests are no longer an afterthought, but a part of the day-to-day life of our engineering teams. The SDK allows us to deliver fully formed, fully tested variations from our servers, with no heavyweight JavaScript requirements.