Leads — Overview
Audience: Sales · Support · Management · QA · Engineering · Where in app: Leads (/leads), Dashboard, Chats, Calls · Plan availability: All plans (B2B enrichment sources are gated — see Lead Intelligence)
A lead is a visitor whose contact info has been captured, who's engaged enough to score, or who's identified through the identity graph. Leads are captured automatically as visitors interact with the widget — no manual entry, no landing pages required. This page is the map of where leads come from, how they're categorized, what's on a lead's detail page, and how a raw anonymous visit becomes a verified, CRM-synced person.
What it does
- Surfaces every potential customer Knock Knock has identified, grouped by how they were captured.
- Captures contact info automatically from chats, calls, forms, bookings, CRM landings, and B2B enrichment.
- Gives each lead a single detail page combining identity, score, sessions, conversations, bookings, CRM state, and extracted facts.
- Tracks conversions and fires hot-lead notifications when a visitor crosses the score threshold.
How it works
Lead sources
| Source | How |
|---|---|
| Live chat | Captured during a human chat (contact questions, AI extraction, or transfer-to-agent) |
| AI chat | The AI agent extracts name/email/phone naturally during conversation |
| Audio/video call | Pre-call info form, or captured during the call |
| AI voice call | The AI extracts contact info → saved to PersonProfile |
| Form intercept | A first-party form submitted on the site — direct verification + identity capture |
| Booking | The booking flow always captures email + name (see Booking Sources) |
| CRM landing | Visitor arrives with ?contact_id= (GHL) or a hubspotutk cookie → auto-linked to the CRM contact |
| B2B enrichment | HappierLeads, RB2B, Snitcher, Clearbit turn anonymous traffic into an identified company |
Dashboard categories
- AI Chat Leads — captured via the AI chat agent
- AI Call Leads — captured via the AI voice agent
- Live Chat Leads — captured by a human agent in chat
- Live Call Leads — captured by a human on a call
- B2B Leads — anonymous visits enriched to a company (no human contact info)
(The customer-facing dashboard groups the primary tabs as AI Chat Leads, AI Call Leads, and Lead Points — behavioral high-intent visitors. B2B/live-captured leads roll into those plus the dedicated B2B view.)
Lead detail page
For each lead: identity (name, email, phone, company); lead score with signal breakdown; all sessions (chronological); all conversations (chats + calls with transcripts); all bookings; CRM state (if connected); extracted facts; form submissions; and an audit log (who/when verified, what changed).
Contact information capture
Configured via companies.contact_information_questions:
name: { enabled: bool, question_text: string }
email: { enabled: bool, question_text: string }
phone: { enabled: bool, question_text: string }
take_phone_number_before_call: true makes phone mandatory before a call can start. For AI conversations there's no hard form — the fact-extraction service pulls contact info from the transcript as the AI naturally asks "what's your name?" / "how can we reach you?".
Lead lifecycle
Anonymous visit → engagement signals → score climbs
↓ contact captured
Identified visitor → PersonProfile created
↓ verified (form / device / CRM landing)
Verified Person → AI sees cross-session context next visit
↓ booked / converted
Conversion event → CRM sync if connected
Identity resolution (anonymous → Person → verified Person) is handled by the identity graph via VisitorIdentityService, PersonResolverService, and IdentityGraphService.
Configuration & options
| Setting | Where | Effect |
|---|---|---|
companies.contact_information_questions | Company config | Toggle + custom prompt for name/email/phone capture |
take_phone_number_before_call | Company config | Force phone capture before a call |
| Conversion definition | Company config | What counts as a conversion (booking / email / phone / hot-threshold cross) (verify exact config key) |
| Hot-lead notification channels | Notifications settings | In-app, Slack, email, FCM push, webhook |
| B2B enrichment toggles + budget | Integrations | See Lead Intelligence |
| Date filter (24h / 7d / custom) | Leads UI | Scope the list to a time window |
Conversions are configurable but typically: a booking made, email captured, phone captured, or lead score crossing the hot threshold. Tracked in the dashboard Conversions widget with per-source breakdown.
Behaviors & edge cases
- Anonymous visitors can be leads — strong behavioral signals (Lead Points) flag a visitor before any contact info is shared. Their score migrates to a
PersonProfileonce identified. - B2B leads have no human contact — they identify the company/network, not a specific person. Don't treat reverse-IP as a verified individual. See Lead Intelligence.
- Same person, many sources — a visitor who chats, then books, then returns is unified onto one Person via the identity graph; the detail page merges all sources.
- CRM landing auto-link depends on the visitor arriving with
?contact_id=or ahubspotutkcookie — direct/organic visitors won't auto-link until they identify themselves. - Leads go cold fast — responding within minutes materially raises conversion; the hot-lead notification fan-out exists for exactly this.
Plan & limits
- Core lead capture (chat/call/form/booking/CRM-landing) is available on all plans.
- B2B enrichment sources (HappierLeads, RB2B, Snitcher, Clearbit) are admin-gated and consume a separate query budget — see Lead Intelligence › Plan & limits.
- CRM sync of leads requires a connected CRM (GHL / HubSpot) — see CRM Integration.
Technical implementation
- Services:
backend—FormSubmissionService(form capture),FactExtractionClientService(transcript → contact facts),VisitorIdentityService/PersonResolverService/IdentityGraphService(identity), enrichment services (HappierLeadsService,Rb2bService, etc.), notification services (SlackService,FcmService,EmailQueueService),KnoxAutoEngageService(return-visit engagement). - Models:
UserSessionModel(raw session +lead_score),PersonModel(resolved identity),PersonProfileModel(enriched: name/email/company/B2B data +bookings[]). - Nox tools:
knox-aggregate(metric=hot_leads | missed_bookings | …),knox-stats,knox-person-lookup,knox-extracted-facts. - Subsystems: Identity Graph, CRM Integration.
Related
- Lead Scoring — how the score and hot threshold work
- Lead Intelligence — B2B reverse-IP enrichment
- Booking Sources — bookings as a lead source
- Live Sessions · Recorded Sessions
- Identity Graph · CRM Integration