Virtual Assistants Overview
Natural Language Processing (NLP)
Concepts and Terminology
Quick Start Guide
Accessing the Platform
Navigating the XO Platform
Building a Virtual Assistant
Help & Learning Resources
Release Notes
Current Version
Recent Updates
Previous Versions
Request a Feature
Conversation Designer
Dialog Tasks
Mock Scenes
Dialog Tasks
Navigate Dialog Tasks
Build Dialog Tasks
Node Types
Intent Node
Dialog Node
AI-Assisted Dialog Node
Entity Node
Form Node
Confirmation Node
Message Nodes
Logic Node
Bot Action Node
Service Node
Webhook Node
Script Node
Process Node
Agent Transfer
Node Connections
Node Connections Setup
Sub-Intent Scoping
Entity Types
Entity Rules
User Prompts or Messages
Voice Call Properties
Knowledge AI
Knowledge Graph
Build a Knowledge Graph
Manage FAQs
Knowledge Extraction
Import or Export Knowledge Graph
Prepare Data for Import
Importing Knowledge Graph
Exporting Knowledge Graph
Auto-Generate Knowledge Graph
Knowledge Graph Analysis
Answer from Documents
Alert Tasks
Small Talk
Digital Skills
Digital Forms
Digital Views
Session and Context Variables
Context Object
Intent Discovery
NLP Optimization
ML Engine
Model Validation
FM Engine
KG Engine
Traits Engine
Ranking and Resolver
Training Validations
NLP Configurations
NLP Guidelines
LLM and Generative AI
Event Handlers
Contextual Memory
Contextual Intents
Interruption Management
Multi-intent Detection
Amending Entities
Default Conversations
Conversation Driven Dialog Builder
Sentinment Management
Tone Analysis
Default Standard Responses
Ignore Words & Field Memory
Test & Debug
Talk to Bot
Utterance Testing
Batch Testing
Conversation Testing
Conversation Testing Overview
Create a Test Suite
Test Editor
Test Case Assertion
Test Case Execution Summary
Health and Monitoring
NLP Health
Flow Health
Actions Overview
Azure OpenAI
Google Maps
Microsoft Graph
Open AI
Agent Transfer Overview
Custom (BotKit)
NiceInContact(User Hub)
External NLU Adapters
Dialogflow Engine
Test and Debug
Dashboard Filters
Overview Dashboard
Conversations Dashboard
Users Dashboard
Performance Dashboard
Custom Dashboards
Custom Meta Tags
Create Custom Dashboard
Create Custom Dashboard Filters
NLP Insights
Conversations History
Conversation Flows
Conversation Insights
Feedback Analytics
Usage Metrics
Containment Metrics
Universal Bots
Universal Bot Definition
Universal Bot Creation
Training a Universal Bot
Universal Bot Customizations
Enabling Languages
Manage Assistant
Plan & Usage
Usage Plans
Support Plans
Conversation Sessions
Multilingual Virtual Assistants
Get Started
Supported Components & Features
Manage Languages
Manage Translation Services
Multiingual Virtual Assistant Behavior
Feedback Survey
Masking PII Details
IVR Settings
General Settings
Assistant Management
Manage Namespace
Data Table
Table Views
App Definitions
Data as Service
Build a Travel Planning Assistant
Travel Assistant Overview
Create a Travel Virtual Assistant
Design Conversation Skills
Create an ‘Update Booking’ Task
Create a Change Flight Task
Build a Knowledge Graph
Schedule a Smart Alert
Design Digital Skills
Configure Digital Forms
Configure Digital Views
Train the Assistant
Use Traits
Use Patterns
Manage Context Switching
Deploy the Assistant
Use Bot Functions
Use Content Variables
Use Global Variables
Use Web SDK
Build a Banking Assistant
Design Conversation Skills
Create a Sample Banking Assistant
Create a Transfer Funds Task
Create a Update Balance Task
Create a Knowledge Graph
Set Up a Smart Alert
Design Digital Skills
Configure Digital Forms
Configure Digital Views
Add Data to Data Tables
Update Data in Data Tables
Add Data from Digital Forms
Train the Assistant
Composite Entities
Use Traits
Use Patterns for Intents & Entities
Manage Context Switching
Deploy the Assistant
Configure an Agent Transfer
Use Assistant Functions
Use Content Variables
Use Global Variables
Intent Scoping using Group Node
Analyze the Assistant
Create a Custom Dashboard
Use Custom Meta Tags in Filters
Migrate External Bots
Google Dialogflow Bot
API Reference
API Introduction
API List
API Collection
koreUtil Libraries
SDK Reference
SDK Introduction
SDK Security
SDK Registration
Web Socket Connect and RTM
Installing the BotKit SDK
Using the BotKit SDK
SDK Events
BotKit - Blue Prism
BotKit - Flight Search Sample VA
BotKit - Agent Transfer
Widget SDK Tutorial
Web SDK Tutorial
Introduction to Admin Console
Administration Dashboard
User Management
Add Users
Manage Groups
Manage Roles
Data Tables and Views
Assistant Management
Invite Users
Send Bulk Invites
Import User Data
Synchronize Users from AD
Security & Control
Using Single-Sign On (SSO)
Two-Factor Authentication (2FA)
Security Settings
Cloud Connector
  1. Home
  2. Docs
  3. Virtual Assistants
  4. Analyzing Your Bot
  5. Custom Dashboard

Custom Dashboard

Custom Dashboard allows you to design your own dashboards to meet business needs using a combination of built-in metrics and custom KPIs based on the user’s demographic or context information to provide a more tailored and relevant view of the data.

Using Custom Dashboard, you can select the metrics most relevant to your needs and display them in a way that is easy to understand and use. This can be particularly useful if you have a lot of user conversations and data that you need to track and monitor, as it allows you to focus on the most important information and ignore the rest.

Custom Dashboards are available along with the otherout-of-the-box dashboards in the Bot Builder. For more information on Default Dashboard, see here.

Follow these steps to build Custom Dashboards:

  1. Identify the data points that you need to capture for deriving the metrics, based on your business requirements and needs.
  2. Define suitable Custom Meta Tags to emit these data points in the Bot definition. To know how to add custom meta tags to your Virtual Assistant (VA), see here.
  3. Design widgets, preview, and update the dashboard with these widgets.

The following sections describe the steps to create custom dashboard widgets.

Go to Analyze > Custom Dashboards in the left navigation menu, to add multiple custom dashboards for your VA.

  • Each of these dashboards can have one or more widgets.
  • Each widget in the dashboard must be associated with a dataset
  • You need to define a query to extract the required data to be displayed in a widget

Add Custom Dashboards

You can add one or more Dashboards by providing basic details of the Dashboard.

  • To add a new dashboard, click on the kabab icon on the top right and select the ‘New Dashboard’ option. Enter the name of the dashboard.
  • Please note that you can edit the name of the Dashboard anytime.
  • By default, each custom dashboard comes with a Date Filter, allowing you to filter the records for all the widgets in the dashboard. You can choose between 24 hours, 7 Days, and a custom date range. You can also configure and add custom filters, allowing you to filter all the widgets within the dashboard. See Create Custom Filters for Custom Dashboard to know more.
  • You can choose a Color Theme for your dashboard.
  • You can Add Widget to a given Dashboard (see below for details).
  • You can reorder the widgets within a dashboard using the move cursor, visible on the mouse hover over the widget, to drag and reorder the widget anywhere on the Dashboard.
  • Using the Kebab menu (vertical ellipses) icon, you can do the following:
    • New Dashboard: Allows to create a new dashboard
    • Clone Dashboard: Copies the dashboard to a new dashboard with the same configuration
    • Export Dashboard: Exports the configuration of the dashboard in a JSON file
    • Delete Dashboard: Allows you to Delete the custom dashboard

Add Widgets

You can add one or more widgets to a Dashboard using the Add Widget button. Widget configuration involves two steps:

  • Data Definition
  • Data Representation

Data Definition

Every widget must have a query defined to retrieve and represent the required information on that Widget. Following are the configurations used to generate the query definition:

  • Dataset defines the data source. The source can be:
    • Analytics: Analytics gives access to data about Success Intents, Failed Intents, Success Tasks, and Failed Tasks associated with your VA. You can view key fields like MetricType, Channel, UserId, etc.
    • Message: This dataset provides VA and User messages for your VA. You can view key fields UserId, Channel, etc.
    • Sessions: The dataset lists conversation sessions associated with your VA. You can choose to view key fields like UserId, Channel, etc.
Note: You can view the top 20 records for all the dataset fields.

The platform allows you to choose between Query Mode and Advanced Mode while writing a query. For more information, see Widget Configuration Modes.

  • Date Range is set by default to the past 7 days and can be customized to a range of 90 days. This date range is only used for preview purposes.
  • Select fields to be depicted by the Widget.
    • The fields differ for each selected dataset. See the table for more details. For example to list the success & failed intents, metricType:
    • You can apply on these fields the aggregation functions like “min”, “max”, “sum”, “count”, or “avg”“. For example to count the total triggered intents, count(metricType), you can give a display name as an alias – count(metricType) as total.
    • Aggregate Functions

      While defining a query, you can click the drop-down provided for each field in Select, to access the relevant aggregate functions. On selecting the appropriate aggregate function, you can enter the filter criteria.

      Note: Aggregate functions are visible only when the user chooses the Advanced mode.

      The following table describes all the available aggregate functions:

      Aggregate Function Description
      Sum The arithmetic total of all values in the column
      Min The smallest-value element in the column
      Max The largest-value element in the column
      Average The mean average of the elements in the column
      Count The total number of elements in the column
      None Use it to remove an aggregate function added to a query

      The Distinct function is used to obtain the number of distinct values across the column. It is allowed with the following aggregate functions:

      • Sum
      • Count
      • Average
    • Apart from these if you have defined any Custom/Meta Tags for your VA, you can use them under the appropriate heading with the following notation: userTag.tagname = value. If you declared a Message level custom tag, select the Message Dataset and enter messageTag.TagName. This would result in an empty dataset, and as a result the display would be empty.
  • Filter By clause is used to extract only those records that fulfill a specified condition. You can apply the following operators on these fields: “=”, “>=”, “<=”, “>”, “<“, “in”, “not in”.
    For example, to obtain the count of a specific FAQ, the following details are entered in the query setup.

    taskName = 'What account privileges does an authorized user have?' and metricType = successtasks.

    While conjugating multiple conditions, they would be evaluated left to right, and this ordering cannot be changed using parentheses ()

  • Note: In the query setup, for Filter By, individual AND, OR operators, and multiple ANDs, ORs, can be applied, but a combination of AND/ORs is not supported.
  • Group By fields for applying the aggregating functions. For example you can display the count of all messages, grouping by the userId. To understand the Group By usage, see the examples at Create Custom Dashboard
  • Having clause is used to filter the results with aggregate functions as ‘Where’ keyword cannot be used here. For example, count(messageid)>10. The clause works only with the ‘Group By’ function.
    To understand how the Having clause works, see Filter the Messages using the Having Clause.
  • Note: In the Having clause, the fields with aggregate values in the Select clause are automatically included.
  • Sort By fields (actual field names, not alias as give in the Select clause) to order the results in ascending or descending order – “asc”, or “desc”. For example to sort in the descending order of the metric type, metricType desc
  • Note: In the Select clause, you can provide an alias to make column names more readable. For other fields, you cannot define aliases and must give actual column names.

    Run the query to see the results in a tabular format.

    Note: A tag added for Select, Filter By, Group By, Having etc. can be deleted using a Delete icon which is displayed only upon hovering over the tag.

    End-user Vs. Developer Interactions

    By default, the end-user interactions are displayed for all the datasets in the Custom Dashboards. If you want to display the developer interactions, use the isdeveloper flag to filter the interactions as follows:

    • To display only the developer interactions, use isdeveloper = include in the filter condition.
    • To display both the developer and the end-user interactions, use one of the following in the filter condition:
      • isdeveloper = include or isdeveloper = exclude
      • isdeveloper = exclude or sessionid = "any developer session Id"

    In any custom dashboard widget, for any dataset, you can assign a value to the isdeveloper flag in the Filter By clause as shown below.

    Data Representation

    The next step is to render the data in a visually appealing way. The following options are available for data representation:

    • Table renders the data in a simple row and column format. You can specify the Columns and their order from the Dimensions option.
    • Pivot chart summarizes the data. You can specify the Dimensions – the columns to be displayed; Metrics – the value against the column; and Overlay – the column to be considered in case a data series needs to be represented. For example, if the dimension is set to be ‘date’, metric as ‘number of chats’ and overlay to be ‘customer type’, then the number of chats per customer type, with each distinct customer type as a series, would be displayed.
    • Bar Chart is used to depict the data across the X- and Y-axis. The results can be split into Data Series based on the Overlay field and get multiple lines plotted.
    • Horizontal Bar Chart is used to depict the data across the X- and Y-axis, a flipped version of Bar Chart. The results can be split into Data Series based on the Overlay field and get multiple lines plotted.
    • Line Chart is used to depict the data across the X- and Y-axis. The results can be split into Data Series based on the Overlay field and get multiple lines plotted.
    • Pie Chart is used for aggregation data to depict part-of-whole scenarios. Use Dimensions to set the fields to be depicted and the Metrics to set the aggregation function to be depicted.
    • Donut Chart is similar to a Pie chart but has better visualization.
    • Label Chart  highlights value or metric in a space of its own.

    Click the Preview button to visualize the widget. If it suits your purpose, add the widget to your Dashboard to save the changes.

    Note: You have to successfully run the query to be able to Preview it.

    Widget Actions

    Using the more icon (vertical ellipses) against each Widget, you can access the following options:

    • The Edit Widget option opens the Widget definition page where you can make changes to an already defined Widget.
    • The Clone Widget option is used to duplicate the Widget definition and modify it.
    • The Export option is used  to export the widget data
      • JSON format includes the final results that are displayed in the Widget UI
      • CSV format exports the results of the query that is associated with the widget (before converting the data as per the Widget UI)
    • The Delete Widget option is used to delete the widget from the Dashboard.
    Note: The final Widget definitions of a custom dashboard can be exported in JSON format. The individual widget data can be exported in CSV format.

    Widget Configuration Modes

    The platform allows users to select between Query Mode and Advanced Mode to extract data from a selected dataset. Widget configuration modes are introduced in the 10.0 release.

    Query Mode 

    Query mode is for users and developers who can write queries to create a widget. Ideally, advanced users who know the fields in the dataset are recommended to use this feature.

    Advanced Mode

    Advanced mode is a user-friendly way to create a custom dashboard without the technical know-how of writing queries or the dataset.  The platform provides you with the type-ahead suggestions of the fields, aggregate function, and alias while writing a query. 

    Note: The configured data remains intact when you toggle between Advanced and Query modes. You can modify the configurations of any widget using either of the modes.

    Type Ahead Suggestions

    In the Advanced Mode, you get type-ahead suggestions to write the criteria for Select, Filter By, Group By, Having, and Sort By clauses. The platform provides suggestions of the fields present within the selected dataset or message tags, session tags, and user tags that are added to the bot. The platform also allows you to add aggregate functions, filter criteria, conditional operators, alias names, etc., to build a valid query. 

    Note: You can add custom meta tags to the query that are not included in the bot while configuring the widget. However, to get the right data, you need to add the custom meta tag to the bot configuration.

    Custom Dashboard Limitations

    • You can define a maximum of 100 custom dashboards.
    • Each dashboard can include a maximum of 100 widgets.
    • A maximum of 3 metrics can be added to the chart.
    • Each chart can render 1 dimension.
    • The custom date range can be set up to 90 days.

    Dataset and Fields

    The dataset fields and values are listed in the following table.

    Note: The field names are case sensitive and should be used only as described here.


    Field Name Data Type Possible Value
    metricType Text
    • successtasks
    • successintents
    • failedtasks
    • failedintents
    • unhandledutterances
    eventtype string
    • “analyze”, “sentiment”, “tone”,
    • “entityretry”,
    • “confirmationretry”,
    • “onconnect”,
    • “endofconversation”,
    • “debuglog”,
    • “welcome”,
    • “telegramwelcomeevent”,
    • “facebookwelcomeevent”,
    • “telephonywelcomeeven”,
    • “standardresponseinterruption”,
    • “messagenodeinterruption”,
    • “optionalentity”,
    • “scriptfailure”,
    • “servicefailure”,
    • “agenttransfer”
    nodename string Name of the node being created
    nodetype string
    • confirmation
    • entity
    linkedbotname string Name of the linked bot associated with the Universal Bot.
    botname string
    • bot name
    • entity
    taskName Text Name of the Task being executed. If the taskType is Answer from Document, then the taskName includes the user query.
    taskType Text
    • Dialog
    • Action (includes information task also)
    • Alert
    • FAQ
    • Small Talk
    • Answer from Document
    isDeveloper Text
    • exclude
    • include
    failurereason Text
    failurepoint Text
    language Text In the XO Platform over 100 languages are supported. For more information, see Supported Bot Languages.
    channel Text A total of 37 channels are supported. For more information, see Channel Enablement-Available Channels.
    sessionId (not allowed as dimension in widget representation) Text

    of the form:


    trainingStatus Text
    • true, or
    • false
    pinStatus Text
    • true, or
    • false
    matchType Text
    • true, or
    • false
    userId Text email id or enterprise assigned user id
    channeluserid (not allowed as dimension in widget representation) Text
    timestampvalue Number
    date Date


    Field Name Data Type Possible Value
    messagetype string
    • incoming – for user messages
    • outgoing – for VA responses
    isDeveloper number
    • exclude
    • include
    messageId (not allowed as a dimension in widget representation) string

    of the form:


    channel string A total of 37 channels are supported. For more information, see Channel Enablement-Available Channels
    sessionId (not allowed as a dimension in widget representation) string

    of the form:


    language Text In the XO Platform over 100 languages are supported. For more information, see Supported Bot Languages
    userId Text email id or enterprise assigned user id
    timestampvalue Number the timestamp of the message
    date Date Creation date on the message
    username string user name


    Field Name Data Type Possible Value
    isdeveloper string
    • include
    • exclude
    sessionstatus string
    • active
    • closed
    streamid (not allowed as a dimension in widget representation) string Bot id
    sessionid string

    of the form:


    userId string email id or enterprise assigned user id
    username string User Name
    sessiontype string

    Conversation session type

    • Interactive;
    • Non-interactive
    channel string A total of 37 channels are supported. For more information, see Channel Enablement-Available Channels
    language Text In the XO Platform over 100 languages are supported. For more information, see Supported Bot Languages
    timestampvalue Number Timestamp value
    date Date mm-dd-yyyy
    containment_type string
    • dropOff
    • selfService
    • agent