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
- Open DevTools > Network tab
- Filter by
fullstory - Look for requests to
edge.fullstory.com/s/fs.js - Verify status code is
200 OK
4. Review Console Errors
Check for errors related to FullStory:
- Open DevTools > Console tab
- Look for errors containing "FullStory", "FS", or "fullstory.com"
- Note any CSP (Content Security Policy) errors
5. Verify FullStory Dashboard Status
- Log in to FullStory
- Go to Settings > Data
- Check if sessions are being recorded
- Review "Last session received" timestamp
Installation Issues
FullStory Script Not Loading
Symptoms:
typeof FSreturnsundefined- 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 FSreturns"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:
Delete the session:
- Find session in FullStory
- Click "More" > "Delete Session"
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:
- Email: support@fullstory.com
- In-app chat: Click "?" icon in FullStory dashboard
- Community: FullStory Community Forum
What to Include When Reporting Issues
When contacting FullStory support, provide:
- Org ID: Found in Settings > General
- Session URL: Link to problematic session (if applicable)
- Browser & version: Chrome 120, Safari 17, etc.
- Steps to reproduce: Detailed steps to recreate issue
- Screenshots/videos: Visual evidence of the problem
- Console errors: Any JavaScript errors in DevTools
- Network logs: Export HAR file if network-related
Generating a HAR File
For network-related issues:
- Open DevTools > Network tab
- Refresh page
- Right-click in Network tab
- Select "Save all as HAR with content"
- Send HAR file to FullStory support
Next Steps:
- Setup & Implementation - Properly install FullStory
- Event Tracking - Implement custom events correctly
- Integrations - Configure integrations properly
Additional Resources: