Skip to main content

Analytics

Understand what your visitors are asking and improve your content based on real data.

:::info Plan access Open a chatbot from /dashboard, then choose Conversations. Its Analytics and Unanswered questions views are included with Pro and Business; unavailable views show an upgrade prompt. History and Test chatbot are available on every plan. These are project views, not workspace Overview metrics. :::

Use the launch checklist to validate your rollout, then compare plans and limits before choosing the right evaluation path.

Dashboard Overview​

Open Conversations → Analytics (/chatbot/<projectId>?tab=analytics). The dashboard uses the last 30 days, with at most the 5,000 most recent recorded interactions in that window. This is a reporting window, not a data-retention guarantee. There is no date-range selector or full-history export in this tab. High-volume results can therefore be a capped view rather than all traffic in the period.

The dashboard shows:

  • Total Questions - Recorded interactions in that window, subject to the cap
  • Answered - Interactions with a successful generation that was not flagged by the content-gap detector
  • Unanswered - Other recorded interactions, including missing-context fallbacks and generation failures
  • Answer Rate - Answered divided by total recorded interactions

These are automated classification metrics, not verified answer accuracy, customer satisfaction, unique visitors, or support tickets avoided. Content gaps are a subset of unanswered interactions: generation failures can be counted as unanswered without creating a gap. The detector checks source context, fallback-like wording, and some question-specific terms; it can misclassify responses. Test Chat contributes to these metrics and consumes the owner's message allowance. This is not a visitor-only report or the billing usage ledger, and failed requests need not produce an analytics record.

Conversations and Logs​

Open Conversations → History (?tab=logs) to page through saved project conversations. Select a row to read messages and timestamps in a separate read-only reader; select it again or use History in the reader to return to the list. You can delete one conversation or all conversations after confirmation. History combines dashboard tests and public chat; it is not the internal API request/error log. The reader loads the first 100 stored messages, so a row's total count can exceed the messages displayed.

Test chatbot (?tab=test) also lets you select saved conversations, start a new chat, copy answers, and delete history. Open Conversations in the test interface to select a saved conversation or search its previews. Search filters the currently loaded page, not every message in the project. New chat starts a fresh conversation without deleting existing history; Clear is a separate destructive action. When a request uses the same conversationId, the answer generator receives up to 12 recent saved messages, each clipped to 2,000 characters. This is bounded context, not the full transcript; include older details when needed and keep conversation IDs isolated between unrelated visitors.

Deleting conversations removes their messages, not analytics records, content-gap records, or already consumed message usage. Widget HTTP requests that use an Idempotency-Key can also leave a separate replay record containing the request fingerprint, including the message, and response after conversation deletion. Replay records have a 24-hour expiry; cleanup is separate and may occur later.

Most Asked Questions​

See the top 10 question texts within the analytics window/cap. Text is trimmed, lowercased, and truncated to 500 characters before grouping; this is not semantic clustering of differently worded questions. Use this to:

  • Understand what visitors care about most
  • Prioritize content improvements
  • Identify FAQ opportunities

Content Gap Detection​

Open Conversations → Unanswered questions (?tab=gaps) to review questions flagged by the content-gap detector. A gap is not tied to one exact fallback sentence: missing source context, recognized refusal wording, and some overly general answers can all produce a gap. The view shows:

  • Question - What the visitor asked
  • Count - How many times this was asked
  • Last Asked - When it was most recently asked

Use these as candidates for review, not proof that a page is missing. Check the source selection, retrieval, wording, and the actual answer first. After adding content, re-scrape within your refresh allowance and test again, then select Resolve. Resolution is a manual tracking flag; it does not train the chatbot or verify the new answer. Delete removes the gap record.

The dashboard lists unresolved gaps by default. Select Include resolved to include resolved records and use Undo to reopen one. A later occurrence of the same normalized question increments its existing count but does not automatically reopen it. The list takes the newest 100 matching records and sorts that subset by count; the unresolved badge is capped at 500. These records are separate from the Analytics tab's 30-day window.

Use these gaps with the ticket-reduction measurement guide to test repeat-question coverage and compare any support impact with your own baseline rather than assuming an outcome.

Peak Traffic Hours​

See the five hour-of-day buckets with the highest counts in the same analytics window. Hours are recorded on the backend and displayed without conversion to the visitor's timezone; they do not identify your audience's timezone. Use them to:

  • Schedule content updates during low-traffic times
  • Compare busy and quiet hours on a consistent reporting basis
  • Plan for capacity if you're approaching limits

The dashboard labels this panel Popular Triggers. It shows the top 10 page URLs where recorded questions originated, not the most-cited documentation pages or pageviews. The hosted widget.js, including the widget mounted by Chattybox.mountWidget(), automatically sends page context with chat requests without query strings or fragments, but the pathname is retained. Avoid loading or retaining the widget on sensitive or private routes. On a single-page app, excluding a route from the initial loader trigger does not remove a widget already initialized on another route; use deliberate teardown when appropriate.

The published headless SDK 0.1.4 accepts message, conversationId, and idempotencyKey in sendMessage(). Current source also supports uiLocale for product-owned fallback copy. Neither supports sourceUrl or sourcePath. Do not add an unsupported SDK option expecting page attribution. Dashboard Test Chat likewise has no source-page URL, so questions can be counted even when Popular Triggers is empty.

For a custom direct HTTP integration, POST /chat accepts optional sourceUrl and/or sourcePath. Source context requires an HTTP(S) request origin, taken from Origin when present or the origin of Referer only when Origin is absent; sourceUrl must match it and must not contain credentials. A supplied path must start with / (not //), contain no query or fragment, and match the URL's pathname when both are sent. The server strips query strings/fragments and normalizes the URL before recording it. Never send private paths or sensitive visitor data as page context.

Page context is used for analytics, including interaction telemetry; it does not change which indexed sources the assistant retrieves.

Source Citations​

Answers can include clickable links to pages used as retrieved context. These links can help visitors inspect relevant material, but they do not verify that every claim is supported or accurate. Compare important claims with the source pages. Source links can:

  • Help visitors assess the answer
  • Let users check information against relevant pages
  • Direct visitors to those pages

The widget presents citations in a native disclosure. Visitors can expand Sources to review the cited links without interrupting the answer.


Improving Your Answer Rate​

Tips to get more questions answered:

  1. Review content gaps regularly - Add missing information to your site
  2. Scrape more pages - Include FAQ pages, help docs, and blog posts
  3. Use clear headings - Well-structured content is easier to search
  4. Keep content updated - Enable automatic re-scraping within your plan's cadence and monthly refresh budget
  5. Retest before resolving - Confirm the answer and citations, rather than treating a higher Answer Rate as proof of accuracy