Skip to main content

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

SourceHow
Live chatCaptured during a human chat (contact questions, AI extraction, or transfer-to-agent)
AI chatThe AI agent extracts name/email/phone naturally during conversation
Audio/video callPre-call info form, or captured during the call
AI voice callThe AI extracts contact info → saved to PersonProfile
Form interceptA first-party form submitted on the site — direct verification + identity capture
BookingThe booking flow always captures email + name (see Booking Sources)
CRM landingVisitor arrives with ?contact_id= (GHL) or a hubspotutk cookie → auto-linked to the CRM contact
B2B enrichmentHappierLeads, 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

SettingWhereEffect
companies.contact_information_questionsCompany configToggle + custom prompt for name/email/phone capture
take_phone_number_before_callCompany configForce phone capture before a call
Conversion definitionCompany configWhat counts as a conversion (booking / email / phone / hot-threshold cross) (verify exact config key)
Hot-lead notification channelsNotifications settingsIn-app, Slack, email, FCM push, webhook
B2B enrichment toggles + budgetIntegrationsSee Lead Intelligence
Date filter (24h / 7d / custom)Leads UIScope 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 PersonProfile once 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 a hubspotutk cookie — 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: backendFormSubmissionService (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.