Show Menu
主题×

A/B 测试

如果电子邮件投放有多个内容,并且想了解哪个版本对目标用户群影响最大,可以将不同版本发送给某些收件人,然后选择成功率最高的版本并发送给其他收件人。
在此用例中,我们将通过定位工作流来比较两个电子邮件投放内容。 消息和文本在两个投放中是相同的:只更改布局。
目标人口分为三个:两个测试组和剩余人口。 投放的不同版本将发送到每个测试组。 在投放之后,在收集最佳打开速率的结果之前配置5天的等待时间。 得分最高的投放的内容随后由脚本恢复,并发送给未用作测试组的人群。
请注意,将决定哪个投放最佳的标准可能会根据您的需要而更改。 可以是开放率、点击率、订阅率、反应性等。
此外,此用例中详细介绍的测试只涉及两个投放,但您可以根据需要测试任意多个版本。 只需向工作流中添加活动。
要创建A/B测试,请应用以下步骤:

Step 1: Creating a targeting workflow

您需要在活动的选项卡中 Targeting and Workflows 创建工作流。 它由活动、 Query 活动和两个 Split 活动、一个 Email delivery 活动、一 Wait 个活动和一个 JavaScript code Delivery 活动组成。
  1. 如果尚未创建活动,请创建此(有关详细信息,请参阅此 部分 )。
  2. 转到 Targeting and Workflows 选项卡。
  3. 更改现有工作流的标签或单 Add 击以创建新工作流(有关详细信息,请参阅此 部分 )。
  4. 使用鼠标将活动拖放到图中,包括 Query ( Target tab)、( Split tab)、两个​ Target (tab)、一个活动标签( Email deliveries 活动标签)、活动(标签​ Deliveries Wait Flow Control JavaScript code Actions Delivery Actions )、(标签)和(标签)工作流。

第2步:配置填充示例

配置查询活动

  • Double-click the Query activity.
  • 单击链 Edit query 接,然后选择要目标的收件人。
  • 将活动 Query 链接到 Split 活动。

配置拆分活动

此活动允许您创建多个人群:接收投放A的投放B,以及剩余人口。 使用随机选择,您只能目标每个投放的一部分人口。
  1. 创建人口A:
    • Double-click the Split activity.
    • 在现有选项卡中,将标签更改为填充A。
    • 选择选 Limit the selected records 项。
    • 单击链 Edit 接,选 Activate random sampling ​择,然后单击 Next
    • 将阈值设置为10%,然后单击 Finish
  2. 创建人口B:
    • Add 击可为人口B创建新选项卡。
    • 将人口限制为以前的10%。
  3. 创建剩余人口:
    • 转到 General 选项卡。
    • 选择 Generate complement
    • 更改标签以指定此填充不包括A和B,然后单 OK 击以关闭活动。

第3步:创建两个投放模板

我们现在想创建两个投放模板。 每个模板都将在链接到该 Email delivery 活动的活动中引 Split 用。 有关更多信息,请参阅此](../../delivery/using/about-templates.md)章节[。
  1. Go to the Resources > Delivery template folder.
  2. 重复 Email 投放模板。
  3. 创建要用于投放A的内容。
  4. 重复此过程以为投放B创建模板。

第4步:在工作流中配置投放

下一步是配置投放。 它们的目标是前一阶段创造的三个人口: 第2步:配置填充示例 。 前两个投放允许您向群体A和B发送不同的内容。第三个投放用于未接收A和B的群体。其内容将由脚本计算,并且与A或B相同,具体取决于打开率最高的群体。 我们需要为第三个投放配置等待期,以了解投放A和B的结果。这就是为什么第三个投放包括 Wait 活动。
  1. 转到活动 Split 并将用于填充A的过渡链接到工作流中已有的电子邮件投放之一。
  2. 多次-单击投放以打开它。
  3. 使用下拉列表,选择投放A的模板。
  4. Continue 击视图投放,然后保存它。
  5. 将目标为人群B Split 的过渡链接到第二个电子邮件投放。
  6. 打开投放,在投放B中选择模板,然后保存投放。
  7. 将用于剩余人口的过渡链接到 Wait 活动。
  8. 打开 Wait 活动并配置5天的等待期。
  9. 将活动 Wait 链接到 JavaScript code 活动。

第5步:创建脚本

投放内容的选择将由脚本计算。 此脚本以最高打开率恢复有关投放的信息,并将内容复制到最终投放。

脚本示例

以下脚本可以像在定位工作流中一样使用。 For more on this, refer to Implementation .
 // query the database to find the winner (best open rate)
   var winner = xtk.queryDef.create(
     <queryDef schema="nms:delivery" operation="get">
       <select>
         <node expr="@id"/>
         <node expr="@label"/>
         <node expr="[@operation-id]"/>
         <node expr="[@workflow-id]"/>
       </select>
       <where>
         <condition expr={"@FCP=0 and [@workflow-id]= " + instance.id}/>
       </where>
       <orderBy>
         <node expr="[indicators/@estimatedRecipientOpenRatio]" sortDesc="true"/>
       </orderBy>
     </queryDef>).ExecuteQuery()
   
   // create a new delivery object and initialize it by doing a copy of
   // the winner delivery
   var delivery = nms.delivery.create()
   delivery.Duplicate("nms:delivery|" + winner.@id)

   // append 'final' to the delivery label
   delivery.label = winner.@label + " final"

   // link the delivery to the operation to make sure it will be displayed in
   // the campaign dashboard. This attribute needs to be set manually here since 
   // the Duplicate() method has reset it to its default value => 0
   delivery.operation_id = winner.@["operation-id"]
   delivery.workflow_id = winner.@["workflow-id"]

   // adjust some delivery parameters to make it compatible with the 
   // "Prepare and start" option selected in the Delivery tab of this activity
   delivery.scheduling.validationMode = "manual"
   delivery.scheduling.delayed = 0
 
   // save the delivery in database
   delivery.save()
 
   // store the new delivery Id in event variables
   vars.deliveryId = delivery.id

有关脚本的详细说明,请参 阅脚本的详细信息

实施

  1. 打开 JavaScript code 活动。
  2. 将脚本示例中提 供的脚本复制 到窗口 JavaScript code 中。
  3. 在字 Label 段中,输入脚本的名称,即
    <%= vars.deliveryId %>
    
    
  4. 关闭 JavaScript code 活动。
  5. 保存您的工作流。

脚本的详细信息

本节详细介绍了脚本的各个部分及其操作模式。
  • 脚本的第一部分是查询。 使 用queryDef 命令可以从NmsDelivery表中恢复通过执行定位工作流创建的投放,并根据其估计的打开率对它们进行排序,然后恢复来自打开率最高的投放的信息。
    // query the database to find the winner (best open rate)
       var winner = xtk.queryDef.create(
         <queryDef schema="nms:delivery" operation="get">
           <select>
             <node expr="@id"/>
             <node expr="@label"/>
             <node expr="[@operation-id]"/>
           </select>
           <where>
             <condition expr={"@FCP=0 and [@workflow-id]= " + instance.id}/>
           </where>
           <orderBy>
             <node expr="[indicators/@estimatedRecipientOpenRatio]" sortDesc="true"/>
           </orderBy>
         </queryDef>).ExecuteQuery()
    
    
  • 打开率最高的投放重复。
     // create a new delivery object and initialize it by doing a copy of
     // the winner delivery
    var delivery = nms.delivery.create()
    delivery.Duplicate("nms:delivery|" + winner.@id)
    
    
  • 将修改复制投放的标签,并将词 final 添加到该标签。
    // append 'final' to the delivery label
    delivery.label = winner.@label + " final"
    
    
  • 投放被复制到活动仪表板。
    // link the delivery to the operation to make sure it will be displayed in
    // the campaign dashboard. This attribute needs to be set manually here since 
    // the Duplicate() method has reset it to its default value => 0
    delivery.operation_id = winner.@["operation-id"]
    delivery.workflow_id = winner.@["workflow-id"]
    
    
    // adjust some delivery parameters to make it compatible with the 
    // "Prepare and start" option selected in the Delivery tab of this activity
    delivery.scheduling.validationMode = "manual"
    delivery.scheduling.delayed = 0
    
    
  • 投放保存在数据库中。
    // save the delivery in database
    delivery.save()
    
    
  • 复制投放的唯一标识符存储在工作流变量中。
    // store the new delivery Id in event variables
    vars.deliveryId = delivery.id
    
    

其他选择条件

以上示例允许您根据电子邮件打开率选择投放的内容。 您可以根据其他投放特定指标调整它:
  • 最佳点击吞吐量: [indicators/@recipientClickRatio] ,
  • 最高反应率(打开电子邮件并在邮件中单击): [indicators/@reactivity] ,
  • 最低投诉率: [indicators/@refusedRatio] (对sortDesc属性使用false值),
  • 最高转化率: [indicators/@transactionRatio] ,
  • 接收消息后访问的页数: [indicators/@totalWebPage] ,
  • 最低退订率: [indicators/@optOutRatio] ,
  • 交易金额: [indicators/@amount] .

第6步:定义最终投放

创建脚本以选择A/B测试入选方后,您可以定义最终投放的参数。
  1. 将活动 JavaScript code 连接到其余的 Delivery 活动。
  2. 打开 Delivery 活动。
  3. 取消选中 Generate an outbound transition 此选项,以使用此活动完成工作流。
  4. 保留其他选项的默认值。
准备在投放中指定的过渡(通过定 Javascript Code 义)后,您便可以批准该活动并开始发送,如下一步所述。

第7步:启动工作流

  1. 单击 Start 工作流。
  2. 通过目标仪表板批准投放A和B的活动和内容。
  3. 确认投放。
  4. 等到5天期间结束,了解在投放开始结果后计算了哪些内容。
    在这种情况下,选择模板B。
  5. 确定第三个投放的内容后,批准该目标和该内容。

第8步:分析结果

发送测试投放后,您可以检查已将其发送到的收件人以及是否已打开它们。
  • 要了解哪些收件人已成为目标,请通过活动仪表板打开一个投放,然后单击选 Delivery 项卡。
  • 要了解投放是否已打开,请转到选项 Tracking 卡。
  • 与其他投放比较。
在我们的例子中,投放B的公开率最高。 这意味着内容B将用于最终投放。