FullStory and Qualtrics join forces to help you understand and improve your customer experience by providing context to customer feedback and accounting for bottom-line impact. Leverage both behavioral data and customer feedback to prioritize your highest-impact problems and solutions. With the FullStory and Qualtrics integration, you can seamlessly reconcile qualitative customer feedback with digital experience analytics to understand and take action on pressing issues and opportunities, greatly improving your customer experience.



Get the most out of FullStory + Qualtrics


How it Works

With Qualtrics and FullStory working together, you can add FullStory session URLs to survey responses and pass survey responses into FullStory. This bi-directional flow of data allows you to: - Quickly search for and segment users based on positive or negative feedback in order to understand how their experience affected their survey response. - Expose the relationship between your Qualtrics response data and your conversion rates and uncover revenue-impacting improvements. - Laser in on sessions where a user left specific feedback, a low NPS score, or any other response data and get a full view of their experience.




Connecting the two products currently requires some manual configuration of your survey and your site intercepts. Note that all examples below are for the JFE survey engine, not the SE engine.

Step 1: Pass FullStory data into surveys

Using Website / App Feedback projects

If you have access to Website / App Feedback projects in Qualtrics, you can use intercepts to automatically pass information into FullStory when a survey is launched. Intercepts serve as the glue between your survey and your website, and they are highly configurable. The steps below will show how to use embedded data to pass FullStory data points into the survey. 

Open your intercept and, in the relevant action set(s), choose Options > Embedded Data.

Create three pieces of embedded data: fsCookie, fsSession, and fsSessionUrl, as shown in the screenshot below:

The fsCookie field should get its value from a cookie named “fs_uid”. The other two embedded data fields are JavaScript values. The expression for fsSession should be as follows:

window["_fs_namespace"] && window[window["_fs_namespace"]] &&\ window[window["_fs_namespace"]].getCurrentSession ? window[window["_fs_namespace"]].getCurrentSession() : ""


The expression for fsSessionUrl should be as follows:

window["_fs_namespace"] && window[window["_fs_namespace"]] && window[window["_fs_namespace"]].getCurrentSessionURL ? window[window["_fs_namespace"]].getCurrentSessionURL() : ""

Click “Save,” and then publish the intercept.

Without Website / App Feedback projects

If your Qualtrics plan does not include Website / App Feedback projects, but you have built your own mechanism for launching surveys from your website, you can still integrate Qualtrics and FullStory. Note that, because FullStory only runs on your website, integration is only possible if you are somehow distributing surveys from your website and can make calls to FullStory’s client API.

Embedded data fields are passed into the survey as part of the survey URL. In the absence of site intercepts, you can simply construct the appropriate survey URL yourself.

You will need to add one parameter to the survey URL for each embedded data field. The final URL should be of the form:


Here is a more complete example; note that the parameter values have been URL-encoded:


Parameter values:

Step 2: Configure survey recording

The next step is to configure the survey to record activity into the same FullStory session from which the survey was launched. 

Set up incoming embedded data

Open your survey project, and then open the survey flow. At the start of the flow, if you don’t already have an embedded data block, add one. Add fields for fsCookie, fsSession, and fsSessionUrl, without setting a value (their values will thus be taken from the survey URL). 

FullStory session IDs and URLs will now appear in the embedded data section of survey responses. The FullStory cookie will also appear, but the cookie has no value by itself. In the next section, we will see how to set up recording of surveys, and how to use the cookie to tie together survey activity with recordings of your website.

Add recording JavaScript

JFE surveys are single-page apps, so recording the survey can be accomplished by adding the FullStory recording snippet to the first question of your survey. On the first question, click the settings gear icon, and then “Add JavaScript...”

In the below snippet, replace “[YOUR RECORDING SNIPPET HERE]” with your FullStory snippet. If you have no other JavaScript logic on the question, you can copy-paste the entire snippet into the pop-up window. If you have existing logic in the addOnload function, add the content of the function to your existing function content:

// pull FS cookie from embedded data
const embeddedCookie = '${e://Field/fsCookie}';
if (embeddedCookie) {
const nowInSeconds = Math.floor(Date.now() / 1000);
const maxExpiration = nowInSeconds + 31536000;
const [content, maybeExpiration] = embeddedCookie.split("/");
let expiration = parseInt(maybeExpiration);
if (expiration > maxExpiration) { expiration = maxExpiration; }

let newCookie = 'fs_uid=' + content + '/' + expiration;
newCookie += '; domain=.qualtrics.com; Expires=' + expiration
newCookie += '; path=/; SameSite=Strict; Secure';
document.cookie = newCookie;

// FS snippet

This logic extracts the FullStory cookie from the embedded data and sets the cookie on the Qualtrics domain. It then runs the FullStory recording snippet to start recording the survey. The cookie is sent along with recorded data, so its value can be used on FullStory servers to stitch together activity on your website domain with survey activity on the Qualtrics domain.

Step 3: Pass survey results into FullStory

Now that surveys are being recorded, the FullStory client API will be available on the survey. We can use custom variables and/or custom events to send values from survey responses into. 

The below snippet is an example of submitting the user’s NPS to FullStory when it is the last question in a survey. It is the JavaScript snippet on the NPS question itself, so `this` in the code refers to the NPS question object. This example makes use of both custom variables and custom events, so that you can search for a user based on their score and for sessions during which they submitted the score.

// This is the last page, so submit a custom event for the survey with the NPS score
if(type == 'next')
let eventProps[i] = {};
let selected = this.getSelectedChoices();
if (selected.length > 0) {
let nps = parseInt(selected[0]);
eventProps.nps_real = nps;
eventProps.isDetractor_bool = nps <= 6;
eventProps.isPromotor_bool = nps >= 9;
eventProps.isPassive_bool = nps > 6 && nps < 9;
switch(nps) {
case 10:
case 9:
eventProps.npsGroup_str = 'Promoter';
case 8:
case 7:
eventProps.npsGroup_str = 'Passive';
eventProps.npsGroup_str = 'Detractor';

// TODO: you could add answers to other questions that are of interest, for cohorting

FS.event('Qualtrics CSAT Submitted', eventProps, 'qualtrics');
FS.setUserVars(eventProps, 'qualtrics');


Note that because this is a question on a page which has not yet been submitted, you cannot use piped text to fetch the answer value. Piped text could be used for the answers to questions on previous pages in the survey flow, and it would considerably simplify the above example. 

This example shows how to retrieve the answer to a Net Promoter Score question; refer to the Qualtrics Question API for examples of working with answer values to different types of questions.

Step 4: Intercept displayed custom event (optional)

Qualtrics keeps statistics that allow you to calculate click-through rates for your intercepts, but you may want to do similar or related analyses in FullStory. You can capture the display of an intercept by adding JavaScript to your intercept as in the example below: 

You could then use the FullStory Conversions functionality to view click-through rates for your survey:

Step 5: Manual deployment (optional)

Note: If you are already using a tag manager or CDP to deploy FullStory, you don’t need to do the below steps.

If you are not using a tag manager like GTM or a CDP like Segment or Tealium, you may wish to manually ensure that there are no load timing issues between FullStory and your Qualtrics intercept. The below steps ensure that the intercept loads after recording starts, so that FullStory session URLs are available to the Qualtrics intercept.

Configure your intercept for manual deployment by following the instructions at “Implementing Manually with JavaScript API.” This means that you will need additional JavaScript code in your web application to load the intercept and evaluate whether it should be displayed to the end user.

This additional JavaScript code is provided by the FullStory integration with Qualtrics. To get started, navigate to “Integrations and API Keys” in your FullStory settings. Next to the Qualtrics integration, click the “Add” button.

When installation is complete, the integration configuration window will slide out from the right side. Click “Done.”



Built by: Qualtrics

Setup: Manual 

Support: support@fullstory.com