Back to skills
SKILL.md
Fullstory Getting Started
ASecurityComprehensive getting started guide for Fullstory Browser API v2 implementation. Provides the complete initialization flow, API overview, decision framework for which APIs to use, industry-specific guidance, privacy best practices, and framework integration patterns. Links to all core, meta, industry, and framework skills.
- 666 stars
- 0 votes
- 0 copies
- 3 views
- Added February 8, 2026
Works with
Security analysis
100/100npx -y skills add majiayu000/claude-skill-registry --skill fullstory-getting-started-rcmaples-btx-2 --agent claude-codeAre you the author of Fullstory Getting Started?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/majiayu000-fullstory-getting-started)---
name: fullstory-getting-started
version: v2
description: Comprehensive getting started guide for Fullstory Browser API v2 implementation. Provides the complete initialization flow, API overview, decision framework for which APIs to use, industry-specific guidance, privacy best practices, and framework integration patterns. Links to all core, meta, industry, and framework skills.
related_skills:
- fullstory-identify-users
- fullstory-user-properties
- fullstory-page-properties
- fullstory-element-properties
- fullstory-analytics-events
- fullstory-privacy-controls
- fullstory-privacy-strategy
- universal-data-scoping-and-decoration
- fullstory-stable-selectors
---
# Fullstory Browser API v2: Getting Started Guide
> **š Version Note**: This guide covers Fullstory Browser API **v2**. Always verify API syntax against the [official documentation](https://developer.fullstory.com/browser/getting-started/) as the API may evolve. Rate limits, parameters, and features are subject to change.
## Overview
This guide provides everything you need to implement Fullstory's Browser API v2 in your web application. It covers:
1. **Initial Setup**: Snippet installation and configuration
2. **API Landscape**: Understanding all available APIs
3. **Implementation Order**: What to implement first
4. **Decision Framework**: Choosing the right API for your data
5. **Privacy Considerations**: What to capture, mask, or exclude
6. **Industry-Specific Guidance**: Best practices for your vertical
7. **Skill Navigation**: Finding the right detailed guide
---
## Complete Skill Inventory
### Core API Skills
| Skill | Purpose | Use When |
| ------------------------------ | --------------------------- | ------------------------- |
| `fullstory-identify-users` | Link sessions to users | Implementing login flow |
| `fullstory-anonymize-users` | End identified sessions | Implementing logout flow |
| `fullstory-user-properties` | Set user attributes | Adding segmentation data |
| `fullstory-page-properties` | Set page context | SPA navigation, page data |
| `fullstory-element-properties` | Capture interaction context | Product grids, lists |
| `fullstory-analytics-events` | Track discrete actions | Conversions, features |
| `fullstory-observe-callbacks` | React to FS lifecycle | Session URL for support |
| `fullstory-logging` | Add logs to session | Error debugging |
| `fullstory-user-consent` | Control capture consent | GDPR/CCPA compliance |
| `fullstory-capture-control` | Pause/resume capture | Sensitive screens |
| `fullstory-async-methods` | Promise-based API calls | Modern async flows |
| `fullstory-privacy-controls` | Mask/exclude elements | PII protection |
### Strategy & Meta Skills
| Skill | Purpose | Use When |
| --------------------------------------- | ---------------------- | ----------------------- |
| `fullstory-privacy-strategy` | Data privacy decisions | Planning implementation |
| `universal-data-scoping-and-decoration` | Where to put data | Deciding scope |
### Industry-Specific Skills
| Skill | Industry | Key Considerations |
| ------------------------------- | -------------------- | -------------------------------- |
| `fullstory-banking` | Banking & Financial | PCI, GLBA, transaction masking |
| `fullstory-ecommerce` | E-commerce & Retail | Conversion funnels, product data |
| `fullstory-gaming` | Gaming | Responsible gaming, KYC |
| `fullstory-healthcare` | Healthcare | HIPAA, PHI exclusion |
| `fullstory-saas` | B2B SaaS | Feature adoption, churn |
| `fullstory-travel` | Travel & Hospitality | Booking funnels, PCI |
| `fullstory-media-entertainment` | Media & Streaming | Engagement, subscriptions |
---
## Industry Comparison at a Glance
Different industries have vastly different requirements for Fullstory implementation. This table summarizes the key differences:
### Privacy Defaults by Industry
| Industry | Default Privacy Mode | Financial Data | User Content | Conversion Tracking | Primary Concern |
| -------------- | -------------------- | --------------------- | -------------- | ------------------- | ----------------------- |
| **Banking** | Exclude | Exclude (ranges only) | Exclude | Limited | Regulatory (PCI, GLBA) |
| **E-commerce** | Unmask | Capture (orders) | Mostly capture | Rich | Conversion optimization |
| **Gaming** | Mixed | Exclude (ranges only) | Exclude | Careful | Responsible gaming |
| **Healthcare** | Exclude | Exclude | Exclude | Very limited | HIPAA compliance |
| **SaaS** | Unmask | Usually OK | Mask/Consider | Rich | Feature adoption |
| **Travel** | Unmask | Capture (bookings) | Mask | Rich | Booking optimization |
| **Media** | Unmask | N/A | Capture | Rich | Engagement metrics |
### What to Capture by Industry
| Data Type | Banking | E-commerce | Gaming | Healthcare | SaaS | Travel | Media |
| --------------------- | --------- | ------------- | --------------- | ---------- | ----------- | ---------- | ------------- |
| User names | ā | ā ļø Mask | ā ļø Mask | ā | ā ļø Mask | ā ļø Mask | ā ļø Mask |
| Email | ā | ā ļø Hash | ā ļø Hash | ā | ā ļø Consider | ā ļø Mask | ā ļø Consider |
| Product/content names | N/A | ā
| ā
Events/games | N/A | ā
Features | ā
| ā
|
| Prices/amounts | ā Ranges | ā
| ā Ranges | ā | ā
| ā
| ā
Sub prices |
| Account balance | ā | N/A | ā | N/A | N/A | N/A | N/A |
| Transaction details | ā | ā
Order data | ā | ā | ā
Usage | ā
Booking | ā
Viewing |
| Search queries | ā ļø | ā
| ā ļø | ā | ā
| ā
| ā
|
| Payment cards | ā | ā | ā | ā | ā | ā | ā |
| Government IDs | ā | ā | ā | ā | ā | ā | ā |
**Legend**: ā
= Capture, ā ļø = Consider/Mask, ā = Exclude
### Key Regulatory Requirements
| Industry | Primary Regulations | Fullstory Requirements |
| -------------- | ------------------------ | ---------------------------------------------------- |
| **Banking** | PCI DSS, GLBA, SOX | BAA not typically needed; exclude all financial data |
| **E-commerce** | PCI DSS, CCPA, GDPR | Exclude payment fields; consent for EU |
| **Gaming** | Gaming licenses, AML/KYC | Never analyze gaming patterns; exclude amounts |
| **Healthcare** | HIPAA, HITECH | BAA required; exclude ALL PHI; masking insufficient |
| **SaaS** | SOC 2, GDPR | Enterprise privacy options; consent for EU |
| **Travel** | PCI DSS, GDPR | Exclude passport/ID numbers; payment exclusion |
| **Media** | COPPA, GDPR | Never track children's profiles; consent |
---
## I. The Fullstory API Ecosystem
### Complete API Reference
| API | Method | Purpose | Skill Document |
| ---------------------- | -------------------------------------------- | --------------------------- | ------------------------------ |
| **Identity** | `FS('setIdentity', { uid, properties })` | Identify known users | `fullstory-identify-users` |
| **Anonymize** | `FS('setIdentity', { anonymous: true })` | End identified session | `fullstory-anonymize-users` |
| **User Properties** | `FS('setProperties', { type: 'user', ... })` | Update user attributes | `fullstory-user-properties` |
| **Page Properties** | `FS('setProperties', { type: 'page', ... })` | Set page context | `fullstory-page-properties` |
| **Element Properties** | `data-fs-*` attributes | Capture interaction context | `fullstory-element-properties` |
| **Events** | `FS('trackEvent', { name, properties })` | Track discrete actions | `fullstory-analytics-events` |
| **Observers** | `FS('observe', { type, callback })` | React to FS lifecycle | `fullstory-observe-callbacks` |
| **Logging** | `FS('log', { level, msg })` | Add logs to session | `fullstory-logging` |
| **Consent** | `FS('setIdentity', { consent: bool })` | Control capture consent | `fullstory-user-consent` |
| **Capture Control** | `FS('shutdown')` / `FS('restart')` | Pause/resume capture | `fullstory-capture-control` |
| **Async Methods** | `FS('*Async')` variants | Promise-based API calls | `fullstory-async-methods` |
### API Categories
```
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā FULLSTORY BROWSER API v2 ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā IDENTITY & USER ā
ā āāā setIdentity (uid) - Identify users ā
ā āāā setIdentity (anonymous) - Anonymize users ā
ā āāā setIdentity (consent) - Manage consent ā
ā āāā setProperties (user) - Update user attributes ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā CONTEXT & PROPERTIES ā
ā āāā setProperties (page) - Page-level context ā
ā āāā Element Properties - Interaction-level context ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā EVENTS & ACTIONS ā
ā āāā trackEvent - Discrete business events ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā PRIVACY & CONTROL ā
ā āāā fs-exclude / fs-mask - Element privacy classes ā
ā āāā shutdown / restart - Capture control ā
ā āāā consent - User consent management ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā LIFECYCLE & UTILITIES ā
ā āāā observe - Lifecycle callbacks ā
ā āāā log - Session logging ā
ā āāā getSession - Get session URL ā
ā āāā *Async variants - Promise-based methods ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
```
---
## II. Snippet Installation
### Basic Snippet (v2)
Add this snippet to your HTML `<head>`:
```html
<script>
window['_fs_host'] = 'fullstory.com'
window['_fs_script'] = 'edge.fullstory.com/s/fs.js'
window['_fs_org'] = 'YOUR_ORG_ID'
window['_fs_namespace'] = 'FS'
;(function (m, n, e, t, l, o, g, y) {
if (e in m) {
if (m.console && m.console.log) {
m.console.log('Fullstory namespace conflict. Please set window["_fs_namespace"].')
}
return
}
g = m[e] = function (a, b, s) {
g.q ? g.q.push([a, b, s]) : g._api(a, b, s)
}
g.q = []
o = n.createElement(t)
o.async = 1
o.crossOrigin = 'anonymous'
o.src = 'https://' + _fs_script
y = n.getElementsByTagName(t)[0]
y.parentNode.insertBefore(o, y)
g.identify = function (i, v, s) {
g(l, {uid: i}, s)
if (v) g(l, v, s)
}
g.setUserVars = function (v, s) {
g(l, v, s)
}
g.event = function (i, v, s) {
g('event', {n: i, p: v}, s)
}
g.anonymize = function () {
g.identify(!!0)
}
g.shutdown = function () {
g('rec', !1)
}
g.restart = function () {
g('rec', !0)
}
g.log = function (a, b) {
g('log', [a, b])
}
g.consent = function (a) {
g('consent', !arguments.length || a)
}
g.identifyAccount = function (i, v) {
o = 'account'
v = v || {}
v.acctId = i
g(o, v)
}
g.clearUserCookie = function () {}
g.setVars = function (n, p) {
g('setVars', [n, p])
}
g._w = {}
y = 'XMLHttpRequest'
g._w[y] = m[y]
y = 'fetch'
g._w[y] = m[y]
if (m[y])
m[y] = function () {
return g._w[y].apply(this, arguments)
}
g._v = '2.0.0'
})(window, document, window['_fs_namespace'], 'script', 'identify')
</script>
```
### Configuration Options
| Option | Description | Default |
| ------------------------ | ------------------------------ | ------------------------------ |
| `_fs_org` | Your Fullstory organization ID | **Required** |
| `_fs_namespace` | Global variable name | `'FS'` |
| `_fs_capture_on_startup` | Start capturing immediately | `true` |
| `_fs_host` | Fullstory host | `'fullstory.com'` |
| `_fs_script` | Script location | `'edge.fullstory.com/s/fs.js'` |
### How Fullstory Tracks Users (First-Party Cookies)
Fullstory uses **first-party cookies** set on YOUR domain to track users:
| Cookie | Duration | Purpose |
| -------- | -------- | -------------------------------------------------- |
| `fs_uid` | 1 year | Tracks user across sessions (the "capture cookie") |
| `fs_cid` | 1 year | Stores consent state for the device |
| `fs_lua` | 30 min | Last user action timestamp (session lifecycle) |
**Why First-Party Cookies Matter:**
| Aspect | First-Party (Fullstory) | Third-Party Cookies |
| ------------------- | ---------------------------------------- | ----------------------- |
| Domain | Set on YOUR domain | Set on external domain |
| Browser blocking | ā
Not blocked by browsers/ad-blockers | ā Often blocked |
| Cross-site tracking | ā Cannot track across different sites | ā
Can track across web |
| Privacy | ā
Your data stays isolated to your site | ā Data aggregated |
**Key Behaviors:**
- **Anonymous users persist**: Same `fs_uid` cookie = same user across sessions (until cookie expires/deleted)
- **Session merging**: When `setIdentity` is called, ALL previous anonymous sessions from that cookie merge into the identified user
- **Anonymization resets**: `setIdentity({ anonymous: true })` generates a NEW `fs_uid` cookie, breaking the link to previous sessions
> **Reference**: [Why Fullstory uses First-Party Cookies](https://help.fullstory.com/hc/en-us/articles/360020829513-Why-Fullstory-uses-First-Party-Cookies)
### Private by Default Mode (Recommended for Sensitive Industries)
Fullstory offers a **Private by Default** capture mode that inverts the default behavior:
| Mode | Default Behavior | Your Action |
| ---------------------- | --------------------------------------- | ---------------------------------------------------------- |
| **Standard** | Everything captured (unmask is default) | Add `fs-mask` / `fs-exclude` to protect sensitive elements |
| **Private by Default** | Everything masked | Add `fs-unmask` to reveal safe content |
**When to Use Private by Default:**
- ā
Banking / Financial services
- ā
Healthcare / HIPAA-regulated
- ā
Enterprise SaaS with customer data
- ā
Any app where "default open" is too risky
**Enable via:**
- **New accounts**: Select during onboarding wizard
- **Existing accounts**: Contact [Fullstory Support](https://help.fullstory.com/hc/en-us/requests/new)
> **Reference**: [Fullstory Private by Default](https://help.fullstory.com/hc/en-us/articles/360044349073-Fullstory-Private-by-Default)
### Consent-Required Configuration (GDPR)
For GDPR compliance, don't capture until consent is given:
```html
<script>
window['_fs_capture_on_startup'] = false // Don't capture until consent
window['_fs_org'] = 'YOUR_ORG_ID'
// ... rest of snippet
</script>
```
Then call when consent is granted:
```javascript
FS('setIdentity', {consent: true})
```
---
## III. Implementation Order
### Recommended Implementation Sequence
```
Phase 1: Foundation
āāā 1. Install snippet
āāā 2. Implement privacy controls (fs-exclude, fs-mask)
āāā 3. Implement user identification (login flow)
āāā 4. Implement anonymization (logout flow)
āāā 5. Set up basic page properties (pageName)
Phase 2: Context
āāā 6. Add user properties (plan, role, company)
āāā 7. Enhance page properties (search terms, filters)
āāā 8. Add element properties (product IDs, positions)
Phase 3: Events
āāā 9. Implement key business events
āāā 10. Add funnel tracking
āāā 11. Add feature usage tracking
Phase 4: Advanced
āāā 12. Set up observers for session URL
āāā 13. Implement consent flows (if GDPR required)
āāā 14. Add error logging
āāā 15. Implement capture control (if needed)
```
### Minimum Viable Implementation
For a basic integration, implement these APIs:
```javascript
// 1. Identify users on login
FS('setIdentity', {
uid: user.id,
properties: {
displayName: user.name,
email: user.email,
},
})
// 2. Set page context
FS('setProperties', {
type: 'page',
properties: {
pageName: 'Dashboard',
},
})
// 3. Track key events
FS('trackEvent', {
name: 'Feature Used',
properties: {
featureName: 'export',
},
})
// 4. Anonymize on logout
FS('setIdentity', {anonymous: true})
```
---
## IV. Privacy First: Three Privacy Modes
Before capturing any data, understand the three privacy modes:
### Privacy Mode Comparison
| Mode | CSS Class | What Leaves Device | Events Captured | Use For |
| ----------- | ------------- | ------------------ | --------------- | --------------------------------- |
| **Exclude** | `.fs-exclude` | ā Nothing | ā No | Passwords, SSN, PHI, card numbers |
| **Mask** | `.fs-mask` | ā ļø Structure only | ā
Yes | Names, emails, addresses |
| **Unmask** | `.fs-unmask` | ā
Everything | ā
Yes | Public content, products |
### Quick Privacy Decision
```
Is this data regulated (HIPAA, PCI, GLBA)?
ā
YES ā fs-exclude (nothing leaves device)
ā
NO
ā
ā¼
Is this PII (name, email, address)?
ā
YES ā fs-mask (structure captured, text replaced)
ā
NO
ā
ā¼
Is this public/business data?
ā
YES ā fs-unmask or default (everything captured)
```
### Privacy by Industry Quick Reference
| Industry | Default Recommendation |
| ---------- | ----------------------------------------------------- |
| Healthcare | Use Private by Default mode; explicit unmask only |
| Banking | Exclude financial data; mask PII |
| Gaming | Exclude amounts; mask user info |
| E-commerce | Unmask products; mask checkout PII; exclude payment |
| SaaS | Unmask features; mask user content |
| Travel | Unmask search/booking; mask traveler PII; exclude IDs |
| Media | Unmask content; mask profiles |
---
## V. Quick Decision Guide
### "Where should I put this data?"
```
Is this data about WHO the user is?
(plan, role, company, signup date)
ā
YES ā User Properties (setIdentity or setProperties type: 'user')
ā
NO
ā
ā¼
Is this data the same for the entire page?
(search term, product ID on detail page, filters)
ā
YES ā Page Properties (setProperties type: 'page')
ā
NO
ā
ā¼
Is this data specific to one element among many?
(product ID in a grid, position in list)
ā
YES ā Element Properties (data-fs-* attributes)
ā
NO
ā
ā¼
Is this a discrete action/event?
(purchase, signup, feature used)
ā
YES ā Event (trackEvent)
```
### Quick Reference Table
| I want to... | Use this API | Skill |
| ----------------------- | ------------------------- | ------------------------------ |
| Link sessions to a user | `setIdentity` | `fullstory-identify-users` |
| Add user attributes | `setProperties(user)` | `fullstory-user-properties` |
| Set page context | `setProperties(page)` | `fullstory-page-properties` |
| Track what was clicked | Element Properties | `fullstory-element-properties` |
| Track a conversion | `trackEvent` | `fullstory-analytics-events` |
| Handle logout | `setIdentity(anonymous)` | `fullstory-anonymize-users` |
| Get session URL | `observe` or `getSession` | `fullstory-observe-callbacks` |
| Implement GDPR consent | `setIdentity(consent)` | `fullstory-user-consent` |
| Pause recording | `shutdown`/`restart` | `fullstory-capture-control` |
| Log errors to session | `log` | `fullstory-logging` |
| Protect sensitive data | CSS classes | `fullstory-privacy-controls` |
---
## VI. Industry-Specific Quick Start
### Banking/Financial Services
```javascript
// Use internal customer ID, never SSN or account numbers
FS('setIdentity', {uid: customer.customerId})
// Exclude all financial data, use ranges if needed
// Add fs-exclude to: balances, transactions, account numbers
FS('trackEvent', {
name: 'transfer_completed',
properties: {
transfer_type: 'internal',
amount_range: '$100-$500', // Never exact amount
},
})
```
**ā See `fullstory-banking` for complete guide**
### E-commerce
```javascript
// Rich product tracking is valuable
FS('setProperties', {
type: 'page',
properties: {
pageName: 'Product Detail',
productId: product.id,
productName: product.name,
price: product.price, // Prices are fine in e-commerce
},
})
// Track conversions with full details
FS('trackEvent', {
name: 'purchase_completed',
properties: {
order_id: order.id,
revenue: order.total,
item_count: order.items.length,
},
})
```
**ā See `fullstory-ecommerce` for complete guide**
### Healthcare
```javascript
// Extremely limited capture - use anonymous sessions if possible
FS('setIdentity', {uid: generateSessionId()}) // No linking to patient
// Exclude EVERYTHING medical - masking is NOT sufficient
// Use Private by Default mode
// Only track: navigation, errors, page load times
```
**ā See `fullstory-healthcare` for complete guide**
### SaaS
```javascript
// Rich user identification for feature adoption
FS('setIdentity', {
uid: user.id,
properties: {
displayName: user.firstName,
plan: organization.plan,
role: user.role,
org_id: organization.id,
},
})
// Track feature usage comprehensively
FS('trackEvent', {
name: 'feature_first_use',
properties: {
feature_name: 'report_builder',
days_since_signup: user.daysSinceSignup,
},
})
```
**ā See `fullstory-saas` for complete guide**
---
## VII. Common Integration Patterns
### Pattern 1: React Integration
```jsx
// hooks/useFullstory.js
import {useEffect} from 'react'
import {useAuth} from './useAuth'
import {useLocation} from 'react-router-dom'
export function useFullstory() {
const {user, isAuthenticated} = useAuth()
const location = useLocation()
// Handle user identification
useEffect(() => {
if (isAuthenticated && user) {
FS('setIdentity', {
uid: user.id,
properties: {
displayName: user.name,
email: user.email,
plan: user.plan,
},
})
}
}, [user, isAuthenticated])
// Handle page changes
useEffect(() => {
const pageName = getPageName(location.pathname)
FS('setProperties', {
type: 'page',
properties: {pageName},
})
}, [location])
// Return helper functions
return {
trackEvent: (name, properties) => {
FS('trackEvent', {name, properties})
},
setUserProperty: (properties) => {
FS('setProperties', {type: 'user', properties})
},
}
}
```
### Pattern 2: Privacy-First Component Wrapper
```jsx
// components/PrivacyWrapper.js
export function SensitiveData({ children, level = 'mask' }) {
const className = level === 'exclude' ? 'fs-exclude' : 'fs-mask';
return <div className={className}>{children}</div>;
}
export function PublicData({ children }) {
return <div className="fs-unmask">{children}</div>;
}
// Usage
<SensitiveData level="exclude">
<CreditCardForm />
</SensitiveData>
<SensitiveData>
<UserProfile /> {/* Masked by default */}
</SensitiveData>
<PublicData>
<ProductGrid /> {/* Visible */}
</PublicData>
```
---
## VIII. Testing Your Integration
### 1. Verify Snippet Installation
Open browser console and check:
```javascript
typeof FS !== 'undefined' // Should be true
FS('getSession') // Should return session URL
```
### 2. Check Privacy Controls
In browser DevTools:
- Verify `.fs-exclude` classes on sensitive elements
- Verify `.fs-mask` classes on PII fields
- Watch a session replay and confirm masked/excluded content
### 3. Check User Identification
After login, verify in Fullstory:
- Session shows user's displayName
- User can be found by search
- User properties appear in session details
### 4. Validate Events
After triggering events:
- Check Events panel in Fullstory session
- Verify event properties are captured correctly
- Test event-based searches work
---
## IX. Troubleshooting
### Fullstory Not Loading
```javascript
if (typeof FS === 'undefined') {
console.error('Fullstory not loaded - check snippet installation')
}
```
**Common causes:**
- Snippet not in `<head>`
- Wrong org ID
- Ad blocker blocking script
- Content Security Policy blocking
### User Not Identified
```javascript
console.log('Identifying user:', user.id)
FS('setIdentity', {uid: user.id})
```
**Common causes:**
- uid is undefined or null
- setIdentity called before FS loads
- Identity called with wrong syntax
### Privacy Not Working
**Common causes:**
- CSS class not on element (check DevTools)
- Child element needs its own class
- Conflicting CSS selector rules in Settings
---
## X. Related Skills Reference
### Core Data Capture
| Skill | Use For |
| ------------------------------ | -------------------------------- |
| `fullstory-identify-users` | User identification and login |
| `fullstory-anonymize-users` | Logout and user switching |
| `fullstory-user-properties` | User attributes and segmentation |
| `fullstory-page-properties` | Page context and Journeys |
| `fullstory-element-properties` | Interaction-level data |
| `fullstory-analytics-events` | Business events and funnels |
### Privacy & Control
| Skill | Use For |
| ---------------------------- | ----------------------------- |
| `fullstory-privacy-controls` | Element masking and exclusion |
| `fullstory-privacy-strategy` | Data privacy decisions |
| `fullstory-user-consent` | GDPR/CCPA compliance |
| `fullstory-capture-control` | Pause/resume recording |
### Lifecycle & Utilities
| Skill | Use For |
| ----------------------------- | -------------------------------- |
| `fullstory-async-methods` | Promise-based API calls |
| `fullstory-observe-callbacks` | Session URL and lifecycle events |
| `fullstory-logging` | Error and debug logging |
### Industry-Specific
| Skill | Use For |
| ------------------------------- | --------------------------------- |
| `fullstory-banking` | Financial services implementation |
| `fullstory-ecommerce` | E-commerce/retail implementation |
| `fullstory-gaming` | Gaming/gaming implementation |
| `fullstory-healthcare` | Healthcare/HIPAA implementation |
| `fullstory-saas` | B2B SaaS implementation |
| `fullstory-travel` | Travel/hospitality implementation |
| `fullstory-media-entertainment` | Media/streaming implementation |
### Strategy
| Skill | Use For |
| --------------------------------------- | -------------------------- |
| `universal-data-scoping-and-decoration` | Deciding where to put data |
### Framework Integration
| Skill | Use For |
| ---------------------------- | ------------------------------------------------------------------------ |
| `fullstory-stable-selectors` | Stable `data-*` attributes for any framework (React, Angular, Vue, etc.) |
---
## Key Takeaways for Agent
When helping developers get started with Fullstory:
1. **Privacy first**:
- Ask what industry/regulations apply
- Point to appropriate industry skill
- Default to more restrictive privacy in regulated industries
2. **Implementation order matters**:
- Start with privacy controls
- Then identification (login/logout)
- Add page properties (pageName is crucial for Journeys)
- Then events and element properties
3. **Minimum viable integration**:
- Privacy classes on sensitive elements
- setIdentity on login
- setIdentity anonymous on logout
- setProperties(page) with pageName
- A few key trackEvent calls
4. **Industry matters**:
- Healthcare: Default exclude, BAA required
- Banking: Exclude financial data, use ranges
- E-commerce: Can capture most product data
- SaaS: Rich feature tracking is valuable
5. **Common first questions**:
- "How do I link sessions to users?" ā `fullstory-identify-users`
- "Where should I put this data?" ā `universal-data-scoping-and-decoration`
- "How do I track conversions?" ā `fullstory-analytics-events`
- "What should I mask vs exclude?" ā `fullstory-privacy-controls`
6. **Point to specific skills** for detailed implementation guidance
---
## Reference Links
- **Getting Started**: https://developer.fullstory.com/browser/getting-started/
- **Privacy Controls**: https://help.fullstory.com/hc/en-us/articles/360020623574
- **Custom Properties**: https://developer.fullstory.com/browser/custom-properties/
- **Help Center**: https://help.fullstory.com/
---
_This getting started guide provides the foundation for implementing Fullstory Browser API v2. For detailed implementation guidance on any specific API or industry, refer to the linked skill documents._
Attribution
Comments
Loading commentsā¦
Newsletter
Get the weekly list of safe new skills, and the ones we pulled.