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.
- Enable chat in your project settings
- Add content to the knowledge base (scan your website or add manually)
- The AI assistant is ready to answer questions from your visitors
- 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 | string | Corner placement of the chat bubble (default: "bottom-right") |
| accentColor | string | Bubble and header color (default: "#22c55e") |
| welcomeMessage | string | First 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 | boolean | Show 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 | string | Display name for the AI assistant (default: Project name + " Assistant") |
| personality | string | Tone: "professional", "friendly", "technical", or "casual" (default: "professional") |
| systemPrompt | string | Custom 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
Conversation lifecycle#
- Conversations persist in
sessionStoragefor 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 | number | Seconds before proactive message appears (0 = disabled) (default: 0) |
| proactiveMessage | string | The 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#
// 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)
/v1/projects/{projectKey}/chat/conversationsPublic/v1/projects/{projectKey}/chat/conversations/{id}/messagesBearer Token/v1/projects/{projectKey}/chat/conversations/{id}/messagesBearer Token