Manage rollouts for feature tests

Summary of steps

  1. Enable on-device decisioning for your organization
  2. Create an A/B Test activity
  3. Define your feature and rollout settings
  4. Implement and render the feature in your application
  5. Implement tracking for events in your application
  6. Activate your A/B activity
  7. Adjust rollout and traffic allocation as needed

1. Enable on-device decisioning for your organization

Enabling on-device decisioning ensures an A/B activity is executed at near-zero latency. To enable this feature, navigate to Administration > Implementation > Account details in Adobe Target, and enable the On-Device Decisioning toggle.

alt image

NOTE
You must have the Admin or Approver user role to enable or disable the On-Device Decisioning toggle.

After enabling the On-Device Decisioning toggle, Adobe Target begins generating rule artifacts for your client.

2. Create an A/B Test activity

  1. In Adobe Target, navigate to the Activities page, then select Create Activity > A/B test.

    alt image

  2. In the Create A/B Test Activity modal, leave the default Web option selected (1), select Form as your experience composer (2), select Default Workspace with No Property Restrictions (3), and click Next (4).

    alt image

3. Define your feature and rollout settings

In the Experiences step of activity creation, provide a name for your activity (1). Enter the name of the location (2) within your application where you want to manage rollouts for your feature. For example, ondevice-rollout or homepage-addtocart-rollout are location names indicating the destinations for managing feature rollouts. In the example shown below, ondevice-rollout is the location defined for Experience A. You can optionally add Audience refinements (4) to restrict qualification to the activity.

alt image

  1. In the Content section on the same page, select Create JSON Offer in the drop-down (1) as shown.

    alt image

  2. In the JSON Data text box that appears, enter the feature flag variable for the feature you intend to roll out with this activity in Experience A (1), using a valid JSON object (2).

    alt image

  3. Click Next (1) to advance to the Targeting step of activity creation.

    alt image

  4. In the Targeting step, keep the All Visitors audience (1), for simplicity. But adjust the traffic allocation (2) to 10%. This will restrict the feature to only 10% of your site visitors. Click Next (3) to advance to the Goals & Settings step.

    alt image

  5. In the Goals & Settings step, choose Adobe Target (1) as the Reporting Source to view your activity results in the Adobe Target UI.

  6. Choose a Goal Metric to measure the activity. In this example, a successful conversion is based on whether the user purchases an item, as indicated by whether the user reached the orderConfirm (2) location.

  7. Click Save & Close (3) to save the activity.

    alt image

4. Implement and render the feature in your application

Node.js
code language-js line-numbers
targetClient.getAttributes(["ondevice-rollout"]).then(function(attributes) {
      const featureFlags = attributes.asObject("ondevice-rollout");

      // Your flag variables are now available in the featureFlags object variable.
      //If you failed to qualify for the Activity, you will have an empty object.
      console.log(featureFlags);
    });
Java
code language-java line-numbers
    Attributes attrs = targetJavaClient.getAttributes(targetDeliveryRequest, "ondevice-rollout");
    Map<String, Object> featureFlags = attrs.toMboxMap("ondevice-rollout");
​
    // Your flag variables are now available in the featureFlags object variable.
    //If you failed to qualify for the Activity, you will have an empty object.
    System.out.println(featureFlags);

5. Implement tracking for events in your application

After making the feature flag variable available in the application, you can use it enable any feature that is already part of your application. If a visitor does not qualify for the activity, it means they were not included as part of the 10% bucket defined as the audience.

Node.js
code language-js line-numbers
//... Code removed for brevity

if(featureFlags.enable == "yes") { //Fell within 10% traffic
    console.log("Render Feature");
}
else {
    console.log("Disable Feature");
}

// alternatively, the getValue method could be used on the Attributes object.

if(attributes.getValue("ondevice-rollout", "enable") === "yes") { //Fell within 10% traffic
    console.log("Render Feature");
}
else {
    console.log("Disable Feature");
}
Java
code language-java line-numbers
//... Code removed for brevity
​
if("yes".equals(String.valueOf(featureFlags.get("enable")))) { //Fell within 10% traffic
    System.out.println("Render Feature");
}
else {
    System.out.println("Disable Feature");
}
​
// alternatively, the getString method could be used on the Attributes object.
​
if("yes".equals(attrs.getString("ondevice-rollout", "enable"))) { //Fell within 10% traffic
    System.out.println("Render Feature");
}
else {
    System.out.println("Disable Feature");
}

6. Activate your rollout activity

alt image

7. Adjust rollout and traffic allocation as needed

Once you have activated your activity, edit it any time to increase or decrease the traffic allocation as needed.

Increasing the traffic allocation from 10% to 50% due to the success of the initial rollout.

alt image

recommendation-more-help
6906415f-169c-422b-89d3-7118e147c4e3