This article will help you:
  • Enable integrations to pass Optimizely's experiment data to your analytics platform
  • Use Optimizely's default integrations (Google Analytics, KISSmetrics, Mixpanel, SiteCatalyst, AT Analytics)
  • Use other custom analytics integrations and know what data needs to be passed

Optimizely allows you to integrate with various other analytics tools by default. The Analytics Integration options contain out of the box integration with some of the most popular tools. If you are unfamiliar with integrations, please first visit our Introduction to integrations article.

By default, all of your project’s integrations are turned off. To turn them on, go to the Integrations tab on the Home page, select an integration and toggle the Off button to On


Some integrations require a separate configuration for each experiment. For example, you may want to enable an integration for a subset of your experiments or use different settings for each experiment. In these cases, go to the Optimizely Editor and click Options > Integrations.

By enabling any of the integrations, you allow Optimizely to send data to the platform in question, so that you can see how each variation in a specific experiment affected common metrics like visit duration and bounce rate. 


Available integrations vary by plan type. If you don’t see an integration in your Optimizely account, or want to learn more about what’s available, please refer to our Optimizely Classic packages matrix.

Comparing data between Optimizely and your analytics platform

You may notice that Optimizely and your analytics platform capture information differently. Optimizely and common analytics platforms are each optimized to provide different pieces of information. As a result, you may see discrepancies in your data between the two platforms, even if they’re integrated.

For instance, if you’re tracking clicks on a “View Now” button and the same unique visitor clicks it 10 times, Optimizely will only count that as one conversion. The reason Optimizely counts visitors this way is because it analyzes data from the perspective of a unique visitor’s behavior. Your analytics platform, on the other hand, may count that as 10 conversions. This is because Optimizely and your analytics platform need to dissect data differently for their respective purposes.

Integrating Optimizely with your analytics platform will help you view your experiment data within the context of the analytics you already collect. This will give you a much greater insight into whether the numbers are trending in the same direction.

A primary reason for a discrepancy between your GA numbers and Optimizely’s results boils down to the way a “visitor” is counted.

  • For instance, Google Analytics uses a tracking call that is session based, meaning a single visitor can trigger multiple visits over a given period of time.

  • Optimizely, on the other hand, uses a 10 year cookie and counts unique users.

  • For additional information on Google’s sessions, check out their support article on the issue.

If you don't see your variation names in your analytics reporting, this may be because of your privacy settings. Disabling the Mask descriptive names setting will allow Optimizely to pass variation names to your analytics platform, though it will also make your variation names available in your source code.

If you're still having trouble with the data you see in each platform, check out our articles on troubleshooting Google Analytics and troubleshooting Adobe Analytics.

Adobe Analytics (Omniture SiteCatalyst)

Adobe Analytics (Omniture SiteCatalyst) integration requires a small block of code to be added to the SC implementation on your page. Once enabled it will allow you to look at your SC data split by the Optimizely Experiment and Variation. Learn more in our Adobe Analytics (Omniture SiteCatalyst) article.


You will need to pick either a prop or an eVar that Optimizely can use to send the data. It's not necessary to have both, but one is required.

AT Internet Analytics

Enabling the AT Internet integration requires you to provide 2 pieces of information at the project level, which Optimizely will attempt to auto-populate for you if an AT Internet tag is found on the page loaded in the Editor. Learn more in our AT Analytics article.

  • Account Number - This is the AT Internet account number being used for the tag on your page (the s query parameter in the log call).

  • Log Server URL - This is the base of the URL which your account is configured to send log calls to. 

Google Analytics

You can enable Google Analytics (GA) integration for either Universal Analytics or Classic Analytics. Learn more in our Google Analytics article.

For both Universal Analytics and Classic Analytics, you can select a dimension/slot number and a custom tracker:

  • Slot Number/Dimension - Select a dimension (in Universal Analytics) or slot number (in Classic Analytics) that is not currently being used by another experiment or any custom variables in your existing GA integration. This is the Custom Variable Key that you will use to find your Optimizely experiment in GA.

  • Custom Tracker - Only use this if you're defining a custom tracker on your page. If you're not sure what a custom tracker is, leave this blank.


KISSmetrics is turned on for an entire project, so turning it on for one experiment will affect all the experiments in that project. Keep that in mind when turning on KM integration. Learn more in our KISSmetrics article.


Turning on Mixpanel integration requires an existing Mixpanel account. Once the integration is enabled at the project level, it can be enabled for your individual experiments. Learn more in our Mixpanel article.


By integrating Optimizely and Bizible, you can access Optimizely experiment information in Salesforce. Bizible helps companies track their marketing activities back to individual customers in Salesforce, and through this integration you can:

  • See lead to opportunity conversion rate by variation.

  • Run complex reports on other Salesforce and Bizible fields such as variation revenue by device type, location, or by marketing source.

  • Analyze which version of a page a contact had seen, which may be helpful in testing pricing.

If you are a Bizible customer, reach out to Bizible to enable this integration.


If you use Segment to manage your analytics integrations, you can track events directly into Optimizely, and record variations into your event-tracking software, like Mixpanel or KISSmetrics.

Segment cannot currently be enabled on the Integrations tab of the Home page. You'll need to implement the Optimizely Snippet normally, then use Segment's track method to track custom events directly to Optimizely. Track takes the name of the event and any optional properties you want to record about the event. For more information on how to set up custom events through Segment, visit Segment's excellent tutorial.

Another analytics platform of your choice

If you want to integrate Optimizely with another analytics platform (such as Webtrends) or in-house database, Optimizely exposes a JavaScript API for determining which variation has been selected for the current visitor. If your preferred analytics service isn't currently supported, let us know in the Optiverse Community!

Here's how to determine which variation your visitor is seeing. In your JavaScript code, simply access the following objects:



This object maps each active Experiment ID on a given page to the variation currently running. To find the Experiment ID for your experiment, just check the URL of the Optimizely Editor while you're editing the experiment. You'll see something like this:

In your javascript layer on any page where this experiment is active, you can access the current variation index like this:

  var experimentId = 123456;
  var variationIndex = -1;
  if (typeof(optimizely) != "undefined" &&
      optimizely.variationMap.hasOwnProperty(experimentId)) {

      variationIndex = optimizely.variationMap[experimentId];


The right side of the last equation returns the variationIndex, and after this code runs, variationIndex will take on one of the following values:

-1  // Optimizely isn't yet loaded, or this experiment is not active on this page
 0   // this experiment is running, and the visitor is seeing the original page
 1   // this experiment is running, and the visitor is seeing the first variation
 2   // etc.



This object behaves exactly like optimizely.variationMap except that it maps each active Experiment ID on a given page to the title of the variation currently running.