Skip to content

Analytics & Quality Control ​

Two sidebar pages give you the numbers behind your Sales Platform:

  • Analytics β€” app.mychatbot.app/dashboard: sales KPIs, per‑project/per‑scenario message costs, and channel charts.
  • Quality Control β€” app.mychatbot.app/quality-control: "Monitor how quickly and how well your managers respond, track team workload, and see where leads sit in the funnel."

Both pages are visible to account admins only β€” operators (moderators) don't see them in the sidebar.

At a glance ​

QuestionWhere to look
How much did we sell, and what does a chat cost us?Analytics β†’ General statistics cards
What counts as a "sale", and what is a message worth in dollars?Where the sales numbers come from and What the dollar costs mean below
Which project/scenario is burning the budget?Analytics β†’ Scenario analytics
Which channel brings orders / revenue / traffic?Analytics β†’ Revenue by Channel, Orders by Channel, Messages by Channel, Platform Usage
How many AI messages did we use, and when?Analytics β†’ Message Usage (expandable)
Where do leads sit in the CRM funnel?Analytics β†’ Client Status in CRM, or Quality Control β†’ Funnel distribution
How fast and how well do human managers reply?Quality Control β†’ Lead distribution overview
Are leads waiting with no manager assigned?Quality Control β†’ Unassigned active leads card

Analytics ​

Open Analytics in the sidebar (app.mychatbot.app/dashboard). The page has three blocks, top to bottom: General statistics, Scenario analytics, and a grid of channel charts.

General statistics ​

The header shows your remaining balance β€” "N Messages Left" β€” with a Top up messages button (see Topping up below).

Filter the stats with the dropdown row, then read the metric cards:

FilterOptions come from
AgentYour AI agents (projects)
ChannelChannels seen in your data, plus All
CampaignAd/UTM campaigns detected in your conversations
Date3 days / 7 days / 30 days / All time / Custom (date-range picker)
PipelinePipelines configured for your account
StatusYour CRM funnel statuses
LabelsYour CRM labels

Filters live in the URL

Every filter you pick is written into the page URL β€” copy the link to share the exact filtered view with a colleague, or bookmark it.

Metric cards (each shows the value plus a percentage change badge labelled vs prev month):

CardWhat it tells you
Total saleTotal sales amount for the filtered period
Number of salesHow many sales closed
Active chatsConversations currently active
Average chat costWhat one conversation costs you on average
Total costTotal conversation cost for the period
Average saleAverage order value
Average chat msgsAverage messages per conversation
LTVCustomer lifetime value

"vs prev month" really means "vs the previous period of the same length"

The badge compares your selected range against the equally long period immediately before it β€” with Date β†’ 7 days you're seeing the last 7 days vs the 7 days before them; a Custom range is compared against the same-length stretch ending the day before your range starts. Only the 30 days filter makes the label roughly literal. Two special cases: with All time there is no earlier period to compare against, so every badge is pinned at 100% β€” ignore it; and a card shows no badge at all when that metric was zero in the previous period (there's nothing to compare to).

If a section can't load you get a Try again button; with no matching data it shows "No data available".

Where the sales numbers come from ​

Total sale, Number of sales, Average sale and LTV β€” plus the Revenue by Channel and Orders by Channel charts below β€” are all computed from orders recorded on your account. One sale = one order; the amount is that order's total. Nothing else feeds them: moving a lead to a "won" CRM status, labels, or funnel stages do not create revenue here. Until orders are being recorded, every sales card stays at 0 / "No data available".

An order (and therefore a sale) is recorded when:

EventWhere you set it up
Your assistant creates an order during a chat with the built-in Orders integrationIntegrations β†’ Order Management β†’ Orders on app.mychatbot.app/integration β€” see Orders
Your assistant creates an order or deal in a connected external system β€” KeyCRM, SalesDrive, Bitrix24, Kommo, HubSpot, Zoho, Salesforce, Monday, GoHighLevel, Odoo, OneBox, Sitniks, Altegio, or Spreadsheet Orders. A copy with the deal amount is kept on the platform for analyticsThe CRM's card on Integrations β€” see Integrations overview
You add an order by hand with Create order on the Orders pageapp.mychatbot.app/orders β€” see Orders

Each sale stays linked to the conversation it came from β€” that link is what lets the Agent, Channel, Campaign and CRM filters slice revenue, and what attributes orders to channels in Revenue by Channel / Orders by Channel.

Amounts are shown in your currency β€” and never converted

The revenue cards show plain numbers in whatever currency your orders are recorded in: the Currency you picked when connecting Orders (USD by default), or the currency your CRM sends. There is no exchange-rate conversion β€” if you record orders in more than one currency, Total sale adds the raw numbers together. Keep all order sources in a single currency if you want the revenue cards to be meaningful.

What the dollar costs mean ​

Average chat cost, Total cost, and every "$X" in Scenario analytics measure the same thing: the AI messages your conversations consumed from the balance in the header, multiplied by your account's per-message price.

  • A "message" is a metering unit of AI work, not one chat bubble. Conversations with long histories, attached documents, or heavy tool use draw more from the balance per reply than short ones β€” which is also why Average chat msgs rarely matches the bubbles you'd count by hand.
  • One rate for the whole account. Your per-message price depends on your subscription plan and the AI model your account runs on β€” channels and scenarios are not priced differently. When Scenario analytics shows one channel costing more, that channel used more at the same rate.
  • Read your live rate off the top-up dialog. Open Top up messages and look at the cost line β€” "Total cost for N AI Messages would be $X" β€” X Γ· N is what one message costs you. Plans and their message allowances live on app.mychatbot.app/subscription.
  • Voice plans share the balance at 5 messages per minute. The sidebar and top-up dialog just divide the same message balance by 5 β€” "N minutes left" means N Γ— 5 messages, and the 500-message package appears as 100 voice minutes.

Topping up messages ​

Top up messages (or Top up under the balance in the sidebar) opens the AI Messages purchase dialog:

ControlBehavior
"Select the amount of messages"Package buttons from 100 up to 7,000 messages
Enable auto top-upRecharges automatically; set the "Auto top-up when below" threshold (default 200 messages)
Cost line"Total cost for N AI Messages would be $X" updates as you pick a package
Buy tokens now / Proceed to paymentAccounts with an active subscription get a one-click Confirm Token Purchase dialog ("You can review your payment method or proceed directly with the purchase."); otherwise you're taken to a secure checkout page

After a successful checkout you return to Analytics with the toast "Payment successful! Thank you for your purchase."

Voice plans

On voice plans the sidebar balance counts minutes and the same dialog appears as Voice Minutes β€” "Select the amount of voice minutes", with the cost line "Total cost for N voice minutes would be $X". It's the same balance, just shown in minutes at 1 voice minute = 5 messages (so the 500-message package shows as 100 minutes).

Turning auto top-up off saves immediately

Unchecking Enable auto top-up persists right away β€” you don't have to complete a purchase for the recurring charge to stop. Turning it on is saved together with your next purchase. If saving fails you'll see "We couldn't turn off auto top-up. Please try again." (or the enable variant), and the checkbox reverts to the real server state.

Scenario analytics ​

"Track message volume, unique clients, and costs per project (assistant) and scenario." This is the cost-accounting view: every project (AI agent) is a card, and every scenario inside it is a table row. Every dollar amount here uses the account-wide per-message rate β€” see What the dollar costs mean β€” so a scenario that costs more is a scenario that used more.

Filters:

FilterBehavior
ProjectAll projects (default) or a single agent
Time zoneSearchable list; defaults to your browser time zone and is remembered for next visits
Date3 days / 7 days / 30 days (default) / All time / Custom

Layout behavior:

  • The project with the highest total cost is shown expanded at the top.
  • All other projects are collapsed rows with a summary β€” "N messages β€’ M clients β€’ $X cost" β€” and Project expenses by channel chips (top channels with per-channel cost; hover a chip for "Total project cost via <channel> for the selected period: $X").
  • Use Expand all / Collapse all to open or close every project at once.

Each project table has these columns (hover a header for its tooltip):

ColumnTooltip
ScenarioThe scenario/flow inside the project
Expenses by channel"Cost breakdown by communication channel for this scenario."
Messages sent"Total number of messages sent within this scenario for the selected period."
Unique clients"Number of unique clients reached in this scenario for the selected period."
Total cost"Total communication cost for this scenario (sum across channels) for the selected period."

Channel charts ​

Six chart cards close the page. Each has its own Date filter (3 days default; 7 days / 30 days / All time / Custom available) and its own loading, "No data available", and Try again states.

ChartWhat it shows
Revenue by ChannelRevenue per channel for the period, with an overall change percentage
Orders by ChannelShare of orders per channel (percentage bar + order count)
Messages by ChannelHow message volume splits across channels
Client Status in CRMDoughnut of clients by CRM funnel status β€” the largest slice's percentage is highlighted in the middle
Message UsageAI messages used over time β€” "N messages were used on this week" by default
Platform UsageShare of conversation traffic per channel

Message Usage has a detailed view

Hover the arrow button on the Message Usage card β€” "Click to expand and view detailed statistics" β€” to open a full-screen bar chart with Last 7 days, Last 30 days, Last 6 months, and Custom range presets (long ranges are grouped into date buckets; click a bucket to zoom in). Close it with Close detailed view.


Quality Control ​

Open Quality Control in the sidebar (app.mychatbot.app/quality-control). It's the supervisor view of your human team: "Monitor how quickly and how well your managers respond, track team workload, and see where leads sit in the funnel."

Lead distribution overview ​

"Current workload, availability, response speed, and communication quality per manager for the selected period."

Controls: a date filter β€” Last 7 days, Last 30 days (default), This month, Custom range β€” and a Refresh button.

Three summary cards:

CardMeaning
Unassigned active leads"Open leads with no manager assigned yet. These are waiting to be distributed to your team."
Team members tracked"Account owner and operators (moderators) included in distribution metrics."
Assigned active leads"Open leads already assigned to managers listed below (not closed, won, or lost)."

The manager table has one row per team member:

ColumnWhat it shows
ManagerName, role badge, and email/phone
AvailabilityPresence badge: Online / Away / Busy / Offline
Active leadsOpen leads currently assigned to this manager
Avg first responseAverage time to the manager's first reply (e.g. 45s, 3m 20s, 1h 5m)
Replied handoffsHanded-over conversations the manager has replied to in the period
Total handoffsAll conversations handed over to the manager in the period
Total proc. timeTotal time spent processing handoffs; shows In progress while handoffs are open but none finished yet
Quality scoreCommunication-quality score as a percentage β€” see How the Quality score works. Shows No quality data yet until conversations have been scored

Cells with nothing to measure show an em dash (β€”).

Who appears in the table

The table lists the account owner plus every operator you've added β€” team members with no activity yet still get a row (Offline, zeroes). If it's empty you'll see "No team members in the distribution queue yet." with the hint "Add operators on the Team management tab β€” their workload and availability will appear here. The account owner is included automatically." Operators are managed under Settings β†’ Operators, where the same metrics also live on the Lead distribution tab.

If loading fails: "Could not load manager metrics. Please try again." β€” use Refresh.

How the timing and availability columns are measured ​

First, what a handoff is. A handoff starts the moment a chat switches from AI to a human: someone turns the chat's AI switch off, an operator simply replies while AI is on (implicit handoff), the operator types the configured stop word, or the agent hands over by itself β€” whichever of these you've enabled under Handoff Control in the agent's configuration (see Chats β€” manual takeover vs AI). A handoff finishes when the chat returns to AI: someone flips the AI switch back on, or Auto return from handoff does it automatically after the configured interval (24 hours by default, adjustable per agent under Handoff Control).

ColumnClock startsClock stopsNotes
Avg first responseThe handoff momentThat manager's first reply in the chatPure wall-clock time β€” nights, weekends, and off-hours all count. Averaged only over handoffs that actually got a reply; handoffs nobody answered lower Replied handoffs, not this average
Total proc. timeEach handoff momentThe chat's return to AISums every finished handoff in the period. Handoffs still in operator mode aren't counted yet β€” a manager whose handoffs are all still open shows In progress
Availabilityβ€”β€”Derived from app activity, never set by hand: a signed-in team member's browser checks in roughly every 45 seconds while an app tab is open, and anyone whose last check-in is older than about 2 minutes shows Offline. The badge is therefore at most a couple of minutes behind reality

The same clocks, per conversation

The chat header in Chats runs the identical timers per conversation β€” First response ("Time from handoff to the operator's first reply.") and Processing / Processed ("Total time this chat has been in operator mode since the latest handoff."). If a row in this table looks off, open that manager's chats and read the per-chat timers.

How the Quality score works ​

The score is produced automatically by an AI reviewer β€” there is nothing to configure and no way (or need) to trigger it by hand:

  • What gets scored: every finished handoff β€” a stretch of conversation a human handled that has since returned to AI. Chats still in operator mode aren't judged mid-flight.
  • The criteria: the reviewer reads only the handoff transcript and rates the manager's communication from 0 to 100 on tone and professionalism, helpfulness and relevance of the replies, and whether the customer's need appears to have been addressed. A handoff where the manager never replied scores low.
  • When it runs: in batches a few times a day. A handoff finished this morning typically shows up in the score later the same day β€” until then the column simply doesn't move (or still says No quality data yet).
  • What the percentage is: the average across that manager's scored conversations within the selected date range. No quality data yet means none of their handoffs in the range have been scored so far.
  • Drilling in: per-conversation scores aren't shown anywhere in the UI. To audit a number, open the manager's handled conversations in Chats and read the transcripts β€” the per-chat First response / Processed timers in the chat header give you the matching speed context.

Funnel distribution ​

"Where leads currently sit across funnel stages. Watch the lost and closed stages to spot where leads drop off."

This is the same Client Status in CRM doughnut as on the Analytics page β€” clients split by CRM funnel status for the selected period, with its own Date filter (3 days default). Statuses come from your pipeline setup, so a clean funnel here starts with clean labels & statuses.


Use cases ​

  • Weekly cost review β€” Scenario analytics, 30 days: sort out which project and which scenario drives Total cost, and which channel inside it is the expensive one.
  • Campaign ROI β€” General statistics filtered by Campaign + Date: compare Total sale and Total cost per ad campaign.
  • Channel mix decisions β€” compare Revenue by Channel against Messages by Channel: a channel with lots of messages but little revenue is a prompt/product problem, not a traffic problem.
  • Morning supervisor check β€” Quality Control: any Unassigned active leads? Who's Online? Whose Avg first response is creeping up?
  • Funnel leak hunting β€” Funnel distribution: if lost/closed stages grow week over week, follow up with Follow-ups before leads go cold.
  • Balance safety net β€” turn on Enable auto top-up so the assistant never stops mid-conversation because the message balance hit zero.

Test it ​

  1. Open app.mychatbot.app/dashboard. Set Date β†’ 7 days and pick one Agent β€” the metric cards reload, and the URL now carries your filters. Reload the page: the same filters should still be applied.
  2. In Scenario analytics, pick a single Project and hover the Expenses by channel chips and column headers β€” each shows its tooltip with the per-channel cost. Click Expand all and check that every project card opens.
  3. On the Message Usage card, click the expand arrow. In the detailed view choose Last 30 days, then Close detailed view.
  4. Send a few test messages to your agent (e.g. through the Website Widget), then set the charts' Date to 3 days β€” Messages by Channel and Platform Usage should reflect the new traffic.
  5. With the Orders integration connected, place a test order in a chat (e.g. "I'd like to order 2 of these" and answer the assistant's questions). On Analytics with Date β†’ 3 days, Total sale and Number of sales should count it, and Revenue by Channel should credit the channel the chat came from.
  6. Open app.mychatbot.app/quality-control. Confirm the account owner (you) has a row, with Availability = Online.
  7. Have a test conversation handed over to a manager, reply as that manager, then hit Refresh with Last 7 days selected β€” Replied handoffs should count it and Avg first response should show your reply time. Then flip the chat's AI switch back on to finish the handoff β€” after another Refresh, Total proc. time gains that handoff's duration.
  8. In Funnel distribution, move a test lead to another funnel status in your CRM/chats, then re-check the chart β€” the status split should shift.

See also ​

  • Sales Platform overview β€” what else the platform does.
  • Orders β€” the order records behind Total sale, Revenue by Channel and the other revenue cards, and how to connect them.
  • Chats β€” handoffs, the per-chat First response / Processing timers, and the AI switch behind the Quality Control metrics.
  • Labels & statuses β€” the pipeline statuses behind Client Status in CRM and Funnel distribution.
  • Follow-ups β€” act on the drop-offs you spot in the funnel.
  • CRM & integrations overview β€” where sales and lead data come from.