A visitor lands on your site, opens chat, says “hi.” If you know who they are before they introduce themselves, the conversation skips the qualification step. Visitor identification in Freshchat does this through cookies, JavaScript identity calls, and progressive enrichment.
Anonymous to known
Default behavior: every visitor gets a Freshchat visitor ID stored in a first-party cookie. The visitor stays anonymous to your CRM but is tracked across sessions on your site.
To convert anonymous to known, call the JavaScript identity API when you have an authenticated user:
window.fcWidget.user.setProperties({
cuid: 'crm_user_id_12345',
email: '[email protected]',
firstName: 'Jane',
lastName: 'Doe',
externalId: 'crm_user_id_12345'
});
Call this on every page after login. The Freshchat record then links to your CRM contact.
Cookie scope and lifetime
The cookie is first-party, scoped to your domain. Cross-domain (yourco.com and app.yourco.com) requires explicit cross-domain configuration in the chat widget settings.
Cookie lifetime is one year by default. Long enough for repeat visitors, short enough to respect privacy. Visitors clearing cookies appear as new anonymous visitors.
Server-side identification
For sensitive identity data, do not pass full PII through the JavaScript widget. Instead, sign the identity payload server-side using HMAC and pass the signed token. Freshchat verifies the signature and accepts the identity.
This prevents browser-side tampering (“I’ll set my email to the CEO’s”).
Progressive enrichment
Even known visitors lack data. Each conversation can capture more:
- First conversation: name and email (from identity call).
- Second conversation: company (from CRM lookup on email domain).
- Third conversation: role (from data enrichment integration).
Build the enrichment as workflows triggered on conversation start. The agent sees a complete profile before the first message.
Returning visitor recognition
When a known visitor returns, the chat widget pre-loads their profile and conversation history. Past tickets, past conversations, current account status all visible to the agent in the side panel.
Configure the side panel to show: company name, plan tier, open tickets count, last conversation date. These four data points cover 80 percent of agent context needs.
GDPR considerations
Visitor identification creates a personal data record. Disclose in your privacy policy:
- What data is collected (visitor IP, browser, page views).
- What data is shared with Freshworks (identifier, content of conversations).
- How users can request deletion.
For users in restricted regions (EU, California), provide a “do not track” option that disables visitor identification. The chat still works; the data does not link to a profile.
Pre-chat forms
For unknown visitors who want to chat, the pre-chat form captures name, email, question. Make it lightweight (3 fields max). Long forms drop conversion by 40 percent.
Skip the pre-chat form for known visitors. The widget detects identity and goes straight to chat.
Reporting on identification
Track:
- Anonymous to known conversion rate (visitors identified within first 5 conversations).
- Identity coverage on conversations (percent with full profile).
- Enrichment data lag (time from first identification to fully enriched).
Improve targeted enrichment for the dimensions that drive routing decisions.
What to do this week
Audit your chat widget. Confirm authenticated pages call the identity API. Test on a fresh browser session as a logged-in user; the agent should see full identity within seconds.