User Identification
Associate feedback submissions with specific users to track who’s providing feedback.
Why Identify Users?
Identifying users allows you to:
- Follow up - Contact users about their feedback
- Track patterns - See feedback history per user
- Prioritize - Weight feedback from key users
- Context - Understand who’s experiencing issues
Basic Usage
Call identify() after a user logs in:
window.fj.identify({
id: 'user_123',
email: 'john@example.com',
firstName: 'John',
lastName: 'Doe',
avatar: 'https://example.com/avatar.jpg'
});
Parameters
All fields are optional, but more info = better context:
id- Unique user ID from your databaseemail- User’s email addressfirstName- First namelastName- Last nameavatar- URL to profile picture
When to Call Identify
On Login
async function handleLogin(credentials) {
const user = await loginUser(credentials);
// Identify user for FeedbackJar
window.fj.identify({
id: user.id,
email: user.email,
firstName: user.firstName,
lastName: user.lastName,
avatar: user.avatarUrl
});
}
On Page Load (If Already Logged In)
document.addEventListener('DOMContentLoaded', () => {
const user = getCurrentUser(); // Your auth check
if (user) {
window.fj.identify({
id: user.id,
email: user.email,
firstName: user.firstName,
lastName: user.lastName
});
}
});
In React
import { useEffect } from 'react';
import { useAuth } from './hooks/useAuth';
function App() {
const { user } = useAuth();
useEffect(() => {
if (user && window.fj) {
window.fj.identify({
id: user.id,
email: user.email,
firstName: user.firstName,
lastName: user.lastName,
avatar: user.avatar
});
}
}, [user]);
return <div>Your app</div>;
}
In Next.js (App Router)
'use client';
import { useEffect } from 'react';
export function FeedbackJarUser({ user }: { user: User }) {
useEffect(() => {
if (window.fj) {
window.fj.identify({
id: user.id,
email: user.email,
firstName: user.firstName,
lastName: user.lastName
});
}
}, [user]);
return null;
}
Personalized Experience
When a user is identified, the widget shows a personalized greeting:
“Hey John! We’d love to hear your feedback”
Privacy Considerations
What Gets Sent
When identified user submits feedback, we send:
- User data you provided via
identify() - Feedback message
- Metadata (browser, device, page URL)
GDPR Compliance
- Only collect necessary user data
- Include privacy policy link in your widget
- Allow users to opt out of tracking
- Respect user data deletion requests
Best Practices
// ✅ Good: Only necessary fields
window.fj.identify({
id: user.id,
email: user.email
});
// ❌ Avoid: Sensitive data
window.fj.identify({
id: user.id,
email: user.email,
ssn: user.ssn, // Don't send sensitive data!
creditCard: user.card // Never!
});
Anonymous Feedback
Users can still send feedback without being identified. Simply don’t call identify() for anonymous users.
// Check if user is logged in
if (user) {
window.fj.identify({ id: user.id, email: user.email });
}
// If not logged in, widget still works but feedback is anonymous
Clearing User Identity
On logout, destroy the widget to clear identity:
function handleLogout() {
// Your logout logic
logoutUser();
// Clear FeedbackJar identity
window.fj.destroy();
// Reinitialize for anonymous use
window.fj.init('YOUR_WIDGET_ID');
}