Dev guideAPI Reference
Dev guideAPI ReferenceUser GuideGitHubNuGetDev CommunitySubmit a ticketLog In
GitHubNuGetDev CommunitySubmit a ticket

FAQ

This topic answers commonly asked questions for Optimizely Feature Experimentation.

Core Concepts

What can I do with Optimizely Feature Experimentation?

Optimizely Feature Experimentation is feature management and A/B testing for product teams.

  • Feature flags and targeted deliveries help launch features safely and give you a kill switch if unanticipated issues arise.
  • Optimizely's industry-leading Stats Engine calculates results so you can learn what is working and why.
  • Feature Experimentation A/B tests enable you to run experiments in any application. These require you to deploy code, so they are best used for one-off decisions such as comparing one algorithm against another.

Pair Optimizely Feature Experimentation and Optimizely Web Experimentation products to empower your entire organization, from product to marketing teams, to experiment and build an optimized customer experience.

Can I run server-side experiments?

You can experiment anywhere in your technology stack with Optimizely's SDKs. With Optimizely Feature Experimentation, you can run experiments in various languages. If you are interested in testing in a different language, contact Optimizely.

How does Optimizely Feature Experimentation keep flags and users consistent across servers and different SDKs?

You pass a user ID and feature flag key to Optimizely Feature Experimentation SDK, and this buckets people into the flag. So, if you are running multiple servers or programming languages with the same feature flag key, the SDK will give the same response (Booleans and flag variables). The SDK gives the same answer based on the user information you have specified because Optimizely Feature Experimentation uses deterministic bucketing with MurmurHash3 to determine which experiments and variations should be active for a user.

How does datafile management work in Optimizely Feature Experimentation?

The datafile is language-agnostic. You can use the same datafile from the same project across different SDKs and get consistent bucketing. This way, you can activate and track the exact same experiments across different SDKs and get consistent results.

How do Optimizely SDKs handle bot traffic?

Optimizely Feature Experimentation SDKs support bot detection as of version 2.1. Enable bot filtering directly from your account’s project settings. When the setting is enabled, events sent from web browsers have bot filtering applied automatically. Applying bot filtering to events sent from other environments requires configuration. For more context, read about bot filtering.

Do I have to pass a user ID? What if I want anonymous users?

You have to pass an ID, but it can be any hashed ID you’d like, as long as it is consistent with what you want to toggle. User IDs work best in most cases, but we have also seen customers use session IDs or even request-level IDs for experiments.

Plans

What is the licensing model for paid plans?

You are billed based on a monthly active user (MAU)-based model. For information, see What are monthly active users.

How can I use Optimizely in my tech stack?

Optimizely Rollouts is free to all users and all companies. You will see the basic Optimziely UI and can run one experiment at a time. If you would like to add more seats or MAUs, upgrade to the full functionality of Optimizely Feature Experimentation, or if you are interested in the client-side solution, Optimizely Web Experimentation, contact Optimizely to discuss your requirements.

How is Rollouts different from other Feature Experimentation plans?

Rollouts is the free plan for Optimizely Feature Experimentation intended for startups and teams looking to get started with feature flags and A/B tests. Rollouts come with a subset of Feature Experimentation features, including unlimited feature flags and controlled rollouts, and the ability to run one experiment at a time.

Teams ready to manage feature flags across more users and applications can upgrade to a paid plan to access additional collaborators and MAUs, tools for governance and security, technical email Support, and unlimited Targeting Rules, Projects, and Change History.

Paid Optimizely Feature Experimentation plans, which remove the one concurrent experiment limit, offer a more robust feature set along with best-in-class Support and services for organizations with more stakeholders invested in increasing experiment velocity and feature delivery.

How many collaborators can I add to my account?

In Optimizely Feature Experimentation, how many collaborators you can add depends on your plan. Contact your Customer Support Manager for information. Optimizely encourages you to invite the whole team to increase visibility, share results and insights, and deepen experimentation across your working group. Optimizely offers permissions by role and additional integrated program management tools, so your team can collaborate more effectively.

Performance

How does Optimizely affect my application speed?

Optimizely Feature Experimentation is a server-side tool that enables lightning-fast experimentation. Instead of adding a JavaScript snippet that each user downloads in their browser (the approach of client-side solutions, including Optimizely Web Experimentation), the backend does all the work. The experiment code runs before the web page ever loads.

Optimizely Feature Experimentation SDKs are built to split traffic to experiments without making any network requests. Unlike some platforms, which call out to third-party servers for experiment decisions, all decisions are made in-memory using a cached copy of the datafile. The impact on latency is negligible.

In other words, Optimizely Feature Experimentation is faster because it does not make any blocking API requests to get decisions about which experiment variant to use; the device (your mobile phone or server) running the code makes that decision in under a millisecond. Optimizely Feature Experimentation will not slow down your end user's experience. However, there are still a few performance considerations to keep in mind as you scale your usage of :

  • When and how often to sync the datafile between your Optimizely Feature Experimentation project and your application. See Manage config (datafile).
  • When and how often to send data about conversion events for tracking. Manage this by batching events and using asynchronous event dispatching (having the app send data out-of-band later).

Optimizely is happy to discuss performance, contact Support if you are interested in seeing performance benchmarks for any of the Feature Experimentation SDKs.

How long does it take for changes in Optimizely Feature Experimentation to be reflected in my app? How often do you poll the datafile?

Changes in your app depend on how frequently you refresh or poll your datafile. Changes are typically reflected in the datafile within ~2 seconds. If you are experiencing delays longer than 15 seconds, contact Optimizely Experimentation support.

Does Optimizely Feature Experimentation make an API call to serve features to users?

No network requests are required to evaluate feature flags and experiments, so there is no added latency. Fetch the datafile in advance, the SDK only needs access to the datafile contents. Download the datafile out-of-band from serving an individual request from your users.

After the datafile is downloaded, no network requests are needed to serve features to users. However, the SDK will still send network requests to track events. You can control when and how this happens by implementing a custom event dispatcher. For more information on event dispatchers, see the event dispatcher configuration topic for your SDK.

What happens to my app if there is a service interruption?

During an app.optimizely.com interruption, you cannot log into Optimizely to update experiments or make other changes. During a service interruption, your application will remain operational, but flags default to "off", so it is a best practice to save a fallback data file and defensively code defaults for flag variables.

Optimizely Feature Experimentation uses a JSON datafile uploaded to a global CDN containing the data needed to deliver and track your applications' flags and experiments. In the rare hypothetical situation that the Optimizely CDN were to go down, the SDK would not be able to load any data on your feature flags or experiments, but it would not prevent your application from running. Instead, when you need to evaluate a feature flag or experiment, the Optimizely Feature Experimentation SDK returns the default values for its APIs. This would be roughly the equivalent of turning off all your flags and leaving the values of feature variables undefined.

It is most important to consider the critical connection between your application and the Optimizely CDN. To prepare for a rare service interruption, you can:

  1. Create a fallback datafile – Save a fallback datafile at a regular interval of your choosing. Save the state of your datafile in a database or local storage of your application. That way if the Optimizely CDN is down, you can still load a slightly outdated datafile and not have to use default values.
  2. Upload the datafile to your own CDN – Upload the datafile from Optimizely Feature Experimentation to your own CDN. That way, if Optimizely's CDN goes down, your application has no direct reliance on Optimizely's infrastructure and can still operate normally.
  3. Code defensively – Write defensive code, especially for variables, as they evaluate to undefined if Optimizely goes down. You should always check if a feature is enabled before evaluating its associated feature variables and provide smart defaults when those variables are undefined.

Additionally, you can view the Optimizely status page.

What is the overhead of requesting a feature or running a feature test?

Optimizely does not have a concept of "requesting features." Optimizely does not make network calls to serve features or experiments to users, so there's zero latency. For information, see Does Optimizely Feature Experimentation make an API call to serve features to my users?.

Implementation

Can less technical users work with Optimizely Feature Experimentation?

Optimizely Feature Experimentation is built for product teams. Developers work with Feature Experimentation SDKs, but on many teams, product managers and analysts with less technical expertise configure features and experiments, manage rollouts, and analyze results in Optimizely Feature Experimentation.

Can I use Optimizely SDKs without a connection to the internet?

Yes, you can use Optimizely Feature Experimentation using a local copy of your datafile and batch up events to send later when your app is back online.

Can I use Optimizely Feature Experimentation if my site is heavily cached on a CDN?

Yes, you can to use Optimizely Feature Experimentation with a heavily cached site. This setup requires appropriate configuration at your CDN provider and some additional implementation in the backend. Contact your Customer Success Manager (CSM) to discuss options. You may also be interested in using Optimizely Feature Experimentation at the edge.

Do I need to modify my firewall when using Optimizely Feature Experimentation?

You probably will not need to modify your firewall to use Optimizely Feature Experimentation. If your firewall has egress (outbound traffic) restrictions, you will need to allowlist cdn.optimizely.com and logx.optimizely.com.

What if my stack is service-oriented or uses microservices?

You can use Optimizely as a service or include the Optimizely SDK in every service. For some best practices and special considerations when implementing Optimizely Feature Experimentation, see Microservices.

Does Optimizely Feature Experimentation need to connect to the cloud?

Yes. Our SDKs need to be able to download our JSON payload (the "datafile"). The datafile contains all the metadata about your features that the SDK needs to operate (toggle feature flags, apply remote configuration ("feature variables"), and segment users). The SDKs do not need two-way communication with our servers.

It is possible to run the open-source Optimizely Agent as a microservice or to download the datafile from an authenticated endpoint, which minimizes the security risk. Some customers even relay this information to their own CDN for added security and control.

Which languages does Optimizely Feature Experimentation work with?

We have SDKs for all the major programming languages (including Android, C#, Flutter SDK, Go, Java, JavaScript (Browser), JavaScript (Node), PHP, Python, React, Ruby, and Swift), a REST API and great blog articles with examples for programming language. You can also run Optimizely Agent as a microservice (open source and free).

Can Optimizely Feature Experimentationwork in a multi-tenant setup? Can I provision features among clients?

Yes. Some Optimizely Feature Experimentation users set up a Feature Experimentation environment for each customer. That way, you can use the same flag key everywhere and deliver progressively.

Other Optimizely Feature Experimentation users use key-value pairs to create audiences targeting specific customers to provision flags.

Do I need to set up my feature in your UI after implementing it?

You must log into the Optimizely app and set up the feature flag using the same key. This also makes sure anyone logging into Optimizely knows what flags are where and why (you can label and describe them). You can also use the Optimizely REST API to change features.

If you prefer, you can also build your own UI or use it in combination with the Optimizely app. Feature Experimentation has a microservice, REST API, and command-line interface you can talk to.

Integrations and Data

How do I access raw events?

With access to Optimizely export features, you can export the raw events from AWS S3.

What integrations does Optimizely Feature Experimentation offer?

Optimizely provides guides for connecting with analytics platforms. For information, see Set up analytics platforms. For a full list of Optimizely partners, see Partners.

What if I want to measure which feature people saw?

You will want to run an experiment (as opposed to using a feature flag to deliver an on or off experience). To analyze your experiment results, you have the following options:

  • You can integrate it with your existing analytics tool. See Set up analytics platforms for guides for the major analytics platforms (for instance, Google Analytics, Segment, or Mixpanel).
  • If you would like to measure which state or feature works best, Optimizely suggests using the (paid) Optimizely product with Optimizely Stats Engine.

📘

Note

Looking for more discussion on getting started with feature flags and experimentation? See Optimizely's Slack Developer Community to learn from other developers and share.