HomeGuidesAPI Reference
Submit Documentation FeedbackJoin Developer CommunityOptimizely GitHubOptimizely NuGetLog In

Configure FullStory

Integrate Optimizely Web and FullStory to get 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. Add the FullStory recording snippet to your site, then pass in the 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, go to Settings, and copy your recording snippet.
  4. Paste your recording snippet into the 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.

Now FullStory will start recording sessions for your site visitors.

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

Although you should add FullStory directly to your website, you also can add the FullStory snippet via Optimizely Web. 

  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, go to Settings, and copy your recording snippet.

  1. In Optimizely, go to Settings > JavaScript.

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

FullStory will now start recording your site visitors' sessions.

Pass in experiment/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:

After you add FullStory to your site, you can pass in experiment and variation names and IDs.

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

  1. Click Save at the bottom of the page.
  2. Go to Settings > Integrations and click Create Analytics Integration....

  1. Select Using Visual Editor in the dropdown menu.
  2. Enter a name for the integration (for example, “FullStory IDs”) and select Create Custom Analytics Integration.
  3. 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');
  1. Enable the custom integration you just created by going to Settings > Integrations and toggling Enable Integration to on.

  1. Go to Experiments and click the name of your experiment. Under Manage Experiments, select Integrations and select the Tracked checkbox for the FullStory integration that you just created and then click Save.

Repeat this in each experiment where you want the FullStory integration to run.

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.

Here is how to find experiment and variation IDs in Optimizely.

Pass in additional user data (optional)

If you are 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 (Option 1).

Switching from custom variables to custom events

Earlier iterations of this integration used FullStory’s custom variables API. Current iteration is custom events API. If you are integrating with Optimizely and FullStory for the first time, then you do not need to worry about old experiments. 

If you use custom variables for experiments, you should update 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 run with custom variables are still available to you once you switched to custom events.