# Changelog
Source: https://docs.bubblav.com/changelog
Product updates and new features
Discover what's new in BubblaV. We release new features and improvements monthly.
* **Google Tag Manager**: No-code GTM installation option with install guide button for easy setup.
* **22 New MCP Server Tools**: User-facing configuration tools for managing your chatbot settings via MCP.
* **Visitor Memory**: AI chatbot now remembers visitors across sessions for personalized, context-aware conversations.
* **Forms**: Create custom forms that your AI chatbot can show to visitors to collect structured data—feedback, contact details, quote requests, and more—directly inside the chat. AI-powered triggering, email notifications, and a submissions dashboard.
* **Human Handoff Scenarios**: Configure specific questions or intents that should always be handled by human agents
* **Google Drive Integration**: Connect Google Drive as a knowledge source with OAuth, automatic content sync, and vector embedding on creation.
* **Custom Tool Templates**: New template selection system with 6 ready-made templates including Order Email Notification, reducing setup time for common use cases.
* **ChatGPT MCP Integration**: Full ChatGPT App with OAuth DCR support.
* **Claude & OpenClaw MCP Support**: MCP connector now supports Claude, ChatGPT, and OpenClaw clients.
* **AI Chatbot SDKs**: Launched official npm packages for React, Vue, and Angular.
* **Zendesk OAuth App**: Added native Zendesk OAuth app with Help Center and ticket knowledge sync, simplified setup.
* **Bottom-Center Pill Widget**: New widget position.
* **llms.txt Support**: Added llms.txt and llms-full.txt support with Vibe Coding integration.
* **Live Support Unified Inbox Redesign**: Complete redesign of the live support dashboard with dynamic chat platform menu, channel filtering by installed integrations, and improved sidebar navigation.
* **WordPress Plugin & WooCommerce Plugin**: Full support for WordPress and WooCommerce sites with easy installation, automatic content sync, and unified chat management.
* **BigCommerce App**: Native BigCommerce application integration with product catalog access, order tracking, and customer management.
* **Messenger, Slack & Discord**: Complete chat platform integrations with bot functionality, conversation continuity, and human agent handoff support.
* **Notion Integration**: Introduced Notion as a knowledge base source with content crawling and RAG support.
* **Haravan Integration**: Added Vietnamese e-commerce platform support with OAuth installation and script tag injection.
* **Zapier Integration**: Complete automation platform with 14 triggers, 4 actions, and 3 searches for workflow automation.
* **Attio Integration**: CRM integration for contact management, visitor profile sync, and proactive chat initiation.
* **Chat Widget Improvements**: Added drag-to-resize functionality for expanded chat widget.
* **Dashboard Analytics**: Fixed analytics view to use last 30 days as default period.
* **Knowledge Base Unification**: Unified the Tuning Suggestions system into a streamlined "Q\&A" and "Content Gaps" workflow. Renamed the "Text" tab to "Q\&A" with improved terminology (Question/Answer).
* **Content Gaps**: New dashboard card and dedicated tab to identify high-frequency unanswered customer questions for quick Q\&A resolution.
* **Major Integrations**: Added comprehensive support for Stripe and Polar.sh (billing), Klarna (payments) and Zendesk (tickets).
* **Advanced Web Crawler**: Improved crawling logic with incremental updates, better content extraction, and image processing.
* **Custom Tools**: New key management system customizable per website with authentication UI.
* **MCP Servers**: Support for enabling Model Context Protocol servers on a per-website basis.
* **Documentation**: Launched comprehensive documentation for users and developers.
* **Widget & Live Support**: Enhanced real-time chat, dynamic widget sizing.
* **New Integrations**: Full HubSpot (CRM) integrations including contact sync and order search.
* **Shopify Billing & Storefront**: Added subscription management and predictive search via Storefront API.
* **Shopify Automations**: Self-service returns, visitor insights, and granular order permissions.
* **Product Features**: Added product reviews, rating counts, and image carousels.
* **Calendly**: Added inline meeting rescheduling capabilities.
* **Shopify Returns**: Complete management feature for order returns.
* **Analytics**: Enhanced dashboard with geographic distribution and advanced filtering.
* **Authentication**: Launched email/password login and signup.
* **Widget Customization**: Added full control over chat widget colors and layout.
* **Shopify App**: Native integration.
* **Initial Launch**: Released BubblaV with RAG-powered AI Chatbot, standout Widget, and Smart Crawler.
***
**Have questions about a feature?** Check the [User Guide](/user-guide/getting-started) or [contact our support team](https://www.bubblav.com/contact).
# MCP Server
Source: https://docs.bubblav.com/developer-guide/mcp-server
Connect your BubblaV data to MCP-compatible clients like ChatGPT, Claude Desktop, and OpenClaw.
# BubblaV MCP Server
The BubblaV MCP (Model Context Protocol) Server enables you to connect your BubblaV data to MCP-compatible clients like **ChatGPT**, **Claude Desktop**, and **OpenClaw**. This allows your AI agents to search your knowledge base and access analytics reports in real-time.
## What Can You Do?
* **Search Knowledge Base**: Let your AI agents search your indexed website content
* **Access Analytics**: Retrieve conversation and performance reports programmatically
* **Scrape Web Pages**: Convert any public URL into markdown with `bubblav_scrape_url`
* **Build Automations**: Create custom workflows that leverage your BubblaV data
* **Real-time Integration**: Use Server-Sent Events (SSE) for instant data access
## Available Tools
### bubblav\_search\_knowledge
Search your indexed knowledge base for relevant content.
**Parameters:**
* `query` (string, required): Your search query
* `limit` (number, optional): Maximum results to return (default: 5, max: 20)
**Returns:**
```json theme={null}
{
"results": [
{
"content": "The content snippet...",
"source": "https://example.com/page",
"title": "Page Title",
"relevance": 0.95
}
],
"total": 42
}
```
**Example:**
```json theme={null}
{
"query": "shipping policy",
"limit": 10
}
```
### bubblav\_read\_report
Retrieve conversation or performance analytics reports.
**Parameters:**
* `report_type` (string, required): Type of report - `"conversations"` or `"performance"`
* `date_range` (object, optional): Date range for the report
* `start` (string): Start date in ISO format (e.g., "2026-03-01")
* `end` (string): End date in ISO format (e.g., "2026-03-18")
**Returns (conversations):**
```json theme={null}
{
"reportType": "conversations",
"period": { "start": "2026-03-01", "end": "2026-03-18" },
"metrics": {
"totalConversations": 1234,
"resolvedByBot": 856,
"handedToHuman": 378,
"resolutionRate": 0.69,
"avgResponseTimeSeconds": 12.5,
"topQueries": [
{ "query": "shipping policy", "count": 45 },
{ "query": "return policy", "count": 32 }
]
}
}
```
**Returns (performance):**
```json theme={null}
{
"reportType": "performance",
"period": { "start": "2026-03-01", "end": "2026-03-18" },
"metrics": {
"botVsHumanSplit": { "bot": 0.7, "human": 0.3 },
"csatAverage": 4.2,
"avgConversationLengthMinutes": 3.5,
"peakHours": ["10:00-11:00", "14:00-15:00"]
}
}
```
**Example:**
```json theme={null}
{
"report_type": "conversations",
"date_range": {
"start": "2026-03-01",
"end": "2026-03-18"
}
}
```
### bubblav\_add\_knowledge
Add a new text knowledge entry to your knowledge base. The content is automatically split into chunks, queued for embedding, and becomes searchable via `bubblav_search_knowledge` once processed.
**Parameters:**
* `title` (string, required): Title for this knowledge entry
* `content` (string, required): Full text content to index (plain text or Markdown)
**Returns:**
```json theme={null}
{
"id": "uuid-of-new-entry",
"title": "Knowledge Entry Title",
"chunks_created": 5,
"embedding_triggered": true
}
```
**Example:**
```json theme={null}
{
"title": "Shipping Policy",
"content": "We ship worldwide. Standard delivery takes 5-7 business days. Express shipping is available for orders over $100."
}
```
**Note:** Subject to plan page limits. If your plan limit is reached, you'll receive a `RATE_LIMITED` error.
### bubblav\_scrape\_url
Scrape a public web page URL and return markdown content optimized for LLM context.
**Parameters:**
* `url` (string, required): The page URL to scrape
**Returns:**
```json theme={null}
{
"url": "https://example.com/final-url",
"markdown": "# Markdown content..."
}
```
**Example:**
```json theme={null}
{
"url": "https://example.com"
}
```
## Setup Guide
BubblaV MCP Server supports these connection methods:
1. **ChatGPT** - OAuth 2.0, no API key needed
2. **Claude / Claude Desktop** - OAuth 2.0, no API key needed
3. **API Key** - For OpenClaw and other MCP clients
## Option 1: ChatGPT (OAuth 2.0)
Use the same MCP server URL:
```
https://www.bubblav.com/mcp
```
If your client expects an API-style path, this also works:
```
https://www.bubblav.com/api/mcp
```
ChatGPT will start OAuth automatically. Sign in to BubblaV and select the website you want to connect.
## Option 2: Claude (OAuth 2.0)
No API key needed. Claude handles authentication automatically via OAuth — just add the server URL.
### Step 1: Add the BubblaV connector
In Claude (web or desktop), open **Settings** → **Integrations** (or **Connected tools**) and add a new MCP server with this URL:
```
https://www.bubblav.com/api/mcp
```
### Step 2: Authorize
Claude will open a BubblaV login page. Sign in and select which website to connect. That's it — no config files to edit, no API keys to copy.
## Option 3: OpenClaw (API Key)
### Step 1: Generate an MCP API Key
1. Log in to your BubblaV dashboard at [https://www.bubblav.com](https://www.bubblav.com)
2. Navigate to your **Website Settings** page
3. Click the **API Keys** tab
4. Click **Generate New Key**
5. Enter a name (e.g., "OpenClaw") and select → MCP scopes
6. Click **Generate** and copy the key immediately — it won't be shown again
Your API key will look like:
```
bubblav_mcp_a1b2c3d4e5f6g7h8i9j0k1l2
```
### Step 2: Configure OpenClaw using mcporter
We recommend using [mcporter](https://github.com/jasonacox/mcporter) to easily configure OpenClaw with BubblaV.
#### Install mcporter
```bash theme={null}
# Using pip
pip install mcporter
# Or using pipx
pipx install mcporter
```
#### Configure BubblaV in OpenClaw
Create a configuration file `bubblav.json`:
```json theme={null}
{
"name": "bubblav",
"url": "https://www.bubblav.com/api/mcp",
"headers": {
"X-API-Key": "bubblav_mcp_YOUR_API_KEY_HERE"
}
}
```
Then run mcporter:
```bash theme={null}
mcporter add bubblav.json
```
#### Manual Configuration
If you prefer manual configuration, add this to your OpenClaw config:
```yaml theme={null}
name: bubblav
connection:
url: https://www.bubblav.com/api/mcp
headers:
X-API-Key: bubblav_mcp_YOUR_API_KEY_HERE
```
### Step 3: Test the Connection
Once connected, your OpenClaw agent will have access to:
* `bubblav_search_knowledge` - Search your knowledge base
* `bubblav_read_report` - Access analytics reports
* `bubblav_add_knowledge` - Add new knowledge entries to your knowledge base
You can test by asking your agent to search for information or add new content to your knowledge base.
## Option 4: OpenClaw (Automatic Setup)
### Setup Everything Automatically
Tell OpenClaw to install and configure everything for BubblaV automatically.
**Command:**
```
Please configure BubblaV MCP server integration with these details:
- Server URL: https://www.bubblav.com/api/mcp
- Tools available: bubblav_search_knowledge, bubblav_read_report, bubblav_add_knowledge
- Authentication: API key required
Please ask me for an MCP API key, or let me guide you through generating one.
```
**What this does:**
1. Opens BubblaV dashboard in your browser
2. Generates an API key with proper scopes
3. Configures OpenClaw with server URL and API key
4. Tests connection
**Example prompt:**
```
Setup BubblaV MCP server so I can access my knowledge base and add content to it from OpenClaw.
```
2. **Search knowledge base**: Ask your AI agent to search your website content
3. **Get analytics**: Request a conversation or performance report
4. **Add knowledge**: Test adding a new knowledge entry with title and content
## Rate Limits
MCP API calls are tracked separately from your AI message limits. Each subscription plan includes a monthly MCP call allowance:
| Plan | Calls per Month |
| ------- | --------------- |
| Free | 100 |
| Starter | 1,000 |
| Pro | 5,000 |
| Turbo | 15,000 |
| Custom | Unlimited |
**How it works:**
* Rolling 30-day window (resets every month from your first call)
* When exceeded, you'll receive a `429` status with a `Retry-After` header
* Check your usage in the dashboard under **Integrations** → **MCP Settings**
## Security
### Authentication Methods
**OAuth 2.0 (Claude):**
* Claude handles the full OAuth flow — you only enter the server URL
* Uses PKCE (Proof Key for Code Exchange) for enhanced security
* Tokens expire after 1 hour (access) or 30 days (refresh)
* No credentials to store or rotate
**API Key (OpenClaw and other clients):**
* Simple authentication via `X-API-Key` header
* Keys can be rotated and revoked
* Supports scoped permissions
### API Key & Token Management
* **Keep your API key secret** - Treat it like a password
* **Rotate keys regularly** - Generate new keys and revoke old ones
* **Use scopes** - Only grant the permissions you need
* **Monitor usage** - Review audit logs regularly
### Scopes
Available scopes for MCP API keys and OAuth tokens:
* `mcp:read` - Read-only access to your website data
* `mcp:tools:execute` - Execute MCP tools and scrape URLs via API
### Audit Logging
All MCP tool calls are logged and available in your dashboard:
* Tool name and arguments
* Success/failure status
* API key or OAuth token used
* Timestamp
View logs at **Integrations** → **MCP Settings** → **Audit Logs**
## Troubleshooting
### Connection Issues
**Problem**: "Authentication failed" error
**Solutions**:
* Verify your API key is correct
* Check that the key hasn't been revoked
* Ensure the key has the correct scopes
* Confirm your account is active
**Problem**: "Rate limit exceeded" error
**Solutions**:
* Check your usage in the dashboard
* Wait for the monthly window to reset (check `Retry-After` header)
* Consider upgrading your plan for higher limits
### Tool Errors
**Problem**: "Unknown tool" error
**Solutions**:
* Verify you're using the correct tool names
* Check that your website has indexed content (for knowledge search)
* Ensure your API key has `mcp:tools:execute` scope
**Problem**: "Invalid argument" error
**Solutions**:
* Check that all required parameters are provided
* Verify parameter types match the schema
* Ensure dates are in ISO format (YYYY-MM-DD)
### Knowledge Base Not Available
**Problem**: `bubblav_search_knowledge` tool not available
**Solutions**:
* Ensure your website has been crawled and content indexed
* Check crawl status in the dashboard under **Knowledge Base**
* Trigger a new crawl if needed
## Example Use Cases
### Customer Support Agent
Create an agent that can search your documentation and provide analytics:
```yaml theme={null}
name: support-agent
tools:
- bubblav_search_knowledge
- bubblav_read_report
instructions: |
You are a customer support agent with access to our knowledge base.
Search for relevant information and provide helpful responses.
You can also access conversation analytics to identify trends.
```
### Reporting Bot
Build a bot that generates monthly performance reports:
```yaml theme={null}
name: reporting-bot
tools:
- bubblav_read_report
schedule: "0 9 1 * *" # First day of every month at 9 AM
instructions: |
Generate a performance report for the past month
and summarize key metrics.
```
### Knowledge Search API
Create a simple search API for your internal tools:
```javascript theme={null}
const response = await fetch('https://www.bubblav.com/api/mcp/call', {
method: 'POST',
headers: {
'X-API-Key': 'bubblav_mcp_...',
'Content-Type': 'application/json'
},
body: JSON.stringify({
toolId: 'bubblav_search_knowledge',
arguments: {
query: 'return policy',
limit: 5
}
})
});
const data = await response.json();
```
### Knowledge Update Agent
Build an agent that can identify content gaps and fill them in automatically:
```yaml theme={null}
name: knowledge-update-agent
tools:
- bubblav_search_knowledge
- bubblav_read_report
- bubblav_add_knowledge
instructions: |
Monitor for unanswered questions and low-confidence responses.
When you find a gap, search for the answer internally
and add it to the knowledge base using bubblav_add_knowledge.
```
## Support
Need help? Contact us at:
* **Email**: [support@bubblav.com](mailto:support@bubblav.com)
## API Reference
### Endpoints
**MCP (JSON-RPC 2.0):**
```
POST https://www.bubblav.com/api/mcp
Headers:
Authorization: Bearer (Claude — OAuth)
X-API-Key: bubblav_mcp_... (OpenClaw — API key)
Content-Type: application/json
Body:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/list"
}
```
**OAuth Discovery:**
```
GET https://www.bubblav.com/.well-known/oauth-authorization-server
```
**OAuth Authorize:**
```
GET https://www.bubblav.com/api/oauth/authorize
?response_type=code
&client_id=
&redirect_uri=https://claude.ai/api/mcp/auth_callback
&code_challenge=
&code_challenge_method=S256
&state=
&scope=claudeai
```
Redirects unauthenticated users to login, then shows a website-selection consent page.
**OAuth Token Exchange:**
```
POST https://www.bubblav.com/api/oauth/token
Content-Type: application/x-www-form-urlencoded
grant_type=authorization_code
&code=
&redirect_uri=https://claude.ai/api/mcp/auth_callback
&code_verifier=
```
### Error Codes
| Code | Description |
| ---- | -------------------------------------------------------- |
| 401 | Authentication failed (invalid or missing API key/token) |
| 403 | Insufficient scopes |
| 429 | Rate limit exceeded |
| 500 | Internal server error |
## Changelog
### v1.3.0 (2026-03-24)
* Added `bubblav_add_knowledge` tool for adding text knowledge entries to the knowledge base
* Content is automatically chunked and queued for embedding
* Plan page limits are enforced for knowledge additions
* Added "Option 3: OpenClaw (Automatic Setup)" to guide OpenClaw setup via natural language prompt
### v1.2.0 (2026-03-23)
* Claude connection now requires only the server URL — no API key or config file
* Added `/.well-known/oauth-authorization-server` OAuth discovery endpoint
* Authorization flow shows website-selection consent page instead of requiring API key as `client_id`
* OAuth tokens no longer tied to a specific API key
* OpenClaw URL corrected to `/api/mcp` (not `/api/mcp/sse`)
### v1.1.0 (2026-03-23)
* Added OAuth 2.0 support for Claude Desktop
* PKCE (Proof Key for Code Exchange) for enhanced security
* OAuth token refresh support
* Dual authentication: OAuth tokens and API keys
### v1.0.0 (2026-03-18)
* Initial release
* Knowledge base search tool
* Conversations and performance report tools
* SSE and HTTP endpoints
* Rate limiting by plan
* Audit logging
# Scrape API
Source: https://docs.bubblav.com/developer-guide/scrape-api
Scrape a web page URL and receive clean markdown using your BubblaV API key.
# BubblaV Scrape API
Use BubblaV to scrape any public page and return:
```json theme={null}
{
"url": "https://example.com/final-url",
"markdown": "# Page content in markdown"
}
```
You can reuse the same API key used for MCP server access.
## Endpoint
* **URL:** `POST https://www.bubblav.com/api/scrape`
* **Header:** `X-API-Key: bubblav_mcp_...`
* **Required scope:** `mcp:tools:execute`
## cURL
```bash theme={null}
curl -X POST https://www.bubblav.com/api/scrape \
-H "Content-Type: application/json" \
-H "X-API-Key: bubblav_mcp_YOUR_API_KEY" \
-d '{"url":"https://example.com"}'
```
## Node.js SDK
```bash theme={null}
npm install @bubblav/tools
```
```js theme={null}
import BubblavTools from '@bubblav/tools';
const app = new BubblavTools({ apiKey: 'bubblav_mcp_YOUR_API_KEY' });
const data = await app.scrape('https://example.com');
console.log(data.url);
console.log(data.markdown);
```
## Python
```python theme={null}
import requests
resp = requests.post(
"https://www.bubblav.com/api/scrape",
headers={
"X-API-Key": "bubblav_mcp_YOUR_API_KEY",
"Content-Type": "application/json",
},
json={"url": "https://example.com"},
timeout=30,
)
resp.raise_for_status()
print(resp.json())
```
## CLI (npx)
```bash theme={null}
export BUBBLAV_API_KEY=bubblav_mcp_YOUR_API_KEY
npx @bubblav/tools scrape https://example.com
```
## AI Skill Install
Create a local skill folder and add this `SKILL.md`:
```md theme={null}
# Web Scrape Markdown Skill
Use BubblaV scrape API for web fetches.
POST https://www.bubblav.com/api/scrape
Header: X-API-Key
Body: { "url": "https://..." }
```
Skill lives in this repo: `skills/web-scrape-md/SKILL.md`.
## MCP Tool
If you're already connected to BubblaV MCP server, use tool:
* `bubblav_scrape_url` with `{ "url": "https://example.com" }`
This returns the same JSON structure (url + markdown).
## Install AI Skill with npx
```bash theme={null}
npx skills add github:bubblav-org/tools/skills/web-scrape-md
```
## Claude Code Plugin
### Configure API key for the plugin
The plugin skills (e.g. `web-scrape-md`) need a BubblaV API key.
**Generate a key:**
1. Log in to your [BubblaV dashboard](https://www.bubblav.com)
2. Navigate to your **Website Settings** page
3. Click the **API Keys** tab
4. Click **Generate New Key**
5. Enter a name (e.g. "Claude Code") and select **MCP scopes**
6. Click **Generate** and copy the key immediately — it won't be shown again
Then set it in your project's `.claude/.env` file:
```bash theme={null}
# .claude/.env
BUBBLAV_API_KEY=bubblav_mcp_YOUR_API_KEY
```
If the key is missing, the skill will prompt you to provide one on first use and save it automatically. Once configured, it persists across sessions.
**Env file priority** (highest to lowest):
| Priority | File | Scope |
| -------- | ----------------------------- | -------------------- |
| 1 | `process.env` | Runtime override |
| 2 | `.claude/skills//.env` | Skill-specific |
| 3 | `.claude/skills/.env` | All skills |
| 4 | `.claude/.env` | Project-wide default |
### Install via marketplace
Add the BubblaV marketplace and install the plugin:
```text theme={null}
/plugin marketplace add bubblav-org/tools
```
Then browse and install from the **Discover** tab, or install directly:
```text theme={null}
/plugin install bubblav-tools@bubblav-org-tools
```
After installing, reload to activate:
```text theme={null}
/reload-plugins
```
# SDK Reference
Source: https://docs.bubblav.com/developer-guide/sdk-reference
Control the BubblaV widget programmatically using the JavaScript SDK.
The BubblaV SDK provides programmatic control over your chat widget. Use it to open/close the widget, send messages, listen to events, and more.
The SDK is automatically loaded when you add the widget to your site. For React, Vue, and Angular projects, we recommend using our NPM packages for better type safety and framework integration.
***
## Installation
### NPM Packages (Recommended)
For framework projects, use our official NPM packages:
**1. Install the package:**
```bash theme={null}
npm install @bubblav/ai-chatbot-react
```
**2. Add the widget to your app:**
```tsx theme={null}
import { BubblaVWidget } from '@bubblav/ai-chatbot-react';
function App() {
return (
);
}
```
**3. Control the widget programmatically:**
```tsx theme={null}
import { useBubblaVWidget } from '@bubblav/ai-chatbot-react';
function MyComponent() {
const widget = useBubblaVWidget();
const handleSupportClick = () => {
widget?.open();
widget?.sendMessage('Hello! I need help.');
};
return ;
}
```
**1. Install the package:**
```bash theme={null}
npm install @bubblav/ai-chatbot-vue
```
**2. Add the widget to your app:**
```vue theme={null}
```
**3. Control the widget programmatically:**
```vue theme={null}
```
**1. Install the package:**
```bash theme={null}
npm install @bubblav/ai-chatbot-angular
```
**2. Add the widget to your app:**
```ts theme={null}
import { Component } from '@angular/core';
import { BubblaVWidgetComponent } from '@bubblav/ai-chatbot-angular';
@Component({
selector: 'app-root',
standalone: true,
imports: [BubblaVWidgetComponent],
template: ``
})
export class AppComponent {}
```
**3. Control the widget programmatically:**
```ts theme={null}
import { Component, inject } from '@angular/core';
import { BubblaVWidgetService } from '@bubblav/ai-chatbot-angular';
@Component({
selector: 'app-support',
template: ``
})
export class SupportComponent {
private bubblav = inject(BubblaVWidgetService);
handleSupportClick() {
this.bubblav.open();
this.bubblav.sendMessage('Hello! I need help.');
}
}
```
NPM packages provide full TypeScript support, framework-specific patterns, and better lifecycle management.
***
### Global SDK
For vanilla JavaScript or when not using a framework, the SDK is available as `window.BubblaV`:
```javascript theme={null}
// Check if SDK is ready
if (window.BubblaV) {
window.BubblaV.open();
}
// Or use the ready callback
window.BubblaV.ready(() => {
window.BubblaV.sendMessage('Hello!');
});
```
The SDK may not be available immediately. Use the `ready()` callback to ensure it's loaded.
***
## SDK Methods
### Widget Control
#### `open()`
Opens the chat widget.
```javascript theme={null}
BubblaV.open();
```
**Use cases:**
* Trigger chat from a custom button
* Open chat after a user action
* Start conversation proactively
***
#### `close()`
Closes the chat widget.
```javascript theme={null}
BubblaV.close();
```
**Use cases:**
* Close chat after a conversation
* Respond to user dismiss action
***
#### `toggle()`
Toggles the widget open/closed state.
```javascript theme={null}
BubblaV.toggle();
```
**Use cases:**
* Single button to toggle widget
* Keyboard shortcuts for chat access
***
#### `openSearch()`
Opens the search interface (modal).
```javascript theme={null}
BubblaV.openSearch();
```
**Use cases:**
* Trigger search from a custom button
* Open search after a user action
***
#### `isOpen()`
Checks if the widget is currently open.
```javascript theme={null}
if (BubblaV.isOpen()) {
console.log('Widget is open');
}
```
**Returns:** `boolean`
***
### Messaging
#### `sendMessage(text, conversationId?)`
Sends a message programmatically.
```javascript theme={null}
// Send a simple message
BubblaV.sendMessage('Hello, I need help!');
// Send to a specific conversation
BubblaV.sendMessage('Where is my order?', 'conv_123');
```
| Parameter | Type | Required | Description |
| ---------------- | -------- | -------- | ---------------------- |
| `text` | `string` | Yes | Message text to send |
| `conversationId` | `string` | No | Target conversation ID |
**Use cases:**
* Start conversation with a suggested message
* Send contextual help based on page content
* Pre-fill messages based on user actions
***
#### `showGreeting(data)`
Shows a greeting message to the user with optional sender information.
```javascript theme={null}
// Show default greeting
BubblaV.showGreeting();
// Show custom message
BubblaV.showGreeting('Hi! How can I help you today?');
// Show greeting with sender info
BubblaV.showGreeting({
message: 'Hi! How can I help you today?',
senderName: 'Support Team',
senderAvatarUrl: 'https://example.com/avatar.png',
timestamp: new Date().toISOString()
});
```
| Parameter | Type | Required | Description |
| --------- | -------------------- | -------- | ------------------------------------------------------------------------------------- |
| `data` | `string` \| `object` | No | Message string or object with `message`, `senderName`, `senderAvatarUrl`, `timestamp` |
**Use cases:**
* Display contextual greetings based on page
* Show agent-specific messages with avatar
* Time-based greetings (good morning, etc.)
* Campaign-specific messages
***
#### `hideGreeting()`
Hides the greeting message.
```javascript theme={null}
BubblaV.hideGreeting();
```
***
### Configuration
#### `getConfig()`
Gets the current widget configuration.
```javascript theme={null}
const config = BubblaV.getConfig();
console.log('Widget config:', config);
```
**Returns:** `object` with current configuration
***
#### `setDebug(enabled)`
Enables or disables debug mode.
```javascript theme={null}
// Enable debug mode
BubblaV.setDebug(true);
// Disable debug mode
BubblaV.setDebug(false);
```
Only enable debug mode in development. It logs detailed information to the console.
***
## Event System
The SDK emits events for various widget actions. Listen to events to respond to user interactions.
### `on(event, callback)`
Register an event listener.
```javascript theme={null}
BubblaV.on('chat:opened', () => {
console.log('Chat widget opened');
});
BubblaV.on('message:received', (message) => {
console.log('New message:', message);
});
```
### `off(event, callback)`
Unregister an event listener.
```javascript theme={null}
const handler = () => console.log('Chat opened');
BubblaV.on('chat:opened', handler);
// Later...
BubblaV.off('chat:opened', handler);
```
***
## Available Events
| Event | Description | Payload |
| -------------------- | -------------------------------------------------------- | ------------------------------------------------------------------------------------- |
| `chat:opened` | Triggered when the chat widget is opened. | `undefined` |
| `chat:closed` | Triggered when the chat widget is closed. | `undefined` |
| `search:opened` | Triggered when the search interface is opened. | `{ mode: string }` |
| `search:closed` | Triggered when the search interface is closed. | `{ mode: string }` |
| `message:sent` | Triggered when a message is sent by the user. | `{ conversation_id: string, text: string }` |
| `message:received` | Triggered when a message is received from the bot/agent. | `{ conversation_id: string, message_id: string, text: string, fromVisitor: boolean }` |
| `message:rated` | Triggered when a specific message is rated. | `{ conversation_id: string, message_id: string, rating: 'up' \| 'down' }` |
| `conversation:rated` | Triggered when the conversation is rated. | `{ conversation_id: string, rating: number }` |
| `widget:expanded` | Triggered when the widget is expanded (desktop). | `undefined` |
| `widget:collapsed` | Triggered when the widget is collapsed (desktop). | `undefined` |
| `search:query` | Triggered when a search query is submitted. | `{ query: string, source: "input" \| "suggestion" }` |
| `ready` | Triggered when the widget is fully loaded. | `undefined` |
***
## Framework Examples
### React
#### Using Hooks
```tsx theme={null}
'use client';
import { useRef } from 'react';
import { BubblaVWidget, useBubblaVWidget, useBubblaVEvent } from '@bubblav/ai-chatbot-react';
import type { BubblaVWidgetRef } from '@bubblav/ai-chatbot-react';
function SupportButton() {
const widgetRef = useRef(null);
const widget = useBubblaVWidget();
// Listen to events
useBubblaVEvent('chat:opened', () => {
console.log('Support chat opened');
});
const openSupport = () => {
widget?.open();
};
return (
<>
>
);
}
```
#### Using the Widget Component
```tsx theme={null}
import { BubblaVWidget } from '@bubblav/ai-chatbot-react';
function App() {
return (
);
}
```
***
### Vue
#### Using Composition API
```vue theme={null}
```
#### Using Options API
```vue theme={null}
```
***
### Angular
```ts theme={null}
import { Component, inject } from '@angular/core';
import { BubblaVWidgetComponent, BubblaVWidgetService } from '@bubblav/ai-chatbot-angular';
@Component({
selector: 'app-support',
standalone: true,
imports: [BubblaVWidgetComponent],
template: `
`
})
export class SupportComponent {
private bubblav = inject(BubblaVWidgetService);
constructor() {
// Listen to events
this.bubblav.on('chat:opened', () => {
console.log('Support chat opened');
});
}
openSupport() {
this.bubblav.open();
}
}
```
***
## TypeScript Support
All NPM packages include full TypeScript definitions:
```typescript theme={null}
import type {
BubblaVWidgetProps,
BubblaVWidgetRef,
BubblaVSDK,
BubblaVEvent
} from '@bubblav/ai-chatbot-react';
// Full type safety
const config: BubblaVWidgetProps = {
websiteId: 'your-website-id',
bubbleColor: '#3b82f6',
position: 'bottom-right'
};
// Type-safe event listeners
const eventHandler: BubblaVEvent<'chat:opened'> = () => {
console.log('Chat opened');
};
```
***
## Best Practices
1. **Prefer NPM Packages**
For React, Vue, and Angular projects, use the NPM packages instead of the global SDK for better type safety and lifecycle management.
2. **Wait for Ready State**
Always check if the SDK is ready before using it:
```javascript theme={null}
BubblaV.ready(() => {
BubblaV.open();
});
```
3. **Clean Up Listeners**
Remove event listeners when they're no longer needed:
```javascript theme={null}
const handler = () => console.log('Opened');
BubblaV.on('chat:opened', handler);
// Later...
BubblaV.off('chat:opened', handler);
```
4. **Handle Edge Cases**
Check if methods exist before calling:
```javascript theme={null}
if (BubblaV && typeof BubblaV.open === 'function') {
BubblaV.open();
}
```
5. **Use Environment Variables**
Store your website ID in environment variables:
```env theme={null}
# Next.js
NEXT_PUBLIC_BUBBLAV_WEBSITE_ID=your-website-id
# Nuxt
NUXT_PUBLIC_BUBBLAV_WEBSITE_ID=your-website-id
```
```tsx theme={null}
```
***
## Full SDK Reference
```typescript theme={null}
interface BubblaVSDK {
// Widget control
open(): void;
close(): void;
toggle(): void;
openSearch(): void;
isOpen(): boolean;
// Messaging
sendMessage(text: string, conversationId?: string): void;
showGreeting(data: string | { message?: string; senderName?: string; senderAvatarUrl?: string; timestamp?: string }): void;
hideGreeting(): void;
// Configuration
getConfig(): Record;
setDebug(enabled: boolean): void;
// Events
on(event: string, callback: (...args: unknown[]) => void): void;
off(event: string, callback: (...args: unknown[]) => void): void;
emit(event: string, data?: unknown): void;
// Lifecycle
ready(callback: () => void): void;
// Analytics
track(eventName: string, properties?: Record): void;
}
```
***
## Next Steps
Customize widget appearance and behavior
Quick-start templates for Next.js and Nuxt
# Starter Templates
Source: https://docs.bubblav.com/developer-guide/starter-templates
Quick-start templates for integrating BubblaV into your Next.js, Nuxt, or Angular applications
Starter templates provide a quick way to integrate BubblaV into your project. Use our official templates for Next.js, Nuxt, and Angular to get started in minutes.
***
## Next.js Template
Get started with BubblaV in your Next.js application.
### Repository
[github.com/bubblav-org/nextjs-template](https://github.com/bubblav-org/nextjs-template)
### Features
* Pre-configured BubblaV widget integration
* Environment variable setup
* TypeScript support
* Example usage components
### Quick Start
```bash theme={null}
# Clone the template
git clone https://github.com/bubblav-org/nextjs-template.git my-bubblav-app
# Navigate to the project
cd my-bubblav-app
# Install dependencies
npm install
# Copy environment variables
cp .env.example .env.local
# Edit .env.local and add your website ID
# NEXT_PUBLIC_BUBBLAV_WEBSITE_ID=your-website-id
# Start the development server
npm run dev
```
### Project Structure
```
nextjs-template/
├── app/
│ ├── layout.tsx # Root layout with BubblaV provider
│ └── page.tsx # Home page with example usage
├── components/
│ └── bubblav-widget.tsx # Widget component
├── .env.example # Environment variables template
└── README.md # Setup instructions
```
### Configuration
Add your website ID in `.env.local`:
```env theme={null}
NEXT_PUBLIC_BUBBLAV_WEBSITE_ID=your-website-id
```
***
## Nuxt Template
Get started with BubblaV in your Nuxt application.
### Repository
[github.com/bubblav-org/nuxt-template](https://github.com/bubblav-org/nuxt-template)
### Features
* Nuxt 3 compatible
* Auto-imports for BubblaV composables
* Environment variable configuration
* TypeScript support
### Quick Start
```bash theme={null}
# Clone the template
git clone https://github.com/bubblav-org/nuxt-template.git my-bubblav-app
# Navigate to the project
cd my-bubblav-app
# Install dependencies
npm install
# Copy environment variables
cp .env.example .env
# Edit .env and add your website ID
# NUXT_PUBLIC_BUBBLAV_WEBSITE_ID=your-website-id
# Start the development server
npm run dev
```
### Project Structure
```
nuxt-template/
├── app.vue # Root component with BubblaV integration
├── components/
│ └── BubblaVWidget.vue # Widget component
├── composables/
│ └── useBubblaV.ts # BubblaV composable
├── .env.example # Environment variables template
└── README.md # Setup instructions
```
### Configuration
Add your website ID in `.env`:
```env theme={null}
NUXT_PUBLIC_BUBBLAV_WEBSITE_ID=your-website-id
```
***
## Angular Template
Get started with BubblaV in your Angular application.
### Repository
[github.com/bubblav-org/angular-template](https://github.com/bubblav-org/angular-template)
### Features
* Angular 21 with standalone components
* Tailwind CSS with CSS variable theming
* Dark/light theme toggle with localStorage persistence
* Pre-configured BubblaV widget integration
* TypeScript support
* Environment variable setup via `set-env.cjs` script
### Quick Start
```bash theme={null}
# Clone the template
git clone https://github.com/bubblav-org/angular-template.git my-bubblav-app
# Navigate to the project
cd my-bubblav-app
# Install dependencies
npm install
# Copy environment variables
cp .env.example .env.local
# Edit .env.local and add your website ID
# ANGULAR_PUBLIC_BUBBLAV_WEBSITE_ID=your-website-id
# Start the development server
npm run start
```
Open [http://localhost:4200](http://localhost:4200) to view your app.
### Project Structure
```
angular-template/
├── src/
│ ├── app/
│ │ ├── components/
│ │ │ ├── header.component.ts # Navigation with theme toggle and "Ask AI" button
│ │ │ └── theme-toggle.component.ts # Dark/light mode switcher
│ │ └── app.component.ts # Root component with BubblaV widget
│ ├── environments/
│ │ ├── environment.template.ts # Environment template (git tracked)
│ │ └── environment.prod.template.ts # Production template (git tracked)
│ └── styles.css # CSS variables and theme definitions
├── set-env.cjs # Environment file generator script
├── .env.example # Environment variables template
└── README.md # Setup instructions
```
### Configuration
Add your website ID in `.env.local`:
```env theme={null}
ANGULAR_PUBLIC_BUBBLAV_WEBSITE_ID=your-website-id
```
**How it works:**
* The `set-env.cjs` script reads your `.env.local` file and generates `src/environments/environment.ts` at build time
* Run `npm run start` - the script runs automatically before the dev server
* For Vercel deployment, set `ANGULAR_PUBLIC_BUBBLAV_WEBSITE_ID` in your project's Environment Variables
***
## Deploy to Vercel
Deploy your BubblaV-powered application to Vercel in a few clicks.
### Prerequisites
* A [Vercel account](https://vercel.com/signup)
* Your BubblaV website ID
* Git repository (GitHub, GitLab, or Bitbucket)
### Deploy Next.js Template
#### Option 1: One-Click Deploy (Recommended)
The fastest way to deploy your Next.js application to Vercel:
#### Option 2: Deploy with Vercel CLI
```bash theme={null}
# Install Vercel CLI
npm install -g vercel
# Navigate to your project
cd my-bubblav-app
# Deploy
vercel
```
#### Option 3: Deploy via Vercel Dashboard
1. **Push your code to GitHub**
```bash theme={null}
git init
git add .
git commit -m "Initial commit"
git branch -M main
git remote add origin https://github.com/your-username/my-bubblav-app.git
git push -u origin main
```
2. **Import to Vercel**
* Go to [vercel.com/new](https://vercel.com/new)
* Click "Import Git Repository"
* Select your repository
* Configure the project:
* **Framework Preset**: Next.js (auto-detected)
* **Root Directory**: `./` (default)
* **Build Command**: `npm run build` (default)
* **Output Directory**: `.next` (default)
3. **Add Environment Variables**
* In the Vercel dashboard, go to **Settings** → **Environment Variables**
* Add `NEXT_PUBLIC_BUBBLAV_WEBSITE_ID` with your website ID
* Click "Save"
4. **Deploy**
* Click "Deploy"
* Vercel will build and deploy your application
***
### Deploy Nuxt Template
#### Option 1: One-Click Deploy (Recommended)
The fastest way to deploy your Nuxt application to Vercel:
#### Option 2: Deploy with Vercel CLI
```bash theme={null}
# Install Vercel CLI
npm install -g vercel
# Navigate to your project
cd my-bubblav-app
# Deploy
vercel
```
#### Option 3: Deploy via Vercel Dashboard
1. **Push your code to GitHub**
```bash theme={null}
git init
git add .
git commit -m "Initial commit"
git branch -M main
git remote add origin https://github.com/your-username/my-bubblav-app.git
git push -u origin main
```
2. **Import to Vercel**
* Go to [vercel.com/new](https://vercel.com/new)
* Click "Import Git Repository"
* Select your repository
* Configure the project:
* **Framework Preset**: Nuxt.js (auto-detected)
* **Root Directory**: `./` (default)
* **Build Command**: `npm run build` (default)
* **Output Directory**: `.output` (default)
3. **Add Environment Variables**
* In the Vercel dashboard, go to **Settings** → **Environment Variables**
* Add `NUXT_PUBLIC_BUBBLAV_WEBSITE_ID` with your website ID
* Click "Save"
4. **Deploy**
* Click "Deploy"
* Vercel will build and deploy your application
***
### Deploy Angular Template
#### Option 1: One-Click Deploy (Recommended)
The fastest way to deploy your Angular application to Vercel:
#### Option 2: Deploy with Vercel CLI
```bash theme={null}
# Install Vercel CLI
npm install -g vercel
# Navigate to your project
cd my-bubblav-app
# Deploy
vercel
```
#### Option 3: Deploy via Vercel Dashboard
1. **Push your code to GitHub**
```bash theme={null}
git init
git add .
git commit -m "Initial commit"
git branch -M main
git remote add origin https://github.com/your-username/my-bubblav-app.git
git push -u origin main
```
2. **Import to Vercel**
* Go to [vercel.com/new](https://vercel.com/new)
* Click "Import Git Repository"
* Select your repository
* Configure the project:
* **Framework Preset**: Angular (auto-detected)
* **Root Directory**: `./` (default)
* **Build Command**: `npm run build` (default)
* **Output Directory**: `dist/angular-template/browser` (default)
3. **Add Environment Variables**
* In the Vercel dashboard, go to **Settings** → **Environment Variables**
* Add `ANGULAR_PUBLIC_BUBBLAV_WEBSITE_ID` with your website ID
* Click "Save"
4. **Deploy**
* Click "Deploy"
* Vercel will build and deploy your application
***
## Environment Variables
| Variable | Description | Required |
| ----------------------------------- | ---------------------------------------------------- | ------------- |
| `NEXT_PUBLIC_BUBBLAV_WEBSITE_ID` | Your website ID from the BubblaV dashboard (Next.js) | Yes (Next.js) |
| `NUXT_PUBLIC_BUBBLAV_WEBSITE_ID` | Your website ID from the BubblaV dashboard (Nuxt) | Yes (Nuxt) |
| `ANGULAR_PUBLIC_BUBBLAV_WEBSITE_ID` | Your website ID from the BubblaV dashboard (Angular) | Yes (Angular) |
### Finding Your Website ID
1. Log in to your [BubblaV dashboard](https://www.bubblav.com/dashboard)
2. Go to **Chat Widget** → **Installation**
3. Copy your Website ID
***
## Customization
After deploying, you can customize the widget:
Customize colors, position, and behavior
Programmatic control with the SDK
***
## Troubleshooting
### Widget Not Showing
1. **Check your Website ID**: Ensure the environment variable is set correctly (`NEXT_PUBLIC_BUBBLAV_WEBSITE_ID` for Next.js, `NUXT_PUBLIC_BUBBLAV_WEBSITE_ID` for Nuxt, `ANGULAR_PUBLIC_BUBBLAV_WEBSITE_ID` for Angular)
2. **Verify deployment**: Check Vercel deployment logs for errors
3. **Clear cache**: Clear your browser cache and reload
4. **For Angular**: Verify the `set-env.cjs` script ran correctly by checking `src/environments/environment.ts` contains your Website ID
### Environment Variables Not Working
1. **Redeploy after adding variables**: Environment variables require a redeploy
2. **Check variable scope**: Ensure variables are set for all environments (Preview, Production)
3. **Verify variable name**: Make sure you're using the correct prefix (`NEXT_PUBLIC_` for Next.js, `NUXT_PUBLIC_` for Nuxt, `ANGULAR_PUBLIC_` for Angular)
4. **For Angular**: Ensure you're using `set-env.cjs` to generate environment files before running `npm run start` or `npm run build`
***
## Next Steps
Learn different installation methods
Programmatic control with the SDK
Customize widget appearance
# Help & Support
Source: https://docs.bubblav.com/help-support
Find answers to common questions and get help with BubblaV
Find answers to frequently asked questions about BubblaV. If you need additional help, [contact our support team](https://www.bubblav.com/contact).
## Getting Started
Visit [bubblav.com](https://www.bubblav.com) and click **Sign Up**. You'll need to verify your email before you can start using the platform.
After logging in, go to **Dashboard** → **Websites** and click **Add Website**. Enter your website URL and BubblaV will automatically start crawling your content.
You can have a basic chatbot running in 5-10 minutes. Website crawling typically takes 2-5 minutes depending on your site size, and you can continue configuring while it runs.
1. BubblaV automatically crawls your website to learn your content
2. Your knowledge base is populated with indexed pages
3. A unique embed code is generated for your website
4. You can customize the widget and test it before going live
No installation on your server is required. You just need to add a small JavaScript snippet to your website's HTML. See the Installation guide for platform-specific instructions.
## Installation & Widget Deployment
1. Go to **Dashboard** → **Installation**
2. Copy the embed code provided
3. Paste it into your website's HTML (typically in the footer or header)
4. The widget will appear on your live site within minutes
For platform-specific instructions, see the Installation guide.
Yes! You can use the "Insert Headers and Footers" plugin to paste the embed code in the footer section, or manually add it to your theme's footer.php file.
Yes! Install the BubblaV Shopify app from the App Store. It will automatically integrate with your store and you can configure it from your dashboard.
Yes! Google Tag Manager (GTM) works on virtually any website and is a great option when your platform has no dedicated app. Create a new **Custom HTML** tag, paste your BubblaV embed code, set the trigger to **All Pages**, then **Submit** and **Publish**. See the [Google Tag Manager guide](/user-guide/integrations/google-tag-manager) for full step-by-step instructions.
* Verify the embed code is correctly placed in your HTML
* Check your browser console for errors
* Ensure you're using the correct website ID
* Wait a few minutes for the widget to load
* Check that your website ID is active in your dashboard
Yes. Go to **Design** → **Positioning** and choose **Bottom Right** or **Bottom Left** for both desktop and mobile.
## Knowledge Base & Training
Website crawling automatically scans your website, extracts content from your pages, and makes it searchable so your chatbot can answer questions accurately based on your actual content.
When you add a website, BubblaV:
1. Visits your URL and extracts all text content
2. Follows links to discover other pages on your domain
3. Detects sitemaps and crawls listed URLs
4. Processes content into searchable chunks
5. Updates status for each page (Crawled, Pending, Failed)
Yes! You can add sub-websites and external domains to your knowledge base. This allows you to train your chatbot on content from multiple related sources.
Check your robots.txt file. BubblaV respects the robots.txt standard, so pages blocked there won't be crawled. If needed, you can manually add content using text snippets or file uploads.
Yes! You can upload PDFs, documents, and text files directly to your knowledge base. Go to **Knowledge** → **Files** to upload content.
Use **Knowledge** → **Q\&A** to add specific entries. Write out question and answer pairs you want the chatbot to know.
## Widget Customization & Design
Go to **Design** in your dashboard to customize:
* Brand colors and color themes
* Widget size and position
* Welcome message and chat suggestions
* Bot name and avatar
* Background styles
Yes! When you add a new website, BubblaV automatically analyzes your site's colors and applies a matching theme. You can also manually extract colors anytime: go to **Design** → **Color Palette Presets**, enter any URL, and click **Extract Colors**.
Yes. Go to **Design** → **Home Screen** to customize the bot's name, avatar image, and welcome message.
Yes, this option is available on Pro+ plans. Go to **Design** → **General** and toggle **Show 'Powered by' branding**.
* **Width**: Default is 400px (adjustable)
* **Height**: Default is 650px (adjustable)
You can customize dimensions to match your website's design.
## Integrations
Connecting Shopify enables your chatbot to:
* Track orders by order number
* Search your product catalog
* Show product details
* Access customer order history
* Process returns and refunds
* Check gift card balances
* Validate discount codes
1. Go to **Dashboard** → **Integrations** → **Shopify**
2. Click **Connect Shopify**
3. The BubblaV app will open in the Shopify App Store
4. Click **Install** and authorize the app
5. You'll be redirected back to your dashboard
* Verify you're using your `.myshopify.com` domain
* Check that your store is active
* Clear browser cache and try incognito mode
* Ensure you have app installation permissions
* Try the authorization process again
BubblaV supports integrations with: Shopify, HubSpot, Zendesk, Calendly, Stripe, Klarna, Polar, and custom tools via our MCP servers.
Use **Custom Tools** to create HTTP requests to any API. You can define tools that call external services and integrate them into your chatbot.
## Live Support
Live support lets you take over conversations in real-time when a customer needs to talk to a human. This feature is available on Pro+ plans.
Live support is automatically enabled for Pro+ plan users. Your team members can access the **Live Support** dashboard to see and respond to conversations in real-time.
Your account owner can add team members with different roles. Go to **Team & Members** to manage who can access live support conversations.
## Account & Billing
BubblaV offers plans with different features and pricing. Visit the [Pricing page](https://www.bubblav.com/pricing) to see all available plans and their features.
**Pricing Summary:**
* **Free**: \$0/month (100 messages/month, 1 website, 50 pages)
* **Pro**: \$49/month (\$39/month annually, save \$120/year, 5,000 messages/month) - 14-day free trial
All paid plans include annual billing options with 20% savings compared to monthly billing.
Yes! The Pro plan includes a **14-day free trial** for new customers. You get full access to all Pro features during the trial period. Your payment card is required at signup but won't be charged until the trial ends. Cancel anytime during the trial at no cost.
You can change your plan anytime from your **Account Settings** → **Billing**. Upgrades are effective immediately, and downgrades take effect at the end of your billing cycle.
Your website will stop working until you renew your subscription. Your data is preserved, so you can resume service anytime by renewing.
Contact our [support team](https://www.bubblav.com/contact) to discuss your options. We may be able to help depending on your situation.
Go to **Team & Members** in your dashboard and click **Add Member**. Enter their email address and select their role. They'll receive an invitation to join your account.
## Troubleshooting
* Verify your website was fully crawled (check Knowledge → Pages)
* Add specific Q\&A pairs for common questions you want answered
* Upload relevant documents to your knowledge base
* Use "Content Gaps" to identify what information is missing
* Test with specific questions from your website content
Your knowledge base may not have enough specific information. Consider:
* Adding more detailed content to your website
* Uploading PDFs with detailed product/service information
* Adding Q\&A entries with specific question/answer pairs
* Refining behavior in Settings
* Check your spam/junk folder
* Verify you entered the correct email address
* Request a new verification email
* Try signing up with Google instead
* Large websites (100+ pages) naturally take longer
* Check if your site blocks bots in robots.txt
* Try adding pages manually if crawl continues to fail
* Contact support if crawl is stuck
* Verify you're using the correct login credentials
* Try resetting your password
* Check that your browser supports the dashboard
* Clear your browser cache and try again
* Contact support if you're still unable to access
* Check your internet connection
* Verify the widget code is correctly installed
* Check browser console for JavaScript errors
* Ensure your website's server is responding quickly
* Try clearing your browser cache
## Still Need Help?
If you can't find the answer you're looking for, we're here to help! [Contact our support team](https://www.bubblav.com/contact) and we'll respond as quickly as possible.
You can also check the [User Guide](/user-guide/getting-started) for more detailed documentation.
# Use AI Agents to Manage & Improve Your Chatbot
Source: https://docs.bubblav.com/user-guide/ai-agent-workflows
Connect Claude, ChatGPT, or OpenClaw to BubblaV via MCP and let your AI diagnose content gaps, write knowledge, tune behavior, set up human handoff, and build custom tools — with copy-paste prompts.
You don't have to manage your chatbot by hand. BubblaV exposes its data and settings over an
**MCP server**, so an AI assistant like **Claude**, **ChatGPT**, **Google Antigravity**, or
**OpenClaw** can run the same tasks you'd do in the dashboard — diagnose weak answers, write and
add knowledge, tune the bot's persona, set up human handoff, and build custom tools.
This page is a recipe book. Each recipe has a **goal**, a **copy-paste prompt**, and the **MCP
tools** it triggers. For the full tool-by-tool reference and connection details, see the
[MCP Server](/developer-guide/mcp-server) developer guide.
## What you can do
Find the questions your bot struggles with and the topics visitors ask about most.
Draft and add Q\&A, upload files, and turn resolved tickets into reusable answers.
Rewrite the chatbot persona and edit the widget's words, colors, and starters.
Configure human-handoff triggers and build custom webhook tools.
## Connect your AI (one time)
Add BubblaV as an MCP server in your assistant. The setup differs slightly by client — full
screenshots are in the [MCP Server guide](/developer-guide/mcp-server).
These clients use **OAuth** — no API key to manage.
1. In your assistant's settings, add a new MCP server with the URL below.
2. Authorize: sign in to BubblaV and pick the website to connect.
3. Done. Your assistant now sees BubblaV's tools.
```text theme={null}
https://www.bubblav.com/mcp
```
API-key clients send a header instead of OAuth.
1. In BubblaV, open **Website Settings → API Keys** and generate a key with the
`mcp:read` and `mcp:tools:execute` scopes. Copy it — it's shown once.
2. Point your client at the endpoint below, sending `X-API-Key: bubblav_mcp_…`.
3. We recommend the [mcporter](https://github.com/jasonacox/mcporter) helper to configure OpenClaw.
```text theme={null}
URL: https://www.bubblav.com/api/mcp
Header: X-API-Key: bubblav_mcp_YOUR_KEY
```
Your assistant can only act on the website you authorized, and every call is logged in
**Integrations → MCP Settings → Audit Logs**.
***
## Recipes
Paste each prompt into your connected assistant and edit the bracketed parts. Your assistant will
call the BubblaV tools for you.
### 1. Find content gaps & trending questions
**Goal:** see where the bot fails and what visitors ask most, grouped into themes.
```text theme={null}
Look at my chatbot's content gaps and most-asked questions from the last 30 days.
Group them by theme, tell me which topics the bot struggles with most, and rank
the top five things I should fix.
```
**Tools it triggers:** `bubblav_get_content_gaps`, `bubblav_get_most_asked_questions`, `bubblav_read_report`.
### 2. Fill content gaps with new knowledge
**Goal:** draft answers for the worst gaps and add them — without writing each one by hand.
```text theme={null}
Take the top three gaps in the [shipping] theme. Here's our policy: [paste text].
Draft a clear Q&A-style answer for each gap, show them to me for approval, then
add each approved answer to the knowledge base. Skip any gap already covered.
```
**Tools it triggers:** `bubblav_search_knowledge` (de-dup check), `bubblav_add_knowledge`.
```text theme={null}
Upload and index this file as knowledge: [attach PDF/DOCX/TXT/MD, ≤10MB]
```
Calls `bubblav_upload_knowledge_file`, then `bubblav_get_crawl_status` to confirm indexing.
```text theme={null}
Crawl and index this URL into my knowledge base: https://example.com/new-page
```
Calls `bubblav_add_crawl_url`.
```text theme={null}
Turn resolved ticket [ticket_id] into a searchable knowledge article.
```
Calls `bubblav_sync_ticket_to_knowledge`.
### 3. Turn conversations into insight
**Goal:** audit specific issues or pull leads out of conversations.
```text theme={null}
Find every conversation from the last two weeks that mentioned a "billing error".
Summarize the common causes. Then list the leads (visitors who gave an email) from
the same period so I can follow up.
```
**Tools it triggers:** `bubblav_search_conversations`, `bubblav_get_conversation`, `bubblav_list_leads`.
### 4. Tune the chatbot persona & widget
**Goal:** change how the bot talks and looks, editing in place rather than overwriting.
```text theme={null}
Read my bot's current instructions. Then update the persona so it's warmer and more
concise, always greets by name, and offers to escalate to a human for anything
billing-related. Also set the widget greeting to "Hi there! How can we help?" and
add three starter suggestions.
```
**Tools it triggers:** `bubblav_get_website_settings`, `bubblav_update_website_settings`
(the `custom_instructions` field is the persona, max 2,000 chars), `bubblav_update_widget_appearance`.
### 5. Set up human handoff triggers (Pro+)
**Goal:** route sensitive intents to a live agent automatically.
```text theme={null}
Create a human-handoff scenario: when a visitor mentions a refund, cancellation, or
complaint, hand off to a live agent with the message "Let me connect you with a
teammate who can sort this out." List the existing scenarios first so we don't duplicate.
```
**Tools it triggers:** `bubblav_list_handoff_scenarios`, `bubblav_create_handoff_scenario`.
### 6. Build a custom webhook tool (Pro+)
**Goal:** let the chatbot take a real action (check an order, query a CRM, get a quote).
```text theme={null}
Create a custom tool called "check_order_status" that takes an order number and
calls my webhook at https://example.com/api/order-status using bearer auth.
Describe it for the AI so it knows when to use it, then activate it for this website.
```
**Tools it triggers:** `bubblav_list_custom_tools`, `bubblav_create_custom_tool`.
The `secret_key` for a bearer/hmac tool is returned **only once**. Tell your assistant to surface
it to you immediately so you can configure your webhook. See
[Custom Tools](/user-guide/integrations/custom-tools) for webhook validation details.
### 7. Create a scoped API key for another agent
**Goal:** give a second assistant (or Zapier, a script, etc.) limited access.
```text theme={null}
Create a new MCP API key named "Zapier" with read-only (mcp:read) scope.
```
**Tools it triggers:** `bubblav_create_api_key`. (Use `bubblav_list_api_keys` and
`bubblav_revoke_api_key` to audit and revoke.)
***
## The improvement loop
These recipes chain into a weekly habit:
```text theme={null}
1. Diagnose — "what should I fix this week?"
2. Improve — "draft & add answers for the top gaps"
3. Measure — "how did resolution rate change?"
4. Tune — "adjust tone / handoff based on what you saw"
```
Your AI drives each cycle — BubblaV does **not** run an autonomous self-improvement job in the
background. You approve knowledge before it's added and control how the persona evolves. The win
is collapsing a week of dashboard chores into a single conversation.
## Plans & limits
MCP calls are counted separately from your AI message limits, on a rolling 30-day window.
| Plan | MCP calls / month |
| ------ | ----------------- |
| Free | 100 |
| Pro | 5,000 |
| Custom | Unlimited |
The following require a **Pro plan or higher** (gated when the tool runs):
* `bubblav_create_custom_tool` and custom-tool management
* `bubblav_create_handoff_scenario` and handoff management
* `bubblav_sync_ticket_to_knowledge`
See [Billing & Plans](/user-guide/billing) for full plan details. When you exceed the limit you'll
get an HTTP `429` with a `Retry-After` header.
## Related
Every tool, parameter, auth flow, and rate limit — the developer reference.
How crawled pages, Q\&A, and files become answers.
The dashboard view of content gaps and answerable questions.
Webhook tools, authentication, and validation.
# AI Page
Source: https://docs.bubblav.com/user-guide/ai-page
Add a full-page AI chat interface to your website
The AI Page is a full-page, conversational AI interface that provides an immersive chat experience. Unlike the floating widget, the AI Page takes over the entire viewport, making it perfect for dedicated help pages, support portals, or AI-powered landing pages.
## What is the AI Page?
The AI Page provides:
* **Full-page experience**: Immersive chat interface that fills the entire browser window
* **Conversational AI**: Interactive chat with streaming responses
* **Source citations**: AI responses include links to relevant content from your knowledge base
* **Customizable appearance**: Light and dark themes to match your brand
* **Lazy loading**: Optimized performance with code splitting
## Use Cases
The AI Page is ideal for:
* **Dedicated help centers**: `/help` or `/support` pages
* **AI-powered landing pages**: Interactive product demos or onboarding
* **Knowledge base search**: Full-page search interface for documentation
* **Internal tools**: Employee support portals or FAQ pages
* **Customer portals**: Integrated chat in customer dashboard areas
***
## Installation
### Basic Setup
Add the AI Page to your website in two simple steps:
Add a container div where you want the AI Page to appear:
```html theme={null}
```
Add the AI Page script with your configuration:
```html theme={null}
```
The AI Page will automatically create the container if you don't provide one, but we recommend adding it explicitly for better control.
***
## Configuration Options
### Required Attributes
| Attribute | Description | Example |
| -------------- | ------------------------------ | -------------------------------------- |
| `src` | Script URL | `https://www.bubblav.com/ai-page.js` |
| `data-site-id` | Your unique website identifier | `812b25b4-02df-40fa-9f68-3a99b372b1a1` |
### Optional Attributes
| Attribute | Description | Default |
| ------------------ | -------------------------------- | ------------------------- |
| `data-theme` | Visual theme (`light` or `dark`) | `light` |
| `data-title` | Header text for the chat | `"What can I help with?"` |
| `data-placeholder` | Input placeholder text | `"Ask me anything..."` |
***
## Platform-Specific Instructions
### Static HTML
Add to your HTML page:
```html theme={null}
AI Help Center
```
### React / Next.js
**Using next/script (Recommended for Next.js):**
```jsx theme={null}
// app/ai-help/page.tsx
import Script from 'next/script';
export default function AIHelpPage() {
return (
);
}
```
**Using useEffect (Alternative):**
```jsx theme={null}
// components/AIPage.jsx
import { useEffect } from 'react';
export default function AIPage() {
useEffect(() => {
const script = document.createElement('script');
script.src = 'https://www.bubblav.com/ai-page.js';
script.dataset.siteId = 'YOUR_SITE_ID';
script.dataset.theme = 'dark';
script.defer = true;
document.body.appendChild(script);
return () => {
document.body.removeChild(script);
};
}, []);
return ;
}
```
### WordPress
**Option 1: Using a Plugin**
1. Install a "Custom HTML" or "Insert HTML" plugin
2. Create a new page (e.g., "AI Help Center")
3. Add a Custom HTML block with:
```html theme={null}
```
**Option 2: Page Template**
Create a custom page template in your theme:
```php theme={null}
```
### Webflow
1. Create a new page (e.g., "AI Help")
2. Add an Embed element anywhere on the page
3. Paste the following code:
```html theme={null}
```
4. Set the page body to have no padding/margin for full-screen experience
### Framer
1. Create a new page
2. Add a Code component from the components panel
3. Set it to "Custom Code" and paste:
```html theme={null}
```
4. Set the page layout to fill the screen for best results
***
## Styling & Layout
### Container Styling
The AI Page fills its parent container. For best results:
```css theme={null}
#bubblav-ai-page {
width: 100%;
height: 100vh; /* Full viewport height */
margin: 0;
padding: 0;
overflow: hidden; /* Prevent scrollbars */
}
```
### Theme Options
Choose between two built-in themes:
**Light Theme:**
```html theme={null}
data-theme="light"
```
**Dark Theme:**
```html theme={null}
data-theme="dark"
```
The theme controls the color scheme of the entire interface including the chat sidebar, message bubbles, and input area.
***
## Advanced Configuration
### Custom Titles
Change the header text:
```html theme={null}
data-title="How can I help you today?"
```
### Custom Placeholder
Change the input placeholder:
```html theme={null}
data-placeholder="Type your question here..."
```
***
## How It Works
1. **Script loads**: The ai-page.js loader fetches the latest version
2. **Widget initializes**: React component mounts in the container
3. **User sends message**: Chat streams responses in real-time
4. **Sources displayed**: AI responses include citations from your knowledge base
5. **Conversation history**: Chat persists during the session
***
## Best Practices
The AI Page is designed for full-page experiences. Use it on dedicated routes like `/help`, `/support`, or `/ai-chat`.
Choose light or dark theme based on your website's design for seamless integration.
Customize the title and placeholder to match the purpose of your page (e.g., "Product Support" vs "Sales Assistant").
Ensure your API endpoint is accessible and properly configured before going live.
The AI Page uses your plan's message limits. Monitor usage in your dashboard.
***
## Troubleshooting
* Verify the container div with `id="bubblav-ai-page"` exists
* Check browser console for JavaScript errors
* Ensure your API key is correct
* Confirm the script URL is loading (check Network tab)
* Verify `data-api-url` points to a valid endpoint
* Check CORS settings on your API
* Ensure your API key is valid and not expired
* Review browser console for specific error messages
* Ensure parent container has defined height
* Check for CSS conflicts from your site's stylesheets
* Verify `overflow: hidden` on the container
* Test in different browsers
* The widget uses lazy loading for optimal performance
* Initial load may take 1-2 seconds
* Subsequent loads are faster due to browser caching
* Check your network connection
***
## Comparison: AI Page vs Widget
| Feature | AI Page | Widget |
| --------------- | -------------------- | ----------------- |
| Layout | Full-page immersion | Floating bubble |
| Best for | Dedicated help pages | Site-wide support |
| Screen usage | 100% viewport | Minimal footprint |
| User experience | Focused conversation | Quick assistance |
| Installation | Per page | Site-wide |
Use both! Install the widget sitewide for quick help, and add the AI Page to your dedicated support page for in-depth conversations.
***
## Next Steps
Add content for the AI to reference
Customize your chatbot appearance
# Best Practices
Source: https://docs.bubblav.com/user-guide/best-practices
Guide to getting the most out of BubblaV for your customers
To ensure your BubblaV chatbot provides the best possible support to your customers, follow these best practices for content management, testing, and continuous improvement.
## 1. Effective Content Crawling
The foundation of a smart chatbot is a comprehensive knowledge base.
* **Start with a thorough crawl**: When setting up, ensure you crawl your main documentation, help center, and landing pages.
* **Verify status**: Check the **Knowledge** tab to ensure all pages are "Indexed".
## 2. Testing in the Design Page
Before deploying or after making changes, always use the testing function on the **Design** page.
1. Navigate to your website dashboard and click **Design**.
2. The chat preview on the right side simulates the real user experience.
3. **Ask specific questions**: Ask about pricing, specific features, return policies, or edge cases.
4. **Verify citations**: Check that the bot is citing the correct pages from your site.
## 3. Resolving Content Gaps
When you spot an incorrect or suboptimal answer during testing:
* Go to the **Knowledge** section -> **Content Gaps**.
* BubblaV automatically flags questions that the AI struggled with.
* **Add a Q\&A Entry**: You can convert an unanswered question into a precise, hand-crafted Q\&A pair.
* This is perfect for "sensitive" questions or brand-specific phrasing that might not be clear in the raw web text.
## 4. Adding Manual Q\&A
Sometimes your website doesn't explicitly state the answer to a common question (e.g., "Do you offer a non-profit discount?") or the info is scattered.
* Go to **Knowledge** > **Q\&A**.
* Add a **Q\&A Entry** (e.g., Question: "Do you offer discounts?", Answer: "Yes, we offer...").
* This fills gaps without needing to create new public web pages.
## 5. Monitoring Content Gaps
Your chatbot improves over time if you listen to what users are asking.
* **Check Top Unanswered Questions**: Periodically review usage reports to see what questions the bot couldn't answer.
* **Identify Gaps**: If users ask about a feature you haven't documented, that's a content gap.
* **Action**:
* Add a new section to your website and re-crawl.
* Or add a manual Q\&A entry in the **Q\&A** tab to address it immediately.
By following this loop—**Crawl**, **Test**, **Q\&A**, and **Monitor**—you will build a powerful automated support agent that your customers love.
# Billing & Plans
Source: https://docs.bubblav.com/user-guide/billing
Manage your subscription, billing details, and usage
BubblaV offers flexible pricing plans to scale with your business needs. You can manage your subscription, view invoices, and track usage directly from the dashboard.
## Subscription Plans
We offer plans to suit different needs:
Perfect for testing and personal projects.
* **Price**: \$0/month
* 1 Website
* 50 pages (web + files + text)
* 100 messages/month
* 100 MCP API calls/month
* 7 days retention
* Built-in integrations
* Human handoff (chatbot → human)
* Email to visitors
For growing businesses needing advanced features. **Start with a 14-day free trial.**
* **Price**: \$49/month (\$39/month annually, save \$120/year)
* Everything in Free
* 5 Websites
* 5,000 pages (web + files + text) per website
* 5,000 messages/month
* 5,000 MCP API calls/month
* 1 year retention
* Advanced data sources and reports
* Live Chat Dashboard (real-time takeover)
* Human handoff scenarios (AI intent-based routing)
* Integrations (Zendesk, HubSpot, Attio) and Custom tools
* Custom branding (remove "Powered by")
* 3 team member seats
* Weekly data sync
## Managing Your Subscription
To access billing settings:
1. Click your **user avatar** in the top-right corner of the dashboard
2. Select **Subscription** from the menu
You can also go directly to [bubblav.com/dashboard/subscription](https://www.bubblav.com/dashboard/subscription).
### Upgrading Your Plan
1. Navigate to the **Subscription** page (via user avatar menu or direct link).
2. Scroll down to the **Available Plans** section.
3. Click **Upgrade** on your desired plan.
4. Follow the checkout prompts to complete the purchase.
### Free Trial
The Pro plan includes a 14-day free trial for new customers. You get full access to all Pro features during the trial period.
* **Eligibility**: Available to new customers who haven't had a paid subscription before
* **Card Required**: Your payment card is required at signup but won't be charged until the trial ends
* **Trial Duration**: 14 days from signup
* **Automatic Conversion**: After the trial, your subscription automatically converts to a paid Pro plan
* **Reminder**: We'll send you a reminder email 2 days before your trial ends
* **Cancel Anytime**: If you cancel during the trial, you won't be charged at all
To start a free trial, click **Start 14-Day Free Trial** on the Pro plan card in the Subscription page.
### Message Usage & Limits
Your plan includes a monthly allowance of AI responses (messages).
* **Reset Schedule**:
* **Paid Plans**: Usage resets on your monthly billing date (e.g., if you subscribed on the 14th, it resets on the 14th of each month).
* **Free Plan**: Usage resets on the 1st of every calendar month.
* **Tracking Usage**: The Subscription page shows a real-time progress bar of your message consumption.
* **Overages**: If you run out of messages, your chatbot will stop replying until the next cycle or until you purchase an add-on.
* **Add-on Packs**: You can buy "Extra Message Packs" (1,000 messages for \$5) that never expire and are used after your monthly allowance is exhausted.
### MCP API Call Quotas
MCP API calls are tracked separately from your AI message usage.
* **Free**: 100 MCP API calls/month
* **Pro**: 5,000 MCP API calls/month
* **Reset Schedule**: MCP API usage resets on a rolling 30-day window from your first MCP call in the current cycle.
* **Tracking Usage**: You can check current MCP API usage from your website settings in the dashboard.
* **When Limit Is Reached**: MCP requests return a rate limit error until the quota resets.
### Data Sync Frequency
BubblaV automatically syncs your data to keep your chatbot up-to-date. The frequency depends on your plan:
* **Free**: Every 30 days
* **Pro**: Every 7 days
This ensures your chatbot always has the latest information from your website and connected sources.
## Plan Features
### Free Plan Features
The Free plan includes essential features for testing:
* Basic AI chatbot functionality
* Built-in integrations (no external tools)
* Core analytics dashboard
* Message & conversation trends
* Export report data
### Pro Plan Features
The Pro plan unlocks advanced capabilities:
The AI automatically detects when it can't help and escalates to a human agent. It collects visitor information, creates a live support session, and generates external support tickets (Zendesk, HubSpot, etc.) for seamless follow-up.
Take over conversations in real-time with the Live Chat Dashboard. Monitor active conversations, see what visitors are typing, and jump in instantly when needed. Provides full control to handle complex queries personally.
Access detailed analytics including:
* Most active times
* Conversation flow visualization
* Visitor and conversation geography
* Top unanswered questions
* Bad feedback conversations
* Most visited links
* Leads captured
Connect with external tools:
* Zendesk (tickets and knowledge base)
* HubSpot (CRM and tickets)
* Attio (CRM)
* Custom tools
* MCP Servers (Model Context Protocol) - Connect to any external API or service
Remove the "Powered by BubblaV" branding and fully customize the widget appearance to match your brand.
## Billing Providers
We support billing through different providers depending on how you signed up:
### Polar
For users who sign up directly on BubblaV (non-Shopify merchants).
* **14-day free trial** available on Pro plan for new customers
* Invoices emailed automatically
* Choose monthly or yearly billing (save 20% with annual)
### Shopify
For users who installed BubblaV via the Shopify App Store.
* Charges appear on Shopify bill
* Upgrades/downgrades via Shopify billing
* **Note**: Shopify billing only supports monthly billing cycles
* Usage tracking in BubblaV dashboard
## Cancellation
You can cancel your subscription at any time by downgrading to the Free plan:
1. Click your **user avatar** in the top-right corner and select **Subscription**, or go to [bubblav.com/dashboard/subscription](https://www.bubblav.com/dashboard/subscription)
2. Click **Downgrade to Free** on your current plan
3. Confirm the downgrade when prompted
4. Your plan will remain active until the end of the current billing period
**During Free Trial**: If you cancel during your 14-day free trial, you won't be charged at all and your account will revert to the Free plan immediately.
# Forms
Source: https://docs.bubblav.com/user-guide/forms
Collect structured data from visitors through AI-powered forms
Forms let your AI chatbot collect structured data from visitors—like feedback, contact details, or survey responses—directly inside the chat. Instead of redirecting visitors to external pages, the chatbot presents a form when it detects the right intent.
## How It Works
1. You **create a form** with the fields you need
2. You give the AI **instructions** on when to show it
3. When a visitor asks something relevant, the AI **presents the form** in the chat
4. The visitor **fills it out and submits**—you get the data instantly
The AI decides when to show a form based on your instructions. Write clear, specific instructions so the AI triggers the form at the right moment.
***
## Creating a Form
Go to **Dashboard** → select your website → **Forms** in the sidebar
Click the **Create Form** button to open the form builder.
* **Name** (required): A clear name like "Product Review Form" or "Contact Request"
* **Description**: Brief text shown to visitors above the form
* **AI Instructions**: Tell the chatbot *when* to show this form (e.g., "Show when a visitor wants to leave a product review or feedback")
Click **Add Field** and configure each field's type, label, placeholder, and whether it's required. See [Field Types](#field-types) below for all options.
The live preview on the right shows how your form will look to visitors. Click **Create Form** when you're done.
Write specific AI instructions. "Show when visitor asks about pricing or quotes" works better than "Show when needed."
***
## Field Types
Forms support 8 field types to cover most data collection needs:
| Type | Description | Use For |
| ---------------------- | --------------------------------- | ------------------------- |
| **Text** | Single-line text input | Names, short answers |
| **Email** | Email input with validation | Email addresses |
| **Number** | Numeric input | Quantities, ages |
| **Long Text** | Multi-line text area | Feedback, descriptions |
| **Dropdown** | Select one from a list | Categories, departments |
| **Radio Buttons** | Choose one option | Yes/No, ratings, choices |
| **Checkbox** | Single toggle (checked/unchecked) | Agreements, confirmations |
| **Rating (1-5 Stars)** | Star rating selector | Satisfaction scores |
### Field Configuration
Each field has:
* **Label** (required): The question or prompt shown to visitors
* **Type**: The input type from the list above
* **Placeholder**: Hint text inside the field (not available for Checkbox and Rating)
* **Required**: Whether the visitor must fill in this field before submitting
For **Dropdown** and **Radio Buttons**, you also configure a list of options that the visitor can choose from.
### Reordering Fields
Use the up/down arrows on each field to change the order. Fields appear to visitors in the order you set.
***
## AI Instructions
AI Instructions tell your chatbot when to display a form. This is the most important part of form configuration—if the instructions are unclear, the AI won't know when to act.
### Writing Good Instructions
* "Show when a visitor wants to leave a product review or feedback about their purchase"
* "Show when a visitor asks for a quote, pricing information, or wants to discuss custom plans"
* "Show when a visitor expresses interest in becoming a partner or reseller"
* "Show when a visitor wants to schedule a demo or consultation call"
* "Show when needed" (too vague)
* "Show form" (no context)
* "When customer" (incomplete)
You can create multiple forms per website, each with different AI instructions. The AI will pick the right one based on the visitor's message.
***
## Enabling and Disabling Forms
Forms are **enabled by default** when created. You can toggle a form on or off from the Forms list page without deleting it.
* **On**: The AI can see and show this form to visitors
* **Off**: The form is hidden from the AI—visitors won't see it
***
## Viewing Submissions
Every form submission is stored and accessible from your dashboard.
### View Submissions for a Form
Each form in the Forms list has a **submissions count** badge. Click the form's menu to view its submissions. Each submission shows:
* All field values with their labels
* Formatted values (e.g., "4/5 stars" for ratings)
* Submission date and time
* Visitor ID and conversation ID
### Email Notifications
By default, you receive an email notification when a visitor submits a form. The email includes:
* Form name
* Website name
* All submitted field values
* A link to view the submission in your dashboard
***
## Sample Use Cases
### Product Reviews
Collect customer feedback with ratings and detailed reviews.
**Name**: Product Review
**AI Instructions**: "Show when a visitor wants to leave a review, feedback, or rate a product"
1. Text — "Product Name" (required)
2. Rating — "Overall Rating" (required)
3. Long Text — "Your Review" (required)
4. Text — "Reviewer Name"
***
### Quote Requests
Capture lead information when visitors ask about pricing.
**Name**: Request a Quote
**AI Instructions**: "Show when a visitor asks about pricing, quotes, custom plans, or wants to discuss business terms"
1. Text — "Full Name" (required)
2. Email — "Email Address" (required)
3. Text — "Company Name"
4. Dropdown — "Interest" (required): Sales, Support, Partnership, Other
5. Long Text — "Tell us about your needs" (required)
***
### Customer Support Tickets
Collect issue details before escalating to your support team.
**Name**: Support Ticket
**AI Instructions**: "Show when a visitor has a technical problem, wants to report a bug, or needs help that requires follow-up"
1. Text — "Full Name" (required)
2. Email — "Email Address" (required)
3. Dropdown — "Issue Type" (required): Billing, Technical, Account, Other
4. Text — "Order/Reference Number"
5. Long Text — "Describe the issue" (required)
***
### Event Registration
Sign visitors up for webinars or events.
**Name**: Event Registration
**AI Instructions**: "Show when a visitor wants to register for an event, webinar, workshop, or demo"
1. Text — "Full Name" (required)
2. Email — "Email Address" (required)
3. Text — "Company"
4. Number — "Number of Attendees"
5. Dropdown — "Session" (required): Morning, Afternoon, Evening
***
### Newsletter Signup
Collect email subscriptions directly in chat.
**Name**: Newsletter Signup
**AI Instructions**: "Show when a visitor wants to subscribe to the newsletter, get updates, or stay informed"
1. Text — "First Name" (required)
2. Email — "Email Address" (required)
3. Checkbox — "I agree to receive marketing emails" (required)
***
## Editing and Deleting Forms
### Edit a Form
Click the pencil icon on any form to modify its name, description, AI instructions, or fields. Changes take effect immediately.
### Delete a Form
Click the trash icon and confirm. **Deleting a form permanently removes all its submissions**. This action cannot be undone.
Deleting a form also deletes all submissions for that form. Consider exporting important data before deleting.
***
## How Visitors Experience Forms
When a visitor interacts with your chatbot and the AI decides a form is relevant:
1. The AI sends a brief message (e.g., "I'd love to get your feedback! Please fill out this quick form:")
2. The form appears inline in the chat with all configured fields
3. The visitor fills in the fields and clicks **Submit**
4. Required fields are validated before submission
5. A success message confirms the submission
6. The conversation continues normally
Visitors never leave the chat—the entire experience happens inside the widget.
***
## Best Practices
3-5 fields is ideal. Long forms reduce completion rates.
Describe exactly when to show the form. Vague instructions lead to missed triggers.
Only mark fields as required if you truly need the data. Optional fields increase completion rates.
Use the preview in the form builder and test via the chatbot to verify the experience.
***
## Troubleshooting
* Check the form is **enabled** (toggle is On)
* Review your **AI Instructions**—make them more specific
* Try phrasing your test message differently to match the instructions
* Ensure the form has at least one field
* Check if multiple forms have overlapping AI instructions
* Make each form's instructions distinct and specific to its purpose
* Check the **Submissions** page in your dashboard
* Verify the form is enabled
* Check your email notifications settings
***
## Next Steps
Connect your chatbot to external APIs
Escalate to live agents
Optimize your chatbot setup
# Getting Started
Source: https://docs.bubblav.com/user-guide/getting-started
Start your journey with BubblaV in minutes
Welcome to BubblaV! This guide will help you create your account, set up your first chatbot, and get it live on your website in under 10 minutes.
## What You'll Need
Before starting, have these ready:
* An email address (or Google account)
* Your website URL
* A few minutes of your time
***
## Step 1: Create an Account
Go to [bubblav.com/login](https://www.bubblav.com/login)
Pick your preferred option:
* **Email**: Enter email and create a password
* **Google**: One-click sign up with your Google account
If using email, check your inbox and click the verification link
You'll be redirected to your dashboard automatically
Using Google is fastest—no email verification needed.
***
## Step 2: Choose Your Plan
BubblaV offers plans for every business size:
| Feature | Free | Pro (\$49/mo) |
| -------------------------- | ------ | ---------------------------- |
| **Messages/month** | 100 | 5,000 |
| **Pages crawled** | 50 | 5,000 |
| **Websites** | 1 | 5 |
| **Team members** | 1 | 3 |
| **Human handoff** | Yes | Yes |
| **Email to visitors** | Yes | Yes |
| **Live Support** | - | Yes |
| **Custom Tools** | Yes | Yes |
| **Remove branding** | - | Yes |
| **Conversation retention** | 7 days | 1 year |
| **Annual billing** | - | \$39/month (save \$120/year) |
Start with the **Free** plan to test everything. The **Pro** plan includes a **14-day free trial**—full access during the trial, cancel anytime at no cost. Annual billing saves 20% on all paid plans.
### Upgrading Later
1. Click your **user avatar** in the top-right corner
2. Select **Subscription** from the menu
3. Click **Upgrade Plan**
4. Select your desired plan
5. Enter payment details
6. Your new limits apply immediately
***
## Step 3: Create Your First Website
From the dashboard, click **+ New Website**
The full URL of your site (e.g., `https://example.com`)
Your website is created and ready to configure. We'll automatically fetch your favicon and site name if available.
### What Happens Next
After creating your website:
1. **Automatic crawl begins**: BubblaV scans your website to learn about your business
2. **Knowledge base populates**: Content from your pages is indexed
3. **Widget is generated**: A unique embed code is created for you
Crawling typically takes 2-5 minutes depending on your website size. You can continue setup while it runs.
***
## Step 4: Setup Wizard
The setup wizard guides you through essential configuration:
### Crawl Status
Monitor your website crawl:
* **In Progress**: Pages are being scanned
* **Completed**: All pages indexed successfully
* **Errors**: Some pages couldn't be accessed
### Design Preview
Quick customization in the **Design** tab:
* Choose your **brand colors**
* Select a **position** (bottom-right or bottom-left)
* Customize **bot identity** (Name, Avatar, Welcome Message)
* Preview how it looks in real-time
### Installation Code
Get your embed code:
```html theme={null}
```
***
## Step 5: Test Your Chatbot
Before going live, test your chatbot:
Click **Design** in the sidebar to open the widget configuration and live preview.
Try questions your customers might ask:
* "What are your shipping options?"
* "How do I contact support?"
* "What products do you sell?"
Verify the answers are accurate and helpful
If answers are wrong, add content to your knowledge base
***
## Quick Start Checklist
Track your progress through setup:
Sign up and verify your email
Create your first website in the dashboard
Wait for your website content to be indexed
Customize colors and appearance to match your brand
Verify responses are accurate in preview mode
Add the widget code to your website
Confirm the widget appears on your live site
***
## Common First Steps
After basic setup, consider these enhancements:
### Improve AI Knowledge
Add PDFs, documents with detailed info
Add specific answers for common questions
### Customize Experience
Match your brand colors and style
Set AI tone, language, notifications
### Connect Integrations
Connect for order lookups
Enable appointment booking
See all integrations
***
## Troubleshooting Setup
* Check your spam/junk folder
* Ensure you entered the correct email
* Request a new verification email
* Try signing up with Google instead
* Large websites take longer (100+ pages)
* Check if your site blocks bots (robots.txt)
* Try adding pages manually if crawl fails
* Refresh the page
* Clear browser cache
* Check browser console for errors
* Ensure JavaScript is enabled
* Review what content was crawled
* Add missing information via Q\&A entries
* Check "Content Gaps" for common unanswered questions
***
## Getting Help
Need assistance? Here's how to get help:
* **Documentation**: You're already here! Browse the guides.
* **Email Support**: Contact [support@bubblav.com](mailto:support@bubblav.com)
* **Live Chat**: Chat with our bot on [bubblav.com](https://www.bubblav.com)
Pro and Turbo plans include priority support with faster response times.
***
## Next Steps
Ready to continue? Here's what to do next:
Add the chatbot to your website
Add more knowledge for better answers
# Human Handoff Scenarios
Source: https://docs.bubblav.com/user-guide/human-handoff
Configure questions that should always be handled by your team
# Human Handoff Scenarios
Configure specific questions or intents that should always be handled by human agents. When a visitor's message matches a configured scenario, the bot will automatically collect their information and connect them with your team.
## Feature Overview
Human Handoff Scenarios use AI intent matching to intelligently detect when a visitor needs human assistance. Instead of relying on exact keyword matches, you can describe scenarios in natural language and the AI will understand when to trigger a handoff.
## Plan Availability
This feature is available on **Pro** plans.
## Setting Up Handoff Scenarios
1. Navigate to **Behavior** > **Human Handoff** in your dashboard
2. Click **Add Scenario**
3. Describe when to handoff in natural language
4. Optionally provide a custom response message
5. Click **Add Scenario**
## Example Scenarios
### Sales Inquiries
* "When someone asks about enterprise pricing"
* "Custom integration or development requests"
* "Partner or reseller inquiries"
### Support Issues
* "Technical support requests"
* "Billing or account issues"
* "Feature requests or custom development"
## How It Works
When a visitor sends a message:
1. **Intent Matching**: AI analyzes the message against your configured scenarios
2. **Match Detection**: If a scenario matches, handoff is triggered
3. **Info Collection**: Bot asks for visitor's email and name
4. **Live Support Created**: A live support session is created
5. **Team Notified**: You receive an email notification
## Best Practices
### Be Specific
* Good: "When someone asks about enterprise pricing plans"
* Poor: "pricing questions"
### Use Natural Language
* Good: "Partner or reseller partnership inquiries"
* Poor: "partner"
### Review Content Gaps
Check the **Knowledge** > **Insights** > **Content Gaps** tab to see what questions visitors ask that the AI struggles with. These may be good candidates for handoff scenarios.
# Installation
Source: https://docs.bubblav.com/user-guide/installation
Add the chatbot widget to your website
Install BubblaV on any website in minutes. Choose your platform for step-by-step instructions.
## Using AI Builders (Lovable, v0, Bolt, Cursor)
Building with an AI-powered tool? Copy the prompt below and paste it directly into your AI builder to integrate BubblaV automatically.
This works with Lovable, v0, Bolt, Cursor, Windsurf, and any other AI coding assistant.
```text expandable theme={null}
Add the BubblaV AI chatbot widget to this project.
**Option 1: NPM Package (Recommended for React, Vue, Angular)**
Install:
React: npm install @bubblav/ai-chatbot-react
Vue: npm install @bubblav/ai-chatbot-vue
Angular: npm install @bubblav/ai-chatbot-angular
Import and add to your root component or layout:
React — import { BubblaVWidget } from '@bubblav/ai-chatbot-react';
Vue — import { BubblaVWidget } from '@bubblav/ai-chatbot-vue';
Angular (standalone) — import { BubblaVWidgetComponent } from '@bubblav/ai-chatbot-angular';
Add BubblaVWidgetComponent to the component's imports array, then:
IMPORTANT — For Vite-based projects (Lovable, Bolt, v0, plain Vite), add this to
vite.config.ts to prevent duplicate-React conflicts:
resolve: { dedupe: ['react', 'react-dom'] }
**Option 2: Script Tag (fallback — works with any framework)**
Add this before