Running a test in Optimizely and want to know why conversions differ between your variations? Just open FullStory to instantly view each session, or use FullStory's visual analytics or Click Maps to get insights about aggregated sessions. Enabling FullStory is as easy as copying the FullStory snippet and including in your Project Javascript in Optimizely X, configuring the settings, and enabling it as an analytics integration. Once configured, you will easily be able to segment visitors in FullStory based on the experiment and variation, so you can see exactly how your visitors react to new design changes!



Get the most out of FullStory + Optimizely


How it Works

FullStory allows you to record and play back all in-browser interactions. Integrate FullStory to get powerful insights into how users interact with your Optimizely experiments and ideas for new experiments to run in Optimizely. This is an integration that is built and maintained by FullStory. To set up the integration, follow the instructions on FullStory's help site. You'll add the FullStory recording snippet to your site, then pass in experiment, campaign, and variations names and IDs.




Before you integrate FullStory, contact your Optimizely Customer Success Manager and confirm that the Custom Analytics feature is turned on for your account.

Add the FullStory recording snippet to your site

You have two options for adding the FullStory recording snippet to your site:

  • Add the FullStory recording snippet directly to your site (recommended).

  • Use Optimizely to add the FullStory recording snippet to your site.

Option 1: Add the FullStory recording snippet directly to your site

  1. Create a FullStory account.

  2. Click the link in the FullStory confirmation email to confirm your account.

  3. Log in to your FullStory account, navigate to Settings, and copy your recording snippet.

  4. Paste your recording snippet into the <HEAD> element via your content management system (CMS) or directly into your application’s code
    Make sure to place the FullStory recording snippet above your Optimizely snippet.

FullStory will now start recording sessions for your site visitors. Though we highly recommended adding FullStory directly to your website, it’s also possible to add the FullStory snippet via Optimizely. If you prefer to add the FullStory snippet via Optimizely, follow these steps:

Option 2: Use Optimizely to add the FullStory recording snippet to your site

  1. Create a FullStory account.

  2. Click the link in the FullStory confirmation email to confirm your account.

  3. Log in to your FullStory account, navigate to Settings, and copy your recording snippet.

4. In Optimizely, navigate to Settings JavaScript.

5. Paste the FullStory recording snippet in the Project JavaScript field.

FullStory will now start recording your site visitors' sessions.

Pass in experiment and variation names and IDs  

When A/B or multivariate testing, you might want to compare how visitors interact with the different variations of your pages. By passing custom events from Optimizely to FullStory, it’s possible to see and compare user sessions by things like experiment name and variant name. Use OmniSearch  in Fullstory to find sessions that ran with Optimizely Experiments:

Now that you've added FullStory to your site, you can pass in experiment and variation names and IDs. Here's how:

1. In Optimizely, navigate to Settings and uncheck Mask descriptive names in project code and third-party integrations” (under Privacy Settings).

2. Click Save.

3. Navigate to Settings > Integrations and click Create Analytics Integration...

4. Select Using Visual Editor in the dropdown menu.

5. Type a name for the integration (for example, “FullStory IDs”) and select Create Custom Analytics Integration.

6. Copy the following code, paste it in the custom field, and click Save:

(function () {
 function _fs() { return window[window['_fs_namespace']]; }
 utils = window.optimizely.get('utils');
 utils.waitUntil(function () {
   return typeof _fs() === 'function';
 }).then(function () {
   var campaignStates = window.optimizely.get('state').getCampaignStates({ isActive: true });
   for (var campaignId in campaignStates) {
     var c = campaignStates[campaignId];
     if (c.isInCampaignHoldback !== true) {
       var payload = {};
       payload.campaign = {};
       payload.campaign.id_str = campaignId;
       payload.campaign.name_str = c.campaignName;
       if (c.experiment) {
         payload.experiment = {};
         payload.experiment.id_str = c.experiment.id;
         payload.experiment.name_str = c.experiment.name;
       if (c.variation) {
         payload.variation = {};
         payload.variation.id_str = c.variation.id;
         payload.variation.name_str = c.variation.name;
       _fs().event('Experiment', payload, 'Optimizely');

Navigate to Experiments and click the name of your experiment. Under Manage Experiments, select Integrations and check the “Tracked” checkbox for the FullStory integration that you just created.

Repeat this in each experiment where you want the FullStory integration to run. Now, you can search by experiment and variation name and IDs in FullStory! Just search for “experiment”, “campaign”, or “variation” and the values for those fields in FullStory.

Pass in additional user data (optional)

If you’re interested in passing in additional profile data you can do so easily with FullStory’s setUserVars API; if you’d like to pass in usernames or emails for users that you’ve already identified, you can use FullStory’s identify API. Once complete, simply add the script you’ve created to your pages by following the instructions you used to add the FullStory snippet (Step 1).

Switching from custom variables to custom events

Earlier iterations of this integration used FullStory’s custom variables API. We have since released our custom events API. If you are integrating with Optimizely and FullStory for the first time, then you don’t need to worry about old experiments. 


If you have been using custom variables for experiments, we recommend updating your integration to use custom events. If you have experiments that are currently in flight, continue using the old integration without making changes to the inflight experiment. Create a new integration using custom events (following the instructions in this guide) and use it for all new experiments going forward.

Why use custom events?

Over time, you may run many experiments on your site. Custom events provide an easier and more elegant search experience when you’ve run multiple experiments or have multiple users who have engaged in many experiments. Any older experiments that you’ve run with custom variables will still be available to you once you’ve switched to custom events.

Premier Partner



Built by: Optimizely

Setup: Manual 

Support: support@optimizely.com 

Version: 1.0