Tools

AI Chat

An AI-powered chat widget that answers visitor questions using your content, captures leads naturally, and works out of the box.


How it works#

The chat widget appears as a floating bubble in the corner of your page. When a visitor clicks it, a full chat window opens with an AI assistant that knows about your product.

  1. Enable chat in your project settings
  2. Add content to the knowledge base (scan your website or add manually)
  3. The AI assistant is ready to answer questions from your visitors
  4. Conversations and captured leads appear in your dashboard

Chat bubble#

The chat bubble renders automatically when chat is enabled. No HTML widget needed.

Property Type Description
position stringCorner placement of the chat bubble (default: "bottom-right")
accentColor stringBubble and header color (default: "#22c55e")
welcomeMessage stringFirst message shown when chat opens (default: "Hi! How can I help you today?")
quickActions string[]Suggestion chips shown below the welcome message (max 4)
attentionGrabber booleanShow an animated badge on the bubble (default: false)

Knowledge base#

The AI assistant’s knowledge comes from your knowledge base. There are two ways to populate it:

Website scan#

The primary way to add knowledge. OperatorStack crawls your website (up to 20 pages) and extracts headings, paragraphs, FAQs, pricing, and features.

  • Enter your website URL and click “Scan”
  • Preview extracted content before saving
  • Auto-generates a system prompt from your content
  • Re-scan anytime to update knowledge

Manual entries#

Add knowledge directly for information not on your website:

  • FAQ entries — question + answer pairs
  • Text content — free-text or markdown
  • Bulk upload — paste large content, auto-chunked for the AI

AI assistant configuration#

Property Type Description
assistantName stringDisplay name for the AI assistant (default: Project name + " Assistant")
personality stringTone: "professional", "friendly", "technical", or "casual" (default: "professional")
systemPrompt stringCustom system prompt (auto-generated from knowledge base if not set)
tools string[]Enabled AI tools: "save_contact", "waitlist_signup"

Lead capture#

The AI assistant can naturally capture visitor contact information during conversation. This works through AI tool-calling — when the assistant identifies an opportunity, it invokes the save_contact tool to save the email and name, or the waitlist_signup tool to sign them up directly.

Conversational, not intrusive

Lead capture happens naturally within conversation flow. The AI might ask for an email to “send more information” or “set up a demo.” It’s not a pop-up form.

Conversation lifecycle#

  • Conversations persist in sessionStorage for the visit
  • The AI generates a one-sentence summary after the 3rd visitor message
  • Summaries update every 5 additional messages
  • Final summary generated on conversation close
  • Conversations appear in your dashboard with summaries and lead info
  • Each visitor gets a deterministic display name (e.g., “Curious Falcon”) for easy identification

Live chat#

Take over any AI conversation and talk to visitors directly. Live chat gives you real-time, human-to-human conversations alongside the AI assistant.

  • Take over conversations — click to take any active AI conversation. The visitor sees a mode indicator showing they’re now chatting with a human
  • Release back to AI — hand the conversation back to the AI assistant when you’re done, with an optional closing message
  • Typing indicators — visitors see when you’re typing, and you see when they’re typing
  • Canned responses — save and reuse common replies for faster responses
  • Sound notifications — get alerted when new messages arrive
  • Auto-release — if you stop responding, the conversation automatically returns to AI after a configurable timeout (default 20 seconds, extends to 2 minutes after your first reply)

Proactive engagement#

Engage visitors before they ask. There are two ways to trigger proactive chat:

Automatic (timer-based)#

Configure the chat to proactively engage visitors after a delay:

Property Type Description
proactiveDelay numberSeconds before proactive message appears (0 = disabled) (default: 0)
proactiveMessage stringThe message to send proactively (default: "Need help with anything?")
proactiveType string"badge" (speech bubble on button) or "chat" (opens the chat window) (default: "badge")

Manual (founder-initiated)#

From the live chat dashboard, see online visitors and their current page. Click to start a conversation with any visitor — the chat window opens on their screen with your message.

Online visitors#

The live chat dashboard shows currently online visitors in real time:

  • Current page URL the visitor is on
  • How long they’ve been on site
  • Their browsing history (linked via analytics visitor ID)
  • Linked contact record (if they’ve previously submitted a form or signed up)

Chat analytics#

The chat dashboard includes analytics with timezone-aware date ranges:

  • Total conversations and messages
  • Leads captured count
  • Mode distribution (AI vs live)
  • Trends over time

SDK control#

app.js
// Open the chat window programmaticallyawait window.OperatorStack.showChat() // Close the chat windowawait window.OperatorStack.hideChat()

Monthly conversation limits#

Each project has a monthly conversation allocation. When the limit is reached, the API returns 429 Too Many Requests. The counter resets on the 1st of each month.

API endpoints#

Public (embed)

POST/v1/projects/{projectKey}/chat/conversationsPublic
Start a new chat conversation. Returns a conversation token for subsequent messages.
POST/v1/projects/{projectKey}/chat/conversations/{id}/messagesBearer Token
Send a message in a conversation. Requires the conversation token in the Authorization header.
GET/v1/projects/{projectKey}/chat/conversations/{id}/messagesBearer Token
Fetch message history for session restoration.