Google Analytics Universal

The FullStory integration with Google Analytics Universal (we do not support classic) lets you add a FullStory Session URL as a Custom Dimension to your reports within Google Analytics.

Adding a FullStory Session URL to your funnel or drop-off reports gives you instant access to the sessions associated with your GA filters. This simple step allows you to have real and instant user data that adds life and depth to those boring report numbers.

Important Note: The Google Analytics integration uses the permissions of the user that is authorizing the integration. So only the user that authorized the integration can enable properties that they have permissions to in Google Analytics.

If you need to use the integration for other properties and don't have the same permissions of the user who originally authorized the integration, you'll have to remove the integration altogether, and go through the process of adding and "Authorizing" the integration. If you do re-add the Google Analytics integration, old configurations are erased and you'll need to reconfigure the properties again.


If you haven't already, you'll need to sign up for Google Analytics to get started.

After you set up your Google Analytics account, make sure the Google Analytics Universal script is installed. 

  1. Login to FullStory
  2. Navigate to Settings > Integrations & API Keys
  3. Toggle on Google Analytics Universal under Available Integrations.
  4. Accept the Google OAuth form to grant access to FullStory on behalf of your Google Analytics account.
  5. Select the web properties for which you wish to add the FullStory Session URL custom dimension.


Using the FullStory Session URL Custom Dimension

Now when building reports in Google Analytics Universal, you can add a FullStory Session URL Custom Dimension anywhere that you can use a dimension within Google Analytics. If you pre-define a custom dimension, ensure that it is named exactly "FullStory Session URL" (case sensitive). 

  1. For example, when building a report click on the "Secondary Dimension" dropdown and select FullStory Session URL.  
  2. Now your report will include a session URL with each result.

Note: GA does not allow click through links, so you'll have to copy and paste the session URL to a new browser tab to watch the session. Be sure you're logged in to FullStory so that the session can play.


Why am I seeing a spike in events from FullStory in Google Analytics? 

The FullStory integration with Google Analytics makes it possible to determine the session associated with any GA user's page views. This association is made by sending one "non-interaction" event (per page) that includes the current session URL. These events should not be considered "hits" in the same way a page view is in GA. They are specifically "non-interaction" so that they don't impact bounce rate or other computations for the page. 

For reference, the integration is roughly equivalent to the following code (you don’t need to use this code; it is for illustrative purposes only):

tracker.set(propId, sessionUrl);
tracker.send('event', {
  'eventCategory': 'FullStory',
  'nonInteraction': 1

The propId variable in the above code would be the ID of the custom dimension to which the session URL should be saved.

It might be preferable to associate this session Url property with the page view event that Google Analytics normally sends. Unfortunately, FullStory has no way to know when the initial page view is sent, and it is usually sent before FullStory can even calculate the session URL (the URL is unknown until recording has started successfully; recording start can be detected by means of the  _fs_ready() callback). So we have to send an event to ensure that the sessionUrl property gets associated with the user/page correctly in GA.

Note: These events should not be considered "hits" in the same way a page view is in GA. They are specifically "non-interaction" so that they don't, e.g., impact bounce rate computations for the page.

If for some reason the additional non-interaction events are still problematic (perhaps because they push you into sampling territory?), then in lieu of using the integration you might consider a manual solution, similar to the below. This example uses the _fs_ready() callback to associate the session URL to the page view event:

window["_fs_ready"] = function() {
  var sessionUrl = FS.getCurrentSessionURL();
  ga('set', 'dimensionNNN', sessionUrl);
  ga('send', 'pageview');

You should deploy a similar snippet, with the appropriate dimension name, to all the pages of your site, perhaps by means of your favorite tag manager. Note that you will also have to remove the logic in the default GA snippet that sends the page view event, else it will be sent twice, once in the GA snippet and once in the above snippet.

The drawback to using the above solution is that it will create some delay (a few hundred milliseconds, commonly) before the GA page view is sent. The delay results from waiting to send the page view event until the _fs_ready() callback fires.

Why am I getting a "Bad request" error when I try to enable the integration for a property in the FullStory Settings page?

One of the most probable reasons why you might be seeing this error is because FullStory was unable to create a Custom Dimension. FullStory tries to automatically add a new Custom Dimension called "FullStory Session URL". This creation is only possible when there are available slots for Custom Dimensions to be created in Google Analytics. Unfortunately, Google Analytics doesn’t have the option to remove a Custom Dimension.

What you can do, instead, is to modify an unused Custom Dimension in Google Analytics so that its configuration matches the one that FullStory creates. FullStory will recognize this Custom Dimension and send data accordingly. The modified Custom Dimension should have the following properties: The Name must be exactly "FullStory Session URL" (without the quotes and this field is case sensitive), Scope must be set to "Session" and the Active checkbox must be checked.

Need to get in touch with us?

The FullStory Team awaits your every question.

Contact us