- Optimizely X Web Experimentation
- Optimizely X Web Personalization
- Optimizely X Web Recommendations
this article will help you:
- Understand the Optimizely X activation order for Experimentation and Personalization
- Understand how Optimizely X evaluates variation code for an experiment
- Diagnose timing issues with experiments
The Optimizely X snippet is designed to fluidly support single-page apps. The flowchart below diagrams the timing of the Optimizely snippet and it executes changes.
In the flowchart:
Solid lines indicate synchronous, immediate flow.
Dotted lines indicate asynchronous, delayed flow, where the target logic can't be executed until some other condition is met.
Dash-dotted lines indicate flow that could be synchronous or asynchronous, depending on the situation.
If you like, you can follow the snippet's execution by reading the console logs.
Here's a more detailed flow chart for internal use:
Google Drawing (clicky clicky if you want to see the unsquished flow chart. I've yet to figure out how to get it to render nicely in MindTouch)
Activation order in Experimentation and Personalization
In Optimizely X, experiences are organized by three concepts: campaigns, experiments, and variations. Read on to learn how these concepts help us deliver the right experience, variation, or combination of experiences and variations to visitors.
Campaigns are the top level of organization. Your snippet can include multiple campaigns, which activate simultaneously.
Experiments are the second level of organization, inside of campaigns. Each campaign can contain multiple experiments, but a page load can only activate one experiment per campaign. This helps ensure that experiences or variations in a campaign are mutually exclusive for visitors. You can prioritize the experiments in a campaign to decide which is shown to a visitor who qualifies.
Variations are the most granular level of organization. When an experiment activates, only one variation activates (as determined by Optimizely's logic). When a visitor is bucketed into an experiment, they'll always see the same variation.
So what does this mean for the experiences you deliver in Optimizely X Web? Here are a few examples.
In Optimizely X Web Personalization, you create campaigns that deliver targeted experiences to specific audiences. Each Personalization campaign is a campaign in the data model. Each experience that's targeted to an audience is a single experiment (with one variation). This means that each experience in a campaign is mutually exclusive--a visitor never sees more than one experience from the same campaign.
In Optimizely X Web Experimentation, you create an experiment that delivers variations to a specific audience by chance. Each experiment is also a campaign in the data model. The campaign contains a single experiment that targets the audience. Each variation in the experiment is also a variation (in the sense of our three concepts). A visitor never sees more than one variation in an experiment.
Web Personalization and Web Experimentation
Campaigns are independent, so Personalization campaigns and A/B tests activate at the same time.
If you want certain personalized messages to be mutually exclusive, create them as multiple experiences in the same Personalization campaign.
The diagram below is an example of how a Personalization campaign and an experiment are organized by the Optimizely X snippet. The left-hand column represents what you create in your Optimizely project, and the right-hand column represents what runs on your site.
More specifically, in the right-hand column:
Blue: campaigns, experiments, and variations that are active on a sample page load
White: experiments and variations that can't be active on that same page load
This will have to be updated when Campaigns allow multiple experiments with multiple variations and when the UI is updated to match (instead of "Pick Personalization or A/B Test").
Optimizely only activates campaigns, experiments, and variations when the pages they live on are activated.
To learn more about change execution in Optimizely X, check out this article.