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.
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.
In Adobe Target, navigate to the Activities page, then select Create Activity > A/B test.
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).
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.
In the Content section on the same page, select Create JSON Offer in the drop-down (1) as shown.
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).
Click Next (1) to advance to the Targeting step of activity creation.
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.
In the Goals & Settings step, choose Adobe Target (1) as the Reporting Source to view your activity results in the Adobe Target UI.
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.
Click Save & Close (3) to save the activity.
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);
});
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);
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.
//... 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");
}
//... 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");
}
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.