Trodo automatically assigns anonymous IDs to track users. When you know who a user is (for example after login or signup), use identify() to link their anonymous activity to their known identity.
Trodo’s CQ Intelligence merge engine automatically consolidates user profiles across sessions and devices when you call identify().
async function handleLogin(email, password) { const user = await login(email, password); // Identify after successful login Trodo.identify(user.id); // Optionally set user properties Trodo.people.set({ email: user.email, plan: user.subscription, signupDate: user.createdAt });}
2
After Signup
When a new user creates an account:
async function handleSignup(userData) { const newUser = await createUser(userData); // Identify the new user Trodo.identify(newUser.id); // Track signup event Trodo.track('Signup Completed', { source: userData.referralSource }); // Set initial user properties Trodo.people.set({ email: newUser.email, signupDate: new Date().toISOString() });}
3
On Page Load (Returning Users)
When a logged-in user returns:
// On app initializationasync function initApp() { await Trodo.init({ siteId: 'your-site-id' }); // If user is already logged in const currentUser = getCurrentUser(); if (currentUser) { Trodo.identify(currentUser.id); }}
Trodo can merge user profiles across domains when you use the same identifyId:
// On app.example.comTrodo.identify('user_12345');// On dashboard.example.com (same user)Trodo.identify('user_12345');// Trodo merges all sessions for user_12345 automatically
function handleLogout() { // Clear user session in your app logout(); // Reset Trodo identity Trodo.reset(); // Future events will use a new anonymous ID}
Always call reset() when a user logs out. Without this, the next user on the same device could be associated with the previous user’s data.
New User: If the identifyId hasn’t been seen before, the current anonymous profile is converted to an identified profile.
Existing User, Same Device: If the identifyId matches a profile already on this device, sessions merge seamlessly.
Existing User, New Device: If the identifyId exists from another device, Trodo’s CQ Intelligence merges the profiles automatically.
Group memberships: When the server returns group_memberships for this user, the SDK restores them locally so group assignments stay in sync across devices.
// Good - Stable, unique identifiersTrodo.identify(user.databaseId); // e.g. '12345'Trodo.identify(user.uuid); // e.g. 'a1b2c3d4-e5f6-...'// Avoid - IDs that might changeTrodo.identify(user.username); // User might change thisTrodo.identify(user.displayName); // Not unique
// Bad - Calling identify too frequentlyfunction onClick() { Trodo.identify(userId); // Don't identify on every action Trodo.track('Button Clicked');}// Good - Identify once per sessionasync function initApp() { await Trodo.init({ siteId: 'your-site-id' }); if (currentUser) { Trodo.identify(currentUser.id); }}