更好地吸引和支持您的客户

每次与客户互动时都感到高兴。最优化全栈可帮助您跨语音和消息传递机器人,电子邮件,SMS,呼叫中心和订购亭提供和测试不同的体验。

提供个性化的商店体验

从结帐亭到帮助站,尝试您的客户体验,使客户喜欢您的购物体验。

与客户进行更好的对话

通过使用Optimizely优化您的消息传递机器人,帮助您的客户更快地获得支持或寻找引人入胜的产品。

Blue Apron通过电子邮件实验提高了客户满意度

Blue Apron已测试发送通知电子邮件,以提醒新用户他们的订购截止日期已到,并鼓励他们管理即将到来的交货。使用Optimizely Full Stack测试电子邮件后,他们发现来自客户的意外订单报告减少了37%。

知道什么有效

Stats Engine可以实时提供统计上相关的结果,因此您的团队可以做出更快的决策。让您的整个团队进行试验,并始终观察最好的主意,无论它来自何方。

FullStack sec3 2

专为工程师打造的实验平台

开放平台

具有可插拔组件的开源SDK使您可以控制网络活动并与自己的分析管道集成。

快速决策引擎

在对性能至关重要的代码路径中进行实验。我们的SDK将用户存储在内存中,因此实验对延迟没有影响。

可扩展架构

全球成千上万的客户使用实时事件收集服务器,您可以立即获得实验结果。

阅读文档
                      
              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");
                      
              import "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');
                      
              use Optimizely\Optimizely;
              
              

// Initialize an Optimizely client

$optimizelyClient = new Optimizely($datafile);

// Activate an experiment

$variation = $optimizelyClient->activate('my_experiment', 'user_123'); if ($variation == 'variation_a') {

// Execute code for variation A

} elseif ($variation == 'variation_b') {

// Execute code for variation B

} else {

// Execute default code

}

// Track an event

$optimizelyClient->track('purchase_completed', 'user_123');
                      
              using OptimizelySDK;
              
              

// Initialize an Optimizely client

Optimizely OptimizelyClient = new Optimizely(datafile);

// Activate user in an experiment

var variation = OptimizelyClient.Activate("my_experiment", userId); if (variation != null) { if (variation == "control") {

// Execute code for variation A

} else if (variation == "treatment") {

// Execute code for variation B

} } else {

// Execute default code

}

// Track conversion event

OptimizelyClient.Track("my_conversion", userId);
                      
              var optimizely = require('optimizely-client-sdk');
              

// Initialize an Optimizely client

var optimizelyClientInstance = optimizely.createInstance({ datafile: datafile });

// Alternatively, if you don't use CommonJS or npm, you can install the minified snippet and use the globally exported varible as follows

var optimizelyClientInstance = window.optimizelyClient.createInstance({ datafile: datafile });

// Activate user in an experiment

var variation = optimizelyClientInstance.activate('my_experiment', userId); if (variation === 'control') {

// Execute code for variation A

} else if (variation === 'treatment') {

// Execute code for variation B

} else {

// Execute default code

}

// Track conversion event

optimizelyClientInstance.track('my_conversion', userId);
                      
              

// Initialize an Optimizely manager

OPTLYManager *optlyManager = [OPTLYManager init:^(OPTLYManagerBuilder * _Nullable builder) { builder.projectId = @"projectId"; }];

// Initialize an Optimizely client by asynchronously downloading the datafile

[optlyManager initializeWithCallback:^(NSError * _Nullable error, OPTLYClient * _Nullable client) {

// Activate user in a test

OPTLYVariation *variation = [client activate:@"my_experiment" userId:@"userId"]; if ([variation.variationKey isEqualToString:@"control"]) {

// Execute code for the control

} else if ([variation.variationKey isEqualToString:@"treatment"]) {

// Execute code for the treatment

} else {

// Execute default code

}

// Track conversion event

[client track:@"my_conversion" userId:@"userId"]; }];
                        
              

// Initialize an Optimizely manager

let optimizelyManager : OPTLYManager? = OPTLYManager.init {(builder) in builder!.projectId = "projectId" }

// Initialize an Optimizely client by asynchronously downloading the datafile

optimizelyManager?.initialize(callback: { [weak self] (error, optimizelyClient) in

// Activate user in a test

if let variation = optimizelyClient?.activate("my_experiment", userId: "userId") { if (variation.variationKey == "control") {

// Execute code for the control

} else if (variation.variationKey == "treatment") {

// Execute code for the treatment

} } else {

// execute default code

}

// Track conversion event

optimizelyClient?.track("my_conversion", userId: "userId") })
                          
              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");

释放您的分析师

使用Optimizely的统计引擎,您可以获得统计上有效的实时结果。因此,当数据需要时,您可以迅速采取行动,而当您需要更全面的了解时,可以深入分析管道。

以您使用的语言工作

全栈拥有适用于大多数主要平台或作为微服务部署的SDK

服务器端实验的完整解决方案

  • 功能标记

    在运行时轻松启用,禁用,隐藏或推出产品功能。选择谁可以使用新功能。
  • 事件追踪

    在您的应用程序或任何其他服务中监控所有您关注的转化指标和KPI。
  • 即时更新

    无需部署代码即可实时更新实验和功能。
  • 自定义配置

    轻松交换自己的组件以进行日志记录,错误处理,事件分派,集成等。
  • 推出

    首先将其推出给一小部分随机或有针对性的用户,以降低启动新功能的风险。
  • 多通道实验

    设置您自己的用户ID,以在所有客户渠道中创建一致的个性化体验。
  • 听众

    定义自定义属性以实现细粒度的定位和细分。
  • 原始事件导出

    从Optimizely轻松下载完整的事件数据。
  • 允许清单

    通过强制特定用户进行变更来快速进行质量检查实验。
  • 优化统计引擎

    借助全球领先的实验平台实时查看实验的影响。
  • 流量分割

    在应用程序中的任何位置轻松创建随机流量开关,而不会影响性能。
  • 企业就绪的安全性

    角色和权限,2要素身份验证和单点登录。
  • 环境环境

    在开发,登台和生产环境中管理实验。
  • 帐户级实验

    在尝试客户帐户时,确保一致的体验; (可选)根据帐户ID而不是用户ID划分流量。