FullStory Troubleshooting & Debugging | Blue Frog Docs

FullStory Troubleshooting & Debugging

Solve common FullStory issues including installation problems, event tracking errors, session replay gaps, and integration failures.

FullStory Troubleshooting & Debugging

Overview

Even with careful implementation, you may encounter issues with FullStory. This guide covers common problems, diagnostic techniques, and solutions to help you troubleshoot installation, event tracking, session replay, and integration issues.

General Diagnostic Steps

Before diving into specific issues, use these general troubleshooting steps:

1. Check if FullStory is Loaded

Open your browser's developer console and run:

console.log(typeof FS);

Expected result: "function" Problem if: "undefined" - FullStory script hasn't loaded

2. Verify FullStory Version

console.log(FS._v);

This shows the FullStory SDK version currently loaded.

3. Check Network Requests

  1. Open DevTools > Network tab
  2. Filter by fullstory
  3. Look for requests to edge.fullstory.com/s/fs.js
  4. Verify status code is 200 OK

4. Review Console Errors

Check for errors related to FullStory:

  1. Open DevTools > Console tab
  2. Look for errors containing "FullStory", "FS", or "fullstory.com"
  3. Note any CSP (Content Security Policy) errors

5. Verify FullStory Dashboard Status

  1. Log in to FullStory
  2. Go to Settings > Data
  3. Check if sessions are being recorded
  4. Review "Last session received" timestamp

Installation Issues

FullStory Script Not Loading

Symptoms:

  • typeof FS returns undefined
  • No network requests to fullstory.com
  • No sessions appearing in FullStory dashboard

Possible Causes & Solutions:

1. Script tag missing or incorrect

Check that the FullStory script is in your HTML <head>:

<head>
  <!-- FullStory should be here -->
  <script>
  window['_fs_host'] = 'fullstory.com';
  window['_fs_script'] = 'edge.fullstory.com/s/fs.js';
  window['_fs_org'] = 'YOUR_ORG_ID';
  // ... rest of script
  </script>
</head>

2. Wrong Org ID

Verify your Org ID is correct:

  • Log in to FullStory
  • Go to Settings > FullStory Setup
  • Compare Org ID in your code

3. Ad blocker or browser extension

Some browser extensions block analytics scripts:

  • Test in incognito/private mode
  • Disable ad blockers temporarily
  • Check different browsers

4. Content Security Policy (CSP) blocking script

If your site uses CSP headers, you must allow FullStory:

Content-Security-Policy:
  script-src 'self' https://edge.fullstory.com https://fullstory.com;
  connect-src 'self' https://rs.fullstory.com wss://rs.fullstory.com;
  img-src 'self' https://rs.fullstory.com data:;

5. Script loaded after page load

Ensure FullStory loads early in <head>, not at the end of <body>.

FullStory Loads But Sessions Not Recorded

Symptoms:

  • typeof FS returns "function"
  • FullStory script loads successfully
  • No sessions appear in dashboard

Possible Causes & Solutions:

1. Recording not started

Check if FullStory is actively recording:

FS.getCurrentSessionURL(true);

If this returns null, recording isn't active.

Solution: Start recording manually:

FS.restart();

2. User opted out or privacy settings

Check if user has opted out:

console.log(FS.consent.value);

If false, user hasn't consented.

Solution: Request consent:

FS.consent(true);

3. Page excluded from recording

Verify the page isn't excluded in FullStory settings:

  • Go to Settings > Privacy
  • Check "Excluded URLs" list
  • Remove unwanted exclusions

4. Sampling is enabled

FullStory may be sampling sessions (recording only a percentage):

  • Go to Settings > Data Capture
  • Check "Session Sampling Rate"
  • Set to 100% for full capture (or adjust as needed)

Event Tracking Issues

Custom Events Not Appearing

Symptoms:

  • FS.event() called but events don't appear in FullStory
  • Can't find events in Omnisearch

Possible Causes & Solutions:

1. Event name is invalid

FullStory has restrictions on event names:

  • Cannot start with a number
  • Cannot contain special characters (except spaces and underscores)
  • Cannot exceed 250 characters
// Invalid
FS.event('123-event');  // Starts with number
FS.event('event@name'); // Contains @

// Valid
FS.event('Button Clicked');
FS.event('Form_Submitted');

2. Event fired before FullStory loaded

Ensure FullStory is loaded before sending events:

// Bad
FS.event('Page Loaded');  // FS might not exist yet

// Good
if (window.FS) {
  FS.event('Page Loaded');
} else {
  console.warn('FullStory not loaded yet');
}

// Best
window.addEventListener('load', function() {
  if (window.FS) {
    FS.event('Page Loaded');
  }
});

3. Event properties are invalid

Event properties must be:

  • Simple values (strings, numbers, booleans)
  • Not functions or complex objects
// Invalid
FS.event('Button Clicked', {
  timestamp: new Date(),  // Objects not supported
  handler: function() {}  // Functions not supported
});

// Valid
FS.event('Button Clicked', {
  timestamp: new Date().toISOString(),  // Convert to string
  button_id: 'cta-123',
  page: window.location.pathname
});

4. Too many events fired at once

FullStory may throttle if too many events are sent in rapid succession:

// Bad: Loop firing hundreds of events
for (let i = 0; i < 1000; i++) {
  FS.event('Loop Event');  // Will be throttled
}

// Good: Aggregate and send summary
FS.event('Bulk Action Completed', {
  items_processed: 1000
});

Events Appear But Missing Properties

Symptoms:

  • Events show up in FullStory
  • Event properties are missing or incomplete

Possible Causes & Solutions:

1. Property name too long

Property names must be ≤ 250 characters.

2. Property value too long

Property values must be ≤ 1000 characters. Longer values are truncated.

Solution:

// Truncate long values
const description = longDescription.substring(0, 1000);

FS.event('Article Viewed', {
  description: description
});

3. Nested objects not supported

FullStory doesn't support nested objects in event properties:

// Invalid
FS.event('Purchase', {
  product: {
    name: 'Widget',
    price: 49.99
  }
});

// Valid - flatten the structure
FS.event('Purchase', {
  product_name: 'Widget',
  product_price: 49.99
});

User Identification Issues

Users Not Being Identified

Symptoms:

  • FS.identify() called but users show as "Anonymous"
  • Can't search by user ID in Omnisearch

Possible Causes & Solutions:

1. User ID is not a string

User IDs must be strings:

// Invalid
FS.identify(12345);  // Number

// Valid
FS.identify('12345');  // String
FS.identify(user.id.toString());

2. User ID contains PII

Avoid using raw email addresses or names as user IDs (privacy concern):

// Discouraged
FS.identify('john.doe@example.com');

// Better - use hashed or database ID
FS.identify('user_7a8b9c');

3. FS.identify() called before FS loaded

// Bad
FS.identify(user.id);  // FS might not exist

// Good
if (window.FS) {
  FS.identify(user.id);
}

4. User properties invalid

User properties must follow naming conventions:

// Invalid property names
FS.identify(user.id, {
  'email': 'user@example.com',  // Missing type suffix
  123: 'value'                   // Cannot start with number
});

// Valid
FS.identify(user.id, {
  email_str: 'user@example.com',
  signupDate_date: new Date('2024-01-15'),
  isPremium_bool: true,
  loginCount_int: 42
});

User Properties Not Syncing

Symptoms:

  • FS.identify() called with properties
  • Properties don't appear in FullStory user details

Possible Causes & Solutions:

1. Type suffix missing

FullStory requires type suffixes for user properties:

// Invalid - no type suffix
FS.identify(user.id, {
  email: 'user@example.com',
  plan: 'premium'
});

// Valid - with type suffixes
FS.identify(user.id, {
  email_str: 'user@example.com',
  plan_str: 'premium',
  signupDate_date: new Date(),
  isActive_bool: true,
  loginCount_int: 10
});

Type suffixes:

  • _str - String
  • _int - Integer
  • _real - Decimal/Float
  • _bool - Boolean
  • _date - Date

2. Reserved property names

Some property names are reserved. Use a prefix:

// Avoid
FS.identify(user.id, {
  uid_str: 'user_123'  // 'uid' is reserved
});

// Better
FS.identify(user.id, {
  userId_str: 'user_123'
});

Session Replay Issues

Sessions Recording But Replay Is Blank

Symptoms:

  • Sessions appear in FullStory
  • Clicking into session shows blank/white screen

Possible Causes & Solutions:

1. Page uses iframe

FullStory doesn't record content inside cross-origin iframes.

Solution: If you control the iframe content, install FullStory in the iframe as well.

2. CSS or assets blocked

FullStory may not be able to recreate the page if CSS or assets are blocked.

Check: Review Network tab for 404 errors on CSS/font files during replay.

3. Page uses Shadow DOM

FullStory has limited support for Shadow DOM elements.

Solution: Use light DOM where possible or contact FullStory support for workarounds.

Session Replay Missing Interactions

Symptoms:

  • Session replay shows page but doesn't show clicks, scrolls, or text input

Possible Causes & Solutions:

1. Privacy settings masking too much

Check privacy rules:

  • Go to Settings > Privacy
  • Review "Exclude Elements" rules
  • Ensure you're not excluding critical elements

2. Dynamic content not captured

If content is added after page load (via JavaScript), FullStory may not capture it immediately.

Solution: Ensure FullStory is running when dynamic content is added.

3. Canvas or WebGL content

FullStory doesn't record <canvas> or WebGL content perfectly.

Workaround: Use DOM-based rendering where possible.

Replay Playback Is Choppy or Slow

Symptoms:

  • Replay stutters or loads slowly
  • Missing frames or jumps

Possible Causes & Solutions:

1. Large DOM size

Pages with very large DOMs (10,000+ elements) can cause slow replays.

Solution: Optimize page structure, remove unused elements.

2. Slow network during recording

If user had slow network, data may be incomplete.

Check: Review session details for network speed indicators.

3. Browser compatibility

Some older browsers may not capture all interactions.

Solution: Encourage users to update browsers.

Privacy & Data Masking Issues

Sensitive Data Appearing in Replays

Symptoms:

  • Passwords, credit cards, or PII visible in session replays

Immediate Action:

  1. Delete the session:

    • Find session in FullStory
    • Click "More" > "Delete Session"
  2. Add privacy rules:

    • Go to Settings > Privacy
    • Click "Add Exclusion Rule"
    • Select elements to mask (forms, inputs, etc.)

Prevention:

Use CSS classes to mask sensitive fields:

<!-- Automatically masked -->
<input type="password" name="password">
<input type="text" class="fs-mask" name="ssn">
<div class="fs-exclude">Sensitive content here</div>

Programmatic masking:

FS.setUserVars({
  'email_str': maskEmail(user.email),
  'phone_str': maskPhone(user.phone)
});

function maskEmail(email) {
  return email.replace(/(.{2}).*(@.*)/, '$1***$2');
  // user@example.com -> us***@example.com
}

Entire Page Blocked from Recording

Symptoms:

  • Specific pages never show in FullStory
  • Session ends when user navigates to certain URLs

Possible Causes & Solutions:

1. Page URL excluded in privacy settings

Check:

  • Go to Settings > Privacy
  • Review "Excluded URLs"
  • Remove unwanted exclusions

2. Page uses restrictive CSP

Content Security Policy may block FullStory on certain pages.

Solution: Update CSP headers to allow FullStory on all pages.

3. FS.shutdown() called

Check if code explicitly stops recording:

// This stops recording
FS.shutdown();

Solution: Remove calls to FS.shutdown() or restart:

FS.restart();

Integration Issues

Salesforce Integration Not Working

Symptoms:

  • Sessions not appearing in Salesforce
  • "View in FullStory" link missing

Solutions:

1. Re-authorize connection:

  • FullStory > Settings > Integrations > Salesforce
  • Click "Reconnect"
  • Re-authorize

2. Check user ID mapping:

Ensure FullStory user ID matches Salesforce Contact ID or Email:

FS.identify(salesforceContactId, {
  email_str: user.email
});

3. Verify Salesforce permissions:

FullStory integration requires:

  • API access
  • Read/Write permissions on Contacts, Leads, Accounts

Zendesk Sessions Not Attaching

Symptoms:

  • Support tickets don't show FullStory session links
  • "View in FullStory" button missing

Solutions:

1. Match user identities:

Ensure FullStory user ID matches Zendesk user email:

FS.identify(user.id, {
  email_str: user.email  // Must match Zendesk user email
});

2. Re-install Zendesk app:

  • Zendesk > Settings > Apps > FullStory
  • Click "Uninstall"
  • Reinstall from Zendesk Marketplace

3. Check Zendesk API permissions:

Ensure FullStory has permission to access tickets.

Slack Notifications Not Sending

Symptoms:

  • FullStory alerts not appearing in Slack
  • Manual shares to Slack fail

Solutions:

1. Re-authorize Slack:

  • FullStory > Settings > Integrations > Slack
  • Click "Reconnect"
  • Re-authorize in Slack

2. Verify Slack channel permissions:

Ensure the FullStory bot has permission to post in target channels:

  • Slack channel > Settings > Integrations
  • Add FullStory app if missing

3. Check alert configuration:

  • FullStory > Settings > Alerts
  • Verify alerts are enabled and targeting correct channels

Performance Issues

FullStory Slowing Down Page Load

Symptoms:

  • Page load time increased after installing FullStory
  • Lighthouse performance score dropped

Solutions:

1. Verify async loading:

Ensure FullStory script uses async:

o.async=1;  // Should be in FullStory snippet

2. Reduce recording scope:

Lower session sampling rate:

  • Settings > Data Capture
  • Set "Session Sampling Rate" to 50% or lower

3. Exclude low-priority pages:

Don't record non-critical pages:

  • Settings > Privacy
  • Add exclusions for admin pages, internal tools, etc.

4. Use data layer efficiently:

Avoid sending excessive custom events:

// Bad - firing event on every mousemove
document.addEventListener('mousemove', () => {
  FS.event('Mouse Moved');  // Too many events
});

// Good - fire on meaningful interactions only
document.getElementById('cta').addEventListener('click', () => {
  FS.event('CTA Clicked');
});

High Memory Usage

Symptoms:

  • Browser consumes excessive memory
  • Tabs crash or slow down

Solutions:

1. Clear long-running sessions:

FullStory buffers session data in memory. For very long sessions (30+ minutes), memory can grow.

Restart recording periodically:

// After major user action, restart recording to clear buffer
function onUserLogout() {
  FS.restart();
}

2. Reduce DOM complexity:

Large DOMs increase memory usage. Optimize:

  • Remove unused elements
  • Lazy-load off-screen content
  • Use virtualization for long lists

Data & Reporting Issues

Sessions Missing in FullStory Dashboard

Symptoms:

  • Sessions recorded but not appearing in dashboard
  • Search returns no results

Solutions:

1. Check date filter:

Ensure date range in FullStory includes when sessions were recorded.

2. Verify search syntax:

Use correct Omnisearch syntax:

// Correct
user.email = "user@example.com"

// Incorrect
email = "user@example.com"  // Missing "user." prefix

3. Wait for processing:

Sessions may take 1-2 minutes to appear after recording. Refresh dashboard.

Funnel Drop-off Data Looks Wrong

Symptoms:

  • Funnel shows unexpected drop-off rates
  • Steps don't match reality

Solutions:

1. Verify funnel step definitions:

Ensure funnel steps are defined correctly:

  • Funnels > Select funnel > Edit
  • Check each step matches actual user flow

2. Check URL matching:

If using URL-based steps, ensure regex patterns are correct:

// Too specific
https://example.com/checkout?step=1

// Better - matches variations
https://example.com/checkout*

3. Review session replays:

Watch sessions that dropped off to understand why:

  • Click on funnel step
  • View sessions that exited at that step

Getting Help

FullStory Support Resources

Documentation:

Contact Support:

What to Include When Reporting Issues

When contacting FullStory support, provide:

  1. Org ID: Found in Settings > General
  2. Session URL: Link to problematic session (if applicable)
  3. Browser & version: Chrome 120, Safari 17, etc.
  4. Steps to reproduce: Detailed steps to recreate issue
  5. Screenshots/videos: Visual evidence of the problem
  6. Console errors: Any JavaScript errors in DevTools
  7. Network logs: Export HAR file if network-related

Generating a HAR File

For network-related issues:

  1. Open DevTools > Network tab
  2. Refresh page
  3. Right-click in Network tab
  4. Select "Save all as HAR with content"
  5. Send HAR file to FullStory support

Next Steps:

Additional Resources:

// SYS.FOOTER