# ChatbotGen documentation > The complete ChatbotGen documentation in one file. ChatbotGen is a no-code platform for building AI chatbots trained on your own content (files, website URLs, question-and-answer pairs) and deploying them to a website widget, WhatsApp, and Telegram. Source: https://www.chatbotgen.com/docs — index and per-page links at https://www.chatbotgen.com/llms.txt --- # Getting Started: Welcome Source: https://www.chatbotgen.com/docs/getting-started/welcome A map of ChatbotGen — what you can edit and where to find it in the app. This page is a map of the app: the tabs you'll see on every chatbot, the workspace-level pages, and what lives where. ## The per-chatbot tabs Open any chatbot and you'll see the same row of tabs at the top. Seven are always visible. Two more — **Handoff** and **Leads** — appear only when their matching tool is turned on for that chatbot. | Tab | Visibility | Docs | |---|---|---| | **Overview** | Always | [Overview](https://www.chatbotgen.com/docs/chatbots/overview) | | **Settings** | Always | [Chatbot settings](https://www.chatbotgen.com/docs/chatbots/settings) | | **Widget** | Always | [Widget appearance](https://www.chatbotgen.com/docs/customization/widget-appearance) | | **Training** | Always | [How training works](https://www.chatbotgen.com/docs/training/overview) | | **Conversations** | Always | [Conversations overview](https://www.chatbotgen.com/docs/conversations/overview) | | **Handoff** | When Human Handoff is enabled | [Handoff dashboard](https://www.chatbotgen.com/docs/conversations/handoff-dashboard) | | **Leads** | When Lead Capture is enabled | [Lead capture](https://www.chatbotgen.com/docs/tools/lead-capture) | | **Tools** | Always | [What are tools?](https://www.chatbotgen.com/docs/tools/overview) | | **Channels** | Always | [Channels overview](https://www.chatbotgen.com/docs/channels/overview) | | **Sandbox** | Always | — | ## What you can edit On the **Settings** tab: - Name - Slug (the short URL-safe identifier) - Website - Description - System prompt — the instructions that shape how the chatbot replies On the **Widget** tab: - Widget title - Initial message (default: *"Hello, how can I help you?"*) - Input placeholder (default: *"Ask me anything..."*) - Primary, secondary, and background colors - Suggested messages - "Powered by ChatbotGen" toggle — paid plans only - Widget icon (upload your own) The AI model and embedding model are picked for you and aren't exposed in the UI. ## Knowledge source types The Training tab lets you teach your chatbot from four kinds of sources: - **Files** — PDF, DOCX, and TXT uploads (up to 10 MB each) - **Website URLs** — single pages or a full crawl - **Questions & Answers** — a question, optional variations, and an answer - **Text snippets** — paste content directly Each source has its own status (pending, processing, completed, or failed) while training runs. ## Available channels Three tiles on the **Channels** tab: - Web widget - WhatsApp - Telegram ## Available tools Three tools ship with every workspace: - **Lead Capture** — collect a visitor's contact info during the chat - **Human Handoff** — let the chatbot pause and route the conversation to a real person - **Wasi Real Estate** — search listings from a Wasi CRM Tools are available on the Growth plan and above. ## Workspace-level pages Outside any single chatbot, you'll also find: - `/app` — your dashboard - `/app/chatbots` — the list of every chatbot in the workspace - `/app/members` — teammates and invitations - `/app/invitations` — invitations pending for your email - `/app/billing` — plans and subscription - `/app/usage` — this month's usage - `/app/settings/profile`, `/app/settings/password`, `/app/settings/account`, `/app/settings/notifications` ## Where to go next - [Create your first chatbot](https://www.chatbotgen.com/docs/getting-started/create-your-first-chatbot) — walks through the onboarding wizard screen by screen - [Best practices](https://www.chatbotgen.com/docs/getting-started/best-practices) — the in-app Prompt Tips --- # Getting Started: Create your first chatbot Source: https://www.chatbotgen.com/docs/getting-started/create-your-first-chatbot The onboarding flow — sign up, pick a template, and land on a fresh chatbot. This walks through the full flow end-to-end. ## 1. Sign up The signup page has: - Card title: **Create your account** - Description: *"Start building chatbots in minutes"* - A **Continue with Google** button at the top - A separator with *"or"* in the middle - Four fields: - **First name** (optional) - **Last name** (optional) - **Email** (required) — placeholder: *"you@example.com"* - **Password** (required) — at least 6 characters - Submit button: **Create account** (flips to *"Creating account..."* while it submits) - Footer link: *"Already have an account? Log in"* Only **email** and **password** are required. If you leave first/last name blank, your profile just starts empty — you can fill them in later. ## 2. Onboarding, step 1: welcome Right after signup you land on the onboarding welcome screen: - Heading: **Welcome — let's build your AI chatbot.** - Subtitle: *"Four quick steps and your chatbot is live. You can revisit any step later from the chatbot dashboard — nothing is locked in."* - A 2×2 grid of four cards previewing what's coming: 1. 📚 **Train with your content** — *"Upload documents, paste URLs, or write Q&A. Your bot learns from whatever you give it."* 2. 🎨 **Customize the look** — *"Pick colors, wording, and a welcome message that matches your brand."* 3. 💬 **Test it live** — *"Chat with your bot right away. Edit the prompt or add knowledge until replies feel right."* 4. 🚀 **Deploy anywhere** — *"Drop in a script tag, share a link, or plug WhatsApp / Telegram in one click."* - Primary button: **Let's build it →** ## 3. Onboarding, step 2: create the chatbot Click through from the welcome screen and you get the **create-a-chatbot** form. - Heading: **Create a chatbot in 2 minutes** - Subtitle: *"Start from a template or build from scratch — you can change everything later."* Three fields in a single card: - **Name** *(required)* — placeholder: *"My Support Bot"* - **Website URL** — placeholder: *"example.com"*. Hint: *"Optional — we'll use this to tailor the chatbot's tone."* - **Description** — placeholder: *"Brief description of what this chatbot does"*. Hint: *"Optional — helps you find the bot later."* Below the card, a template picker with the heading **Or start from a template**. Clicking a template card: - Selects it (click again to deselect) - Fills in the **Name** field with the template's name if you hadn't typed anything yet The submit button label depends on state: - While submitting: *"Creating…"* - With a template selected: **Create from [template name]** - Otherwise: **Create from scratch** The button is disabled until you've entered a name. ## 4. After creating Once the chatbot exists, you land inside its tabs. You can revisit everything: - [Chatbot settings](https://www.chatbotgen.com/docs/chatbots/settings) to edit the name, prompt, website, and description - [How training works](https://www.chatbotgen.com/docs/training/overview) to add knowledge - [Widget appearance](https://www.chatbotgen.com/docs/customization/widget-appearance) to customize colors and copy - [Channels overview](https://www.chatbotgen.com/docs/channels/overview) to wire up the web widget, WhatsApp, or Telegram ## What's not in the wizard The wizard doesn't ask about: - The AI model — there's a platform default and no picker - Widget colors — those live on the Widget tab after creation - Channel setup — done after the chatbot exists - Plan selection — handled separately on the [billing page](https://www.chatbotgen.com/docs/billing/plans) --- # Getting Started: Best practices Source: https://www.chatbotgen.com/docs/getting-started/best-practices The in-app Prompt Tips sidebar and example prompt, quoted verbatim. The chatbot editor has a sidebar next to the **System Prompt** textarea. Everything below is a verbatim quote of what that sidebar shows — no editorial additions. ## The System Prompt card The card that holds the textarea has: - Heading: **System Prompt** - Subheading: *"Instructions your chatbot follows in every conversation"* - A **Use a Template** / **Hide Templates** toggle button - A 10-row textarea with placeholder *"You are a helpful assistant for [Company Name]. Your role is to..."* - A character count line below the textarea: - When the prompt is non-empty: *"{N} characters"* - When the prompt is empty: *"No prompt set — the chatbot will use a generic helpful assistant prompt"* ## Prompt Tips (verbatim) The sidebar card titled **Prompt Tips** lists: 1. *"Define a clear role: \"You are a customer support agent for [Company]\""* 2. *"Set boundaries: what the bot should and shouldn't discuss"* 3. *"Specify tone: friendly, professional, casual, formal"* 4. *"Add escalation rules: when to hand off to a human"* 5. *"Include key info: business hours, return policy, pricing"* ## Example prompt (verbatim) A dashed callout beneath the tips, header **Example prompt**: > *"You are the support assistant for Acme Inc. Answer questions about our products using the provided context. Be friendly and concise. If you don't know the answer, say so and offer to connect them with our team at support@acme.com. Our business hours are Mon-Fri 9am-5pm EST."* ## Template gallery Clicking **Use a Template** reveals a 2-column gallery. Each card shows an icon, the template name, and a short description. Clicking a template **only replaces the system prompt** — your chatbot's name, website, description, and every widget setting stay exactly as they were. Seven templates ship with the app. ## Saving The submit button shows: - Default label: **Save Changes** - While submitting: *"Saving..."* Once you save, the new prompt applies to every new conversation immediately. --- # Building chatbots: Overview Source: https://www.chatbotgen.com/docs/chatbots/overview The chatbots list, the per-chatbot sub-nav, and what the Overview page shows. The **Chatbots** section is where you manage every bot on your account. The list page shows everything at a glance; opening any chatbot reveals its own eight-tab sub-nav. ## The chatbots list Top of the page: an eyebrow "Chatbots", a heading **Your fleet, organized.**, and a header row with counts. ```ascii ┌──────────────────────────────────────────────────────────────┐ │ CHATBOTS │ │ Your fleet, organized. [ + New chatbot ]│ │ 3 total · ● 2 ready · ● 1 training · 2 of 5 remaining │ └──────────────────────────────────────────────────────────────┘ ``` The counts are live — total, ready (green dot), training (pulsing amber) — and you see `{remaining} of {max} remaining` against your plan's chatbot limit. The **+ New chatbot** button goes to the onboarding wizard. ## Toolbar Below the header, when you have at least one chatbot: - **Search** — input with placeholder `Search chatbots...` - **Filter pills** — **All** / **Ready** / **Training** - **View toggle** — grid icon or list icon ## Empty state With zero chatbots, the page shows: > **No chatbots yet** > > Create your first chatbot to get started. Train it with docs, URLs, or Q&A, then deploy anywhere. > > [ Create chatbot ] If filters exclude every chatbot, you get a dashed panel: > No chatbots match your filters. > [Clear filters] ## Grid card vs list row Each card shows: - A square avatar with the chatbot's first initial - The name - A status badge — `ready`, `training`, or the raw status - Two stats: **Messages** (total) and **Status** (`Live` when ready, otherwise `Setup`) ```ascii ┌──────────────────────────────────┐ │ [S] Support bot ● ready │ │ │ │ MESSAGES │ STATUS │ │ 1.2K │ Live │ └──────────────────────────────────┘ ``` List view uses the same info in a denser horizontal row. ## The chatbot Overview page Clicking a chatbot opens its Overview. Above everything, a sub-nav with eight tabs (see below). Then: 1. **Stats grid** — four cards: Conversations, Messages, Documents, URLs. Conversations/Documents/URLs are links that jump to the relevant tab. 2. **Deploy your chatbot** — two code blocks showing the embed script and the shareable link, plus **All embed options →** to the Channels page. 3. **Channels** mini-panel — three badges (Web, WhatsApp, Telegram) with status dots. Web is always active; WhatsApp/Telegram turn green only when connected. 4. **Setup checklist** — 6-step progress toward deploy: ```ascii ┌─ Setup checklist ────────────────────── 50% complete ─┐ │ ██████████░░░░░░░░░░ │ │ │ │ ✓ Set a custom system prompt │ │ ✓ Add training data (docs, URLs, Q&A) │ │ ✓ Customize the widget appearance │ │ ○ Receive your first conversation │ │ ○ Connect WhatsApp │ │ ○ Connect Telegram │ │ │ │ [ Edit Settings ] [ Test Widget ] │ └───────────────────────────────────────────────────────┘ ``` Each incomplete item is a link that goes straight to the relevant tab. **Test Widget** opens the shareable link in a new tab. ## The sub-nav (eight tabs) Every chatbot page shares the same sub-nav, in this order: - **Overview** — this page - **Settings** — name, prompt, templates, delete — see [Chatbot settings](https://www.chatbotgen.com/docs/chatbots/settings) - **Widget** — [Widget appearance](https://www.chatbotgen.com/docs/customization/widget-appearance) - **Training** — knowledge sources (Files, URLs, Q&A, Text) - **Conversations** — message history - **Tools** — AI agent capabilities - **Channels** — Web widget, WhatsApp, Telegram - **Sandbox** — live-preview testing ## Status states A chatbot's status is one of: - **ready** — shown as a green "Live" badge - **training** — pulsing amber badge while embeddings are running - Anything else falls back to a neutral pill with the raw status string --- # Building chatbots: Chatbot settings Source: https://www.chatbotgen.com/docs/chatbots/settings Name, website, description, and system prompt on the Edit page. The **Edit** page (accessible from **Edit Settings** on the overview, or from the sub-nav) is where you tune the chatbot's identity and system prompt. ## The four editable fields ```ascii ┌─ General ─────────────────────────────────────────────────┐ │ Name │ │ [ My Chatbot ] │ │ │ │ Website │ │ [ https://example.com ] │ │ │ │ Description │ │ [ Brief description of what this chatbot does ] │ │ Optional — helps you identify this chatbot │ └───────────────────────────────────────────────────────────┘ ┌─ System Prompt ────────────────────────── [ Use a Template ] │ Instructions your chatbot follows in every conversation │ │ ┌──────────────────────────────────────────────────────┐ │ │ │ You are a helpful assistant for [Company Name]. │ │ │ │ Your role is to... │ │ │ │ │ │ │ └──────────────────────────────────────────────────────┘ │ │ 0 characters │ └────────────────────────────────────────────────────────────┘ [ Save Changes ] ``` - **Name** — short identifier, also used in the widget header by default - **Website** — optional, plain URL - **Description** — optional, internal only (users never see it) - **System Prompt** — the core instructions; see [System prompt](https://www.chatbotgen.com/docs/chatbots/system-prompt) for guidance Click **Save Changes** to persist. Prompt changes take effect on the next incoming message — no retrain needed. ## Using a template The **Use a Template** button opens a 2-column picker with all seven templates. Clicking one copies its prompt into the textarea — it does NOT change the chatbot's name, suggested messages, or colors. Your current prompt is overwritten. ## Prompt tips (sidebar) Next to the form, a tips panel highlights: - Define a clear role - Set boundaries - Specify tone - Add escalation rules - Include key info (hours, policies, pricing) An example prompt is shown right below for reference. ## What's *not* on this page There is **no model selector** in the Edit UI. Every chatbot uses the platform default model (`google/gemini-2.5-flash`) and embedding model (`openai/text-embedding-3-small`). We'll surface model choice when it makes sense as a product decision. Widget appearance, knowledge sources, channels, forms, and tools each live on their own dedicated page — this one is purely identity + prompt. ## Deleting a chatbot Scroll to the bottom of the Edit page for the **Danger zone**: ```ascii ┌─ Danger zone ─────────────────────────────────────────────┐ │ Delete this chatbot │ │ Removes the chatbot, its training data, and every │ │ conversation. Connected channels (WhatsApp, Telegram) │ │ are disconnected. This cannot be undone. │ │ │ │ [ Delete chatbot ] │ └───────────────────────────────────────────────────────────┘ ``` Clicking **Delete chatbot** opens a confirmation dialog that asks you to type the chatbot's name exactly before the **Delete forever** button activates. --- # Building chatbots: System prompt Source: https://www.chatbotgen.com/docs/chatbots/system-prompt The anatomy of a prompt that makes your chatbot feel purposeful, plus the seven built-in templates. The system prompt is the chatbot's hidden instructions — the text the AI reads before every visitor message. Small changes here produce big differences in how the chatbot behaves. ## Where to edit it Open your chatbot → **Edit Settings** → the **System Prompt** card. A 10-row textarea with a character counter below it. Placeholder text when empty: > You are a helpful assistant for [Company Name]. Your role is to... The sidebar shows prompt tips and an example. The **Use a Template** button reveals the seven starting points. ## Five ingredients of a strong prompt 1. **Identity** — who the chatbot is 2. **Scope** — what it helps with 3. **Boundaries** — what it refuses to do 4. **Tone** — how it sounds 5. **Escape hatch** — what it does when stuck The built-in tips panel spells it out: - Define a clear role: "You are a customer support agent for [Company]" - Set boundaries: what the bot should and shouldn't discuss - Specify tone: friendly, professional, casual, formal - Add escalation rules: when to hand off to a human - Include key info: business hours, return policy, pricing ## The seven built-in templates Each is a fully-written prompt you can start from. Clicking one replaces your current prompt text. | Template | Icon | Best for | |---|---|---| | Customer Support | 💬 | Answer questions from your docs, escalate to humans when unsure. | | Sales Assistant | 🎯 | Qualify leads, capture contact info, and book demos. | | Real Estate Agent | 🏠 | Property listings, schedule viewings, neighborhood info. | | E-commerce Helper | 🛍️ | Products, shipping, returns, and order status. | | Healthcare Receptionist | 🏥 | Appointments, insurance, and practitioner info. | | Restaurant Host | 🍽️ | Menu, reservations, hours, and dietary options. | | Education Advisor | 🎓 | Courses, enrollment, schedules, and campus info. | All seven explicitly include contact capture patterns (name, email, phone) where relevant, and include a "don't invent" guardrail. ## Iterating from real conversations The best prompt improvements come from watching real chats. Once a week, open **Conversations**, skim recent threads, and look for: - Answers that went off-script → add a line to the prompt about that topic - Repeated questions the bot dodged → add a Q&A pair ([learn more](https://www.chatbotgen.com/docs/training/questions-and-answers)) - Moments where a human was needed → enable [Human handoff](https://www.chatbotgen.com/docs/tools/human-handoff) (Business plan) ## Tips that consistently help - **Write rules, not paragraphs.** The AI follows bullet lists better than prose. - **Name the escape hatch.** "If you don't know, offer to connect them with support@acme.com" is a real instruction. "Be helpful" isn't. - **Include the specifics.** Business hours, policies, contact channels — put them in the prompt when they matter to every conversation. - **Keep it short.** Aim for under 1,000 tokens (~750 words). Long prompts are noise. ## Prompt vs knowledge When the chatbot gives a wrong answer, ask yourself: *is it missing facts, or is it using facts the wrong way?* - **Missing facts** → add training content - **Wrong tone, wrong scope, wrong format** → edit the system prompt Confusing these two is the most common reason chatbots stagnate. --- # Knowledge base: How training works Source: https://www.chatbotgen.com/docs/training/overview The four source types, how status flows, the character budget meter, and the action bar that tells you what to do next. "Training" in ChatbotGen means feeding your chatbot content so it can answer accurately. The **Training** tab is where that work happens. This page is the lay of the land — each source type has its own dedicated guide. ## Four source types Every chatbot can pull from four kinds of knowledge. The Training page has one tab per type, each with a live count: ```ascii ┌────────────────────────────────────────────────┐ │ Files (3) URLs (12) Q&A (8) Text (2) │ └────────────────────────────────────────────────┘ ``` - **Files** — PDFs, DOCX, TXT uploads. See [Upload files](https://www.chatbotgen.com/docs/training/upload-files). - **URLs** — single pages or whole-site crawls. See [Website URLs](https://www.chatbotgen.com/docs/training/website-urls). - **Q&A** — handwritten question/answer pairs with alternate phrasings. See [Questions & answers](https://www.chatbotgen.com/docs/training/questions-and-answers). - **Text** — raw text snippets you paste in. (Dedicated guide coming soon — for now, see the Text tab on your chatbot.) All four feed the same retriever. The chatbot doesn't care where a fact came from — it searches across everything. ## Status flow Each individual source carries its own status: - Files: `pending` → `processing` → `completed` (or `failed`) - URLs: `pending` → `crawling` → `completed` (or `failed`) - Text: `pending` → `processing` → `completed` (or `failed`) - Q&A: no visible status — pairs become retrievable as soon as they're saved Status updates arrive in real time — no need to refresh. ## The action bar Right under the sub-nav, a state-aware banner tells you exactly what's happening. Its message changes based on overall chatbot state: | Situation | Message | |---|---| | A crawl is running | *"Discovering pages — URLs will appear below as we find them…"* | | Training in progress | *"Training in progress…"* | | Over plan limit | *"Over plan limit — reduce training content to retrain."* | | Waiting on sources | *"Preparing N source(s) — retrain unlocks once they're ready."* | | Unsaved changes | *"You have unsaved changes — click **Retrain agent** to apply."* | | Nothing to do | *"Agent is up to date"* | The same banner shows aggregate stats (source count + characters used / max) and, when it makes sense, a **Retrain agent** button on the right. ## Character budget Right below the action bar, a **Training content** usage bar shows where you stand against your plan's total-characters-trained cap: ```ascii ┌──────────────────────────────────────────────┐ │ Training content │ │ ████████████████░░░░░ 380K / 400K │ └──────────────────────────────────────────────┘ ``` When your total would exceed the cap, the banner turns red and retrains are blocked. Either remove sources or upgrade your plan — see [Plans & pricing](https://www.chatbotgen.com/docs/billing/plans). ## What counts toward the character budget Only the *displayed* characters count: - **Files** — extracted text (not raw file bytes) - **URLs** — extracted page content (excluded URLs are ignored in the live total) - **Q&A** — question + answer + variations combined - **Text** — the raw snippet length So a 3 MB image-heavy PDF might extract very little, while a 300 KB text-only PDF might add hundreds of thousands of characters. Check the character count on each source after it finishes processing. ## Next steps - [Upload files](https://www.chatbotgen.com/docs/training/upload-files) — PDF / DOCX / TXT, up to 10 MB each - [Website URLs](https://www.chatbotgen.com/docs/training/website-urls) — single URL or whole-site crawl - [Questions & answers](https://www.chatbotgen.com/docs/training/questions-and-answers) — sharp pairs for the tricky questions - [Bulk Q&A import](https://www.chatbotgen.com/docs/training/csv-import) — up to 500 rows at once - [Retraining](https://www.chatbotgen.com/docs/training/retraining) — when to click **Retrain agent** --- # Knowledge base: Upload files Source: https://www.chatbotgen.com/docs/training/upload-files Train your chatbot with PDF, DOCX, or TXT files — up to 10 MB each. Files are the fastest way to seed a chatbot with existing content — help center PDFs, product sheets, policy docs, handbooks. ## Supported formats - `.pdf` - `.docx` - `.txt` Anything else is rejected by the file picker. There's no built-in OCR yet, so scanned-image-only PDFs won't extract any text. ## Upload flow In your chatbot, click **Knowledge** → **Files** tab. The page shows a drag-drop zone. ```ascii ┌─ Knowledge › Files ───────────────────────────────────────┐ │ Files (2) URLs Q&A Text │ │ ───────── │ │ │ │ ┌─────────────────────────────────────────┐ │ │ │ │ │ │ │ Drop files here or click to upload │ ← drop │ │ │ PDF, DOCX, or TXT — max 10MB │ │ │ │ │ │ │ └─────────────────────────────────────────┘ │ │ │ │ handbook.pdf 84 KB ● completed │ │ returns-policy.docx 12 KB ● processing │ └───────────────────────────────────────────────────────────┘ ``` Drag files in or click to pick. The form accepts multiple at once. ## The 10 MB limit Each file is capped at **10 MB**. The browser validates before upload — if you drop a bigger file you get: > File too large. Maximum size is 10MB. No partial uploads, no chunking. If you have a bigger PDF, split it with any PDF tool and upload the parts separately. ## How the upload actually runs 1. Your browser uploads the file straight to our file storage 2. Once the upload finishes, ChatbotGen starts a background job that extracts the text, splits it into passages, and indexes them That's why the status briefly shows **pending**, then **processing**, before flipping to **completed**. ## Plan limit errors Two reasons an upload can be rejected: - **Document count exceeded** — your plan has a per-chatbot document cap. Message: > File limit reached (N on your plan). Upgrade to add more. - **Character budget exceeded** — the file's text would push you past the total characters-trained cap. Message: > This file would exceed your plan's training limit. Upgrade to add more content. See [Plans & pricing](https://www.chatbotgen.com/docs/billing/plans) for the per-plan numbers. ## Replacing a file There's no in-place replace. Delete the old file (trash icon on its row), then upload the new one. Both actions flag the chatbot as needing a retrain — see [Retraining](https://www.chatbotgen.com/docs/training/retraining). ## Deleting a file Click the trash icon next to the file. The file, its indexed content, and its contribution to the character budget all go away immediately. The chatbot is flagged for retrain so the other sources stay consistent. --- # Knowledge base: Website URLs Source: https://www.chatbotgen.com/docs/training/website-urls Train on live web content — single pages or automatic site-wide crawls. URLs are the highest-leverage knowledge source when your content already lives on a public site. ChatbotGen scrapes the page, extracts readable text, and embeds it alongside your other training data. ## The two modes The URLs tab has two modes: **Add URL** for a single page, **Crawl Website** for bulk discovery. ```ascii ┌─ Knowledge › URLs ────────────────────────────────────────┐ │ [ Add URL ] [ Crawl Website ] │ │ ───────── │ │ │ │ (switches between two forms based on the mode) │ └───────────────────────────────────────────────────────────┘ ``` ## Add URL The simpler form. Takes a single page URL. ```ascii ┌─ Add URL ─────────────────────────────────────────────────┐ │ Add a specific page URL. The content will be extracted │ │ and used for training. │ │ │ │ [ example.com/about ] [ Add URL ] └───────────────────────────────────────────────────────────┘ ``` If you leave off the scheme, it's normalized to `https://`. ## Crawl Website For whole-site coverage, use Crawl Website. Paste the homepage and ChatbotGen discovers pages automatically — first from the sitemap, then falling back to HTML link scraping. ```ascii ┌─ Crawl Website ───────────────────────────────────────────┐ │ Enter your website's homepage. We'll check the sitemap │ │ and discover pages automatically. │ │ │ │ [ toptive.co ] [ Start Crawl ] │ │ │ │ Include paths (optional) Exclude paths (optional) │ │ [ /docs, /help ] [ /blog, /admin ] │ │ Only URLs starting with Skip URLs starting with │ │ these paths these paths │ └───────────────────────────────────────────────────────────┘ ``` After clicking **Start Crawl** you'll see: > Crawling website... URLs will appear as they're discovered. Pages show up in the URL list as the worker finds and queues them. Expect a few minutes for medium-sized sites. ## Include / exclude paths Both filters are comma-separated path prefixes. - **Include paths** — only keep URLs whose path starts with one of these. Example: `/help, /docs` keeps help center + docs, skips everything else. - **Exclude paths** — drop URLs whose path starts with one of these. Example: `/blog, /admin` skips blog posts and admin pages. Leave both blank to crawl everything the sitemap exposes (up to the hard ceiling — see below). ## Hard crawl ceiling A single crawl is capped at **1,000 URLs** regardless of plan. Bigger sites need to be narrowed via include paths, or multiple targeted crawls from different roots. Your plan's per-chatbot URL limit applies on top of this — see [Plans & pricing](https://www.chatbotgen.com/docs/billing/plans). ## Excluding a URL after the fact If a crawled page is noisy, open it and flip the **Exclude from search** toggle. The URL stays in your list (and in the database) but the retriever ignores it. Useful when you want an option to re-include later without re-crawling. Deleting the URL permanently removes it and frees up the character budget. ## Re-crawling URLs don't refresh automatically. To pick up changes on a page, use the row's **Re-crawl** action or re-trigger a crawl from scratch. For frequently-changing content (prices, inventory), consider a Q&A pair or tool integration instead. ## Troubleshooting - **Empty extraction** — the page is gated behind a login, or rendered in a format our scraper can't read. Try a different URL or paste the content as a [text snippet](https://www.chatbotgen.com/docs/training/text-snippets). - **Crawl returned 0 URLs** — `robots.txt` blocked us, or the homepage returns a 4xx/5xx. Confirm the site loads in an incognito window. - **Status stuck on `crawling`** — the worker is still running. For large sites this can take a few minutes. --- # Knowledge base: Questions & answers Source: https://www.chatbotgen.com/docs/training/questions-and-answers Handcrafted Q&A pairs with variations — the sharpest tool in the training box. Q&A pairs are high-priority training data. Use them when retrieval keeps missing a common question, when you want deterministic wording, or when a question just isn't covered by your files or URLs. ## Adding a Q&A In **Knowledge** → **Q&A** tab, fill in the form: ```ascii ┌─ New Q&A ─────────────────────────────────────────────────┐ │ │ │ TITLE (optional) │ │ [ Returns & refunds ] │ │ │ │ QUESTION │ │ [ What is your return policy? ] │ │ │ │ │ Alternate phrasings — each matched independently │ │ │ [ Variation 1 — e.g., "How do I return an item?" ] ✕│ │ │ [ Variation 2 ] ✕│ │ + Add variation │ │ │ │ ANSWER │ │ ┌──────────────────────────────────────────────────────┐ │ │ │ We offer a 30-day return policy for all products... │ │ │ │ │ │ │ └──────────────────────────────────────────────────────┘ │ │ │ │ [ Add Q&A ] │ └───────────────────────────────────────────────────────────┘ ``` ## The four fields - **Title** — optional, internal label. Useful when you have dozens of Q&A pairs and want to tell them apart at a glance. - **Question** — required. The canonical phrasing. Keep it close to how a real user would ask. - **Variations** — optional. Each one is retrieved independently, so add a few different phrasings users might try. Click **Add variation** to add as many as you need; click the × to remove one. - **Answer** — required. Can be several sentences. The chatbot uses this as the source of truth and lightly rephrases it into the conversation. ## When to use Q&A - **Correcting retrieval misfires** — the chatbot is pulling the wrong document. Write the correct answer as a Q&A pair and it'll dominate. - **Filling gaps in your other content** — "Are you hiring?" probably isn't in your help center but gets asked. - **Locking wording** — you want the bot to always say "business days," not "weekdays". Q&A pins the phrasing. - **Multi-step instructions** — answers can be multi-paragraph with bullet lists. ## When NOT to use Q&A - **Rapidly-changing info** — prices, stock, hours. Use a Q&A only if it won't change in a month; otherwise update the underlying site and [re-crawl the URL](https://www.chatbotgen.com/docs/training/website-urls). - **Long-tail questions** — Q&A shines on the top 20% of asks. Trust retrieval from files/URLs for the long tail. - **Content already in docs** — if it's already in a file or URL that retrieval is finding correctly, don't duplicate. ## Editing and deleting The Q&A list below the form shows every pair. Click one to edit it inline. The trash icon deletes. Both actions flag the chatbot for retrain. ## Bulk import For more than a handful of pairs, import a CSV. See [Bulk Q&A import](https://www.chatbotgen.com/docs/training/csv-import). --- # Knowledge base: Bulk Q&A import Source: https://www.chatbotgen.com/docs/training/csv-import Upload up to 500 Q&A pairs at once from a CSV file. If you've got a spreadsheet of FAQs — from a migration, a survey export, or another support tool — import them in one shot. The button lives inside the **Q&A** tab on your chatbot's Knowledge page, next to the add form: ```ascii "Add question-answer pairs. Your chatbot will use these as high-priority training data..." [ Import CSV ] ``` ## CSV format Required columns: `question`, `answer`. Optional columns: `title`, `variations` (pipe-separated `|` inside the cell). ```csv question,answer,title,variations "Do you ship internationally?","Yes — we ship to 40+ countries. 7-14 business days.","International shipping","ship abroad|worldwide|overseas" "What's your return policy?","30 days, no questions asked.","Returns","refund|send back" "Are you open on Sundays?","Sundays by appointment only.","Sunday hours","weekend" ``` Rules: - First row is the header. Column order doesn't matter, names do (lowercase, trimmed). - Quote any cell containing commas, newlines, or quotes (standard RFC 4180). - `variations` is pipe-separated inside a single CSV cell. - UTF-8 encoding. ## Limits - **Max file size**: 2 MB - **Max rows**: 500 per import Above either cap, the import stops with an explicit error (see below). ## How to import Click **Import CSV** on the Q&A tab and pick a file. No confirmation step — it runs immediately. On success you get a flash: > Imported 497 Q&A. Click Retrain agent to apply. If some rows were skipped (duplicates or malformed), the count appears too: *"Imported 497 Q&A (3 skipped). Click Retrain agent to apply."* ## Error messages These are the exact flash messages for each failure mode: - **No file selected**: *"Select a CSV file to import."* - **Too big**: *"File too large. Max 2MB."* - **Missing required column**: *"CSV is missing required column: {name}"* - **Too many rows**: *"Too many rows ({count}). Maximum 500 per import."* - **Malformed CSV**: *"CSV parse error: {details}"* - **Empty file**: *"CSV is empty."* - **Anything else**: *"Failed to import Q&A CSV."* Fix the flagged issue and re-import. Rows that made it in before the failure point are not rolled back — if you re-run the same file, you'll get duplicates. ## Tips - **Dry-run with 10 rows first.** Confirm the column names and variations format look right before throwing 500 rows at it. - **Deduplicate before you upload.** The import doesn't merge on question text — identical questions become separate rows. - **Keep variations lean.** 3-5 per question is enough. Adding more just adds retrieval noise. - **Skip variations on the first pass.** Retrieval is already good at paraphrases. Add variations only for questions you see consistently misfiring in real conversations. ## After importing Imported Q&As don't auto-apply to the chatbot — hit **Retrain agent** to re-embed. See [Retraining](https://www.chatbotgen.com/docs/training/retraining) for the full flow. --- # Knowledge base: Text snippets Source: https://www.chatbotgen.com/docs/training/text-snippets Paste raw text — the catch-all for content that isn't a file, URL, or Q&A pair. Text snippets are arbitrary text you paste directly into ChatbotGen. Use them when content isn't naturally a file, URL, or Q&A pair. ## Where to add one Open your chatbot → **Training** → **Text** tab. The form is a single textarea with 5 rows: ```ascii ┌─ Training › Text ────────────────────────────────────────┐ │ Files URLs Q&A Text (2) │ │ ───────── │ │ │ │ Paste any text content — product descriptions, FAQ │ │ pages, documentation, etc. │ │ │ │ ┌─────────────────────────────────────────────────────┐ │ │ │ │ │ │ │ Paste your text content here... │ │ │ │ │ │ │ │ │ │ │ └─────────────────────────────────────────────────────┘ │ │ │ │ [ Add Text ] │ └──────────────────────────────────────────────────────────┘ ``` The placeholder is literally *"Paste your text content here..."*. The intro line above the form: *"Paste any text content — product descriptions, FAQ pages, documentation, etc."* Click **Add Text** and the snippet is queued for processing. While pending, the button label flips to *"Adding..."*. ## The list below Each saved snippet is shown in a row with: - A small icon - The first **120 characters** of the text followed by an ellipsis - A status badge (`pending` / `processing` / `completed` / `failed`) - A delete icon on the right ```ascii 📄 Holiday hours — closed Dec 25, Jan 1. Limited ... ● completed [🗑] 📄 Our pricing starts at $29/month and scales ba... ● processing [🗑] ``` No inline edit — to change a snippet, delete and re-add. ## Empty state If you have no snippets yet, the tab shows: > Add text snippets to give your chatbot more knowledge. ## What counts - The snippet is required (can't be blank) - Character count is computed automatically from the text length and counts toward your plan's Training content budget - Status is one of `pending`, `processing`, `completed`, `failed` ## When to use a text snippet Text is the right choice when: - The content doesn't live behind a URL (it's in your head, a private doc, or somewhere we can't crawl) - It's short, situational, or updated often (seasonal hours, a new policy) - You're patching over a bad extraction from a PDF or URL by pasting a cleaner version For anything question-shaped, use [Q&A pairs](https://www.chatbotgen.com/docs/training/questions-and-answers) instead — they give you variations and deterministic answers. ## After adding Deleting a snippet flags the chatbot for retrain — click **Retrain agent** on the action bar to re-index. See [Retraining](https://www.chatbotgen.com/docs/training/retraining). --- # Knowledge base: Retraining Source: https://www.chatbotgen.com/docs/training/retraining When changes auto-apply, when you need to retrain, and what the flow actually does. Retraining re-embeds knowledge sources so they show up in retrieval. Some changes apply automatically; others need a manual push. ## Automatic processing When you **add** a new source — a file, URL, Q&A pair, or snippet — ChatbotGen processes it automatically in the background. You don't need to click anything for first-time indexing. The status moves from **pending** to **processing** (or **crawling** for URLs) and finally **completed**. ## When you need to retrain manually Certain edits don't re-embed automatically. The chatbot shows an unsaved-changes banner: ```ascii ┌────────────────────────────────────────────────────────────┐ │ You have unsaved changes — click Retrain agent to apply. │ │ [ Retrain agent ] │ └────────────────────────────────────────────────────────────┘ ``` Actions that raise this banner: - Editing a Q&A pair - Editing a text snippet - Deleting any source - Toggling a URL's "Exclude from search" flag ## Clicking Retrain Hit **Retrain agent**. A green flash appears: > Training started. Your chatbot will be ready shortly. Your chatbot keeps answering with its previous knowledge while retraining runs — no downtime. You can navigate away, open conversations, or work on another chatbot; retraining continues in the background. ## Over-limit errors If your total characters trained would exceed your plan cap, the retrain is blocked with: > Training content (N chars) exceeds your plan limit (M chars). Remove some sources or upgrade your plan. Two ways to unblock: 1. Delete or exclude sources until you're back under the limit 2. Upgrade your plan — see [Plans & pricing](https://www.chatbotgen.com/docs/billing/plans) ## What retraining does under the hood For each changed source, we: 1. Re-extract the text (for URLs, we re-fetch the page; for files, we re-parse them) 2. Split it into passages 3. Re-index those passages so the chatbot can find them 4. Swap the new content in atomically Unchanged sources aren't touched. It's a targeted refresh, not a full rebuild. ## Retraining vs re-crawling Two different actions: - **Re-crawl a URL** — re-fetches the page, re-extracts, re-embeds. Use when a specific page's content changed. - **Retrain agent** — re-embeds anything flagged as changed across all sources. Use after batch edits or imports. If your URL content updates on the source site, re-crawl the URL. If you just edited local Q&A or text, click Retrain. ## Scheduling There's no built-in scheduled retrain. If your content changes weekly, set a weekly reminder to visit the Training tab and hit Retrain. Scheduled re-indexing is on the roadmap. --- # Customization: Widget appearance Source: https://www.chatbotgen.com/docs/customization/widget-appearance Icon, title, colors, and input placeholder — the visible pieces of the chat widget. The widget is the public face of your chatbot on the web. Spending 10 minutes here pays off every conversation. ## Where to find it Open your chatbot → **Widget** in the sub-nav. The page is two columns: form on the left, live preview on the right. ```ascii ┌─ Widget ──────────────────────────────┐ ┌─ Preview ─────┐ │ │ │ │ │ Icon │ │ [icon] Chat│ │ [ Upload icon ] │ │ ───────── │ │ │ │ Hello, how │ │ Content │ │ can I help │ │ Widget Title [ Chat ] │ │ you? │ │ Initial Message [ Hello, how...] │ │ │ │ Input Placeholder[ Ask anything…] │ │ [ Ask me │ │ Suggested Msgs [ line 1\nline 2 ] │ │ anything ]│ │ │ │ │ │ Colors │ └───────────────┘ │ Primary Secondary Background │ │ [#4F46E5] [#E2F7CB] [#F9FAFB] │ │ │ │ [✓] Show "Powered by ChatbotGen" │ │ │ │ [ Save Widget Settings ] │ └───────────────────────────────────────┘ ``` ## Icon Upload a square image. The icon appears in: - The launcher button on your site (bottom-right) - The widget header next to the title - Each assistant message bubble Accepted types: PNG, JPEG, WebP. Max size: **5 MB**. Client-side validations: - Wrong type → *"Use a PNG, JPEG, or WEBP image."* - Too large → *"Image must be 5MB or smaller."* Transparent PNGs work well. Avoid thin line art — it's unreadable at 40 px. ## Widget Title The text shown in the widget header. Default placeholder: `Chat`. Keep it short. ## Initial Message The first message the chatbot sends when a visitor opens the widget. Two-row textarea, helper text *"Supports multiple lines"*. Default: *"Hello, how can I help you?"* ## Input Placeholder The grey hint in the message input box. Default: *"Ask me anything..."*. ## Suggested Messages One message per line in a 3-row textarea. Helper text: *"One message per line — shown as quick-reply chips"*. Shown next to the initial message as clickable buttons. Picking one sends that message as the user input. Good suggestions match your top real questions. Rotate them based on what conversations you're seeing. ## Colors Three color pickers with hex inputs: - **Primary** (default `#4F46E5`) — CTAs, accents, send button - **Secondary** (default `#E2F7CB`) — supporting accents - **Background** (default `#F9FAFB`) — chat body background The live preview updates instantly. Defaults are chosen for legible contrast — if you swap them out, eyeball the preview to make sure text stays readable. ## Branding toggle The **Show "Powered by ChatbotGen"** checkbox controls the widget footer. On Free plans it's locked on — see [Branding](https://www.chatbotgen.com/docs/customization/branding). ## Saving Outside the wizard, a **Save Widget Settings** button sits at the bottom of the form. Inside the wizard, the top banner's Next button saves + advances for you. Changes propagate to live widgets within a few seconds. ## What's on other pages - Initial message, delay, suggested messages — also covered in [Messages & prompts](https://www.chatbotgen.com/docs/customization/messages) - Powered-by toggle + upgrade gate — [Branding](https://www.chatbotgen.com/docs/customization/branding) --- # Customization: Messages & prompts Source: https://www.chatbotgen.com/docs/customization/messages The greeting, the input placeholder, and the suggested-message chips — everything a visitor sees before typing. The first moments of a chat set expectations. These four fields live in the **Content** section of the widget settings form. ## Where to find them Open your chatbot → **Widget** in the sub-nav → the **Content** card, right under the icon field. ```ascii ┌─ Content ─────────────────────────────────────────────────┐ │ │ │ Widget Title │ │ [ Chat ] │ │ │ │ Initial Message │ │ ┌──────────────────────────────────────────────────────┐ │ │ │ Hello, how can I help you? │ │ │ │ We're here to assist you. │ │ │ └──────────────────────────────────────────────────────┘ │ │ Supports multiple lines │ │ │ │ Input Placeholder │ │ [ Ask me anything... ] │ │ │ │ Suggested Messages │ │ ┌──────────────────────────────────────────────────────┐ │ │ │ What do you offer? │ │ │ │ How can I contact support? │ │ │ │ Pricing info │ │ │ └──────────────────────────────────────────────────────┘ │ │ One message per line — shown as quick-reply chips │ └───────────────────────────────────────────────────────────┘ ``` ## Widget Title Single-line input. Placeholder: `Chat`. Appears at the top of the chat panel, next to the icon. Leave short — two or three words max. ## Initial Message Two-row textarea. Placeholder: `Hello, how can I help you?\nWe're here to assist you.` Helper text: *"Supports multiple lines"* The chatbot's first message to a visitor. Keep it brief and actionable — tell them what they can ask about. Line breaks are respected. ## Input Placeholder Single-line input. Placeholder: `Ask me anything...` The grey hint that appears inside the visitor's text field. Use it to nudge the kinds of questions you want — "Ask about pricing…", "Tell me what you're looking for…". ## Suggested Messages Three-row textarea. Placeholder: `What do you offer?\nHow can I contact support?\nPricing info` Helper text: *"One message per line — shown as quick-reply chips"* Each line becomes a clickable chip beside the initial message. Tapping a chip sends that line as the visitor's first message. Great for funneling visitors toward the top 3-4 things your chatbot handles well. Common patterns: - Pricing / demo / contact triplet for sales bots - Returns / shipping / order-status triplet for e-commerce - A "Talk to a human" option if you've enabled [Human handoff](https://www.chatbotgen.com/docs/tools/human-handoff) ## Saving Outside the wizard there's a **Save Widget Settings** button at the bottom of the page. Inside the wizard, the top banner's **Save & next: Test →** button saves and advances in one click. The live preview on the right updates as you type, so you can eyeball line breaks, length, and chip wrapping before saving. --- # Customization: Branding Source: https://www.chatbotgen.com/docs/customization/branding Remove the "Powered by ChatbotGen" label from the widget — available on any paid plan. The widget shows a small **Powered by ChatbotGen** line in its footer by default. The **Branding** card on the widget settings page is where you hide it. ## The toggle At the bottom of the widget settings form, under the Content and Colors cards: ```ascii ┌─ Branding ────────────────────────────────────────────────┐ │ │ │ [✓] Show "Powered by ChatbotGen" │ │ Toggle attribution in the widget footer │ │ │ └───────────────────────────────────────────────────────────┘ ``` Uncheck the box and save. The footer disappears from every live widget within a few seconds. ## On Free plans On the Free plan the checkbox is shown but **dimmed and disabled**. Clicking it does nothing. In place of the helper text you get: > [Upgrade to a paid plan](https://www.chatbotgen.com/app/billing) to remove branding ```ascii ┌─ Branding ────────────────────────────────────────────────┐ │ │ │ [✓] Show "Powered by ChatbotGen" (disabled) │ │ Upgrade to a paid plan to remove branding │ │ │ └───────────────────────────────────────────────────────────┘ ``` The link goes straight to the billing page. ## Which plans unlock it Custom branding unlocks on any paid plan — **Starter**, **Growth**, or **Business**. The Free plan is the only one where the toggle is locked. See [Plans & pricing](https://www.chatbotgen.com/docs/billing/plans) for the full comparison. ## What the toggle does not remove The toggle controls only the *attribution line in the widget footer*. It does not change: - The widget script URL, which still points at `chatbotgen.com` - The widget iframe URL, also served from `chatbotgen.com` - Anything in error or fallback states that surfaces our platform name internally For a fully white-labeled deployment (custom domain, no mentions anywhere), reach out to sales. ## Related - [Widget appearance](https://www.chatbotgen.com/docs/customization/widget-appearance) — icon, title, colors - [Messages & prompts](https://www.chatbotgen.com/docs/customization/messages) — initial message and suggested chips - [Plans & pricing](https://www.chatbotgen.com/docs/billing/plans) — plan comparison --- # Channels: Channels overview Source: https://www.chatbotgen.com/docs/channels/overview Three places your chatbot can live — Widget, WhatsApp, Telegram — with their statuses at a glance. The **Channels** tab is a three-tile hub. Each tile shows one channel's current state, a stat, and a CTA that takes you into setup or management. ## The page Heading: **Deploy everywhere** Subheading: *"Your chatbot can live on your website, in WhatsApp, and inside Telegram — all at once. Pick a channel to set it up or manage it."* At the top (outside the wizard), a reach bar summarizes how many messages each channel has handled. Below that, a three-column grid: ```ascii ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ 🖥 Widget │ │ 💬 WhatsApp │ │ ✈ Telegram │ │ ● Active ● Not connected ● Pairing│ │ │ │ Website chat WhatsApp Business Telegram bot │ │ │ │ 1.2K msgs 0 msgs 12 msgs │ │ ───────── ───────── ───────── │ │ Manage → Set up → Manage → │ └──────────────┘ └──────────────┘ └──────────────┘ ``` ## Status badges Every tile shows one of three statuses: | Status | Dot | Label | |---|---|---| | `active` | green | **Active** | | `pending` | yellow pulsing | **Pairing** | | `inactive` | grey | **Not connected** | The three channels: - **Widget** — always present. The default web embed. - **WhatsApp** — disconnected until you scan a QR. Shows **Pairing** during setup, **Active** once scanned. - **Telegram** — disconnected until you paste a bot token. ## Per-tile content Each tile has five pieces: 1. **Icon** (colored when active, muted otherwise) 2. **Status chip** (top-right) 3. **Channel name** (Widget / WhatsApp / Telegram) 4. **Tagline** describing what the channel is 5. **Stat row** with a number (e.g. message count) and a label 6. **Footer link** with a CTA ("View", "Set up", "Manage") and an arrow Clicking anywhere on the tile takes you to that channel's dedicated page. ## Next steps - [Web widget](https://www.chatbotgen.com/docs/channels/web-widget) — install snippet and shareable link - [WhatsApp](https://www.chatbotgen.com/docs/channels/whatsapp) — QR-based connection - [Telegram](https://www.chatbotgen.com/docs/channels/telegram) — bot token via @BotFather ## Plan gates All three channels are available to every plan, including Free. Message limits differ per plan — see [Plans & pricing](https://www.chatbotgen.com/docs/billing/plans). --- # Channels: Web widget Source: https://www.chatbotgen.com/docs/channels/web-widget Paste a single script tag on your site to show a floating chat bubble, or share a direct chat link. The web widget is the default channel for every chatbot. The **Web Widget** tab on the Channels page gives you two copy-paste outputs: an embed script for your site, and a shareable direct-chat URL. ## The page Heading: **Web Widget** Subheading: *"Drop one script onto any page and your chatbot appears as a floating chat bubble. Share a direct link for anyone to chat without visiting your site."* A **Customize widget** button (top right) takes you to the widget settings form. Then two rows — each with a **Copy** button, and the shareable link also has an **Open ↗** to jump into the live preview. ## 1. The embed script **Row label**: *"Embed script"* **Hint**: *"Paste before `` on every page where you want the widget to appear."* The snippet looks exactly like this: ```html ``` (The URL's host matches the ChatbotGen deployment — in dev it's `http://localhost:4000`, in production it's `https://www.chatbotgen.com`.) Paste it anywhere in your HTML, typically just before `` so it doesn't block first paint. No `defer` is needed. ## 2. The shareable link **Row label**: *"Shareable link"* **Hint**: *"Send this URL to anyone — they can chat with your bot in full-page mode."* The URL pattern: ``` https://www.chatbotgen.com/v2/chatbots/YOUR-SLUG/widget ``` Paste it into an email, a QR code, or a social post. Anyone clicking gets the full-page chat UI — no widget installation needed on their end. ## What the loader script does The script works on any domain (no CORS setup needed) and is cached by the browser for a few hours so it loads quickly on repeat page views. When the page loads, the script: 1. Injects the widget's styles 2. Adds a floating circular button in the bottom-right corner 3. Prepares a hidden chat iframe that opens when you click the button 4. Optionally shows a small speech-bubble teaser with the chatbot's initial message after a short delay 5. Closes the widget when the visitor clicks away or taps X inside the chat The launcher button uses your uploaded widget icon when you've set one — otherwise it's a colored bubble with a chat-bubble symbol in your primary color. ## Mobile behavior On small screens (narrow phones), the chat fills the entire viewport when opened, so the conversation is easy to read. No configuration needed — it just adapts. ## If the chatbot doesn't exist If the slug in the script URL doesn't match any chatbot, the browser console shows: ``` ChatbotGen: chatbot "YOUR-SLUG" not found ``` Nothing is injected on the page. Check that you copied the script with the right slug for your chatbot. ## Customizing appearance Widget look-and-feel lives on the **Widget** sub-nav tab, not here. See: - [Widget appearance](https://www.chatbotgen.com/docs/customization/widget-appearance) — icon, title, colors - [Messages & prompts](https://www.chatbotgen.com/docs/customization/messages) — initial message, placeholder, suggested chips - [Branding](https://www.chatbotgen.com/docs/customization/branding) — hide the "Powered by" footer ## Removing the widget Delete the `