Dark mode
Identify visitors from the widget

Identify visitors from the widget

When a visitor identifies themselves in the widget — by chatting with an email, or via the SDK's id() / lead() calls from your app — Helpin creates or matches a CRM contact and links every conversation to it. This page explains how identification flows into CRM.

Why it matters

Identification is the bridge between support conversations and your sales pipeline:

  • Anonymous visitors become known leads with an email you can follow up on.

  • Existing customers' conversations attach to their account history.

  • Sales sees support engagement as buyer signals (for example, pricing questions in a support chat).

How identification happens

There are two paths:

  1. In-chat capture — the visitor types their email into the widget (prompted by identity capture rules or when requesting a human).

  2. SDK identification — your site calls client.id({...}) after login, or client.lead({...}) for a captured lead:

await client.id({
  id: 'user_123',
  email: 'jane@example.com',
  first_name: 'Jane',
  last_name: 'Doe',
  company: {
    id: 'company_123',
    name: 'Acme Inc',
    created_at: '2024-01-15T00:00:00Z',
  },
});

client.lead({
  email: 'lead@example.com',
  first_name: 'New',
  last_name: 'Lead',
  company: { id: 'company_456', name: 'Acme Inc', created_at: '2024-01-15T00:00:00Z' },
});

Common field names (email, first_name, company, phone, role) map automatically to CRM fields. Form capture rules can map custom fields explicitly via fieldMappings.

Contact creation rules

Configured in Settings → Chat Widget → Identity Capture and the CRM integration block:

  • Auto-create CRM contact — when a visitor provides an email and no matching contact exists, Helpin creates one.

  • Default lifecycle stage — the stage assigned to auto-created contacts (Subscriber, Lead, Opportunity).

  • Auto-promote to lead — optionally upgrade contacts from subscriber to lead after their first conversation resolves.

If a contact with that email already exists, the conversation links to the existing record instead of creating a duplicate.

What gets linked

After identification:

  • The conversation links to the contact (visible in the conversation Details panel → CRM).

  • If a company was provided (or the contact's email domain matches a company), the company links as well.

  • The contact's profile shows the conversation history.

Identity trust levels

Identification from your server (an HMAC-signed id() call after login) is treated as verified identity. Email typed into the widget creates an untrusted lead identity — enough to reply and follow up, and upgradeable when the customer logs in and your app identifies them with proof.

Verifying it works

  1. Open a test conversation in the widget and provide an email.

  2. Check the conversation's Details panel → CRM section: the contact should be linked.

  3. Open the CRM contact — the conversation appears in its activity.

  4. In Settings → Chat Widget → Identity Capture, confirm auto-create and lifecycle settings match your process.

Was this article helpful?