Optimizely will be sunsetting Full Stack Experimentation on July 29, 2024. See the recommended Feature Experimentation migration timeline and documentation.

Dev GuideAPI Reference
Dev GuideAPI ReferenceUser GuideLegal TermsGitHubNuGetDev CommunitySubmit a ticketLog In
These docs are for v2.0. Click to read the latest docs for v3.0.


Have questions? We have answers.

What can I do with Optimizely Full Stack?

Optimizely Full Stack is feature management and A/B testing for product teams.

  • Feature flags and rollouts help you launch features safely and give you a kill switch if unanticipated issues arise.
  • Feature tests empower you to experiment with feature configurations and iterate on features without deploying code. Optimizely's industry-leading Stats Engine calculates results so you can learn what is working and why.
  • Full Stack A/B tests enable you to run experiments in any application. These require you to deploy code, so they're best used for one-off decisions, such as comparing one algorithm against another.

Pair Optimizely's Full Stack and Web products to empower your entire organization—from product to marketing teams—to experiment and build an optimized customer experience.

How can I use Optimizely in my tech stack?

Optimizely Rollouts is free to all users and all companies - feel free to download Rollouts and start using the flags today. You will see the basic Optimziely UI and can run one experiment simultaneously. If you would like to add more seats or MAUs, upgrade to the full functionality of Full Stack, or if you are interested in our client-side solution, Optimizely Web Experimentation, contact Optimizely to discuss your requirements.

How does Optimizely affect my application speed?

Optimizely Full Stack 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), the backend does all the work. The experiment code runs before the web page ever loads.

Full Stack SDKs are built to split traffic to experiments without making 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, Full Stack is faster because it doesn't 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. Full Stack won't 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 Full Stack:

  • When and how often to download the datafile that in-memory bucketing uses. Manage this by limiting the file size and download frequency.
  • 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).

We are always happy to discuss performance. Contact us if you want to see performance benchmarks for any of our SDKs.

Can I run server-side experiments?

You can experiment anywhere in your technology stack with Optimizely's SDKs. If your plan includes Full Stack, you can run experiments in various languages. If you're interested in testing in a different language, please contact us.

How does Optimizely Full Stack consistently bucket users across different SDKs?

It’s important that your users have a consistent, delightful experience. Full Stack SDKs use deterministic bucketing via MurmurHash3 to determine which experiments and variations should be active for a user. This ensures that users will be given the same treatment across multiple visits or on different channels.

Optimizely also ensures that all of our SDKs give the same output no matter what language you’re using.

How does datafile management work in Optimizely Full Stack?

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 I access raw events?

With access Optimizely data exports, you can export the raw events from AWS S3.

How do Optimizely SDKs handle bot traffic?

Optimizely Full Stack SDKs support bot detection as of version 2.1. Enable bot filtering directly from your account’s project settings. Once 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 our about bot filtering .

Can less technical users work with Optimizely Full Stack?

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

How many collaborators can I add to my account?

There is no limit to the number of collaborators on an account. We encourage you to invite the whole team to increase visibility, share results and insights, and deepen experimentation across your working group. Optimizely offers a full suite of permissions and additional integrated program management tools, so your team can collaborate more effectively.

How long does it take for changes in Optimizely Full Stack to be reflected in my app?

Changes in your app depend on how frequently you refresh your datafile. Changes are reflected in the datafile within ~60 seconds.

Does Optimizely Full Stack make an API call to serve features to users?

No network requests are required to evaluate feature flags and experiments, so there's 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 using a custom event dispatcher.

What happens to my app if there's a service interruption?

An app.optimizely.com interruption won't affect your app’s operation. However, during the interruption, you won't be able to log into the site to update experiments or make other changes.

Here's the Optimizely status page.

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

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

Can I use Optimizely Full Stack if my site is heavily cached on a CDN?

Yes, it is possible to use Full Stack with a heavily cached site. This setup requires appropriate configuration at your CDN provider and some additional implementation in the backend. Please contact your Customer Success Manager to discuss options. See also Content delivery networks.

Do I need to modify my firewall when using Optimizely Full Stack?

You probably won't need to modify your firewall to use Full Stack. If your firewall has egress (outbound traffic) restrictions, you'll need to whitelist cdn.optimizely.com and logx.optimizely.com.

What is the overhead of a feature request?

The overhead is negligible. After Activate has been called, these functions have little work to do.

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 Full Stack, see Microservices.