Chatbot Funnels and Conversions: Analytics in Mobile Apps
Many apps implement chatbots, but without analytics, they remain a black box. You don't know how many users complete the funnel, where they drop off, or which scenario converts best. We solve this by embedding detailed analytics directly into the app. Our engineers configure event collection, build funnels, and calculate conversions so you can see every user step and improve the bot in time.
Why Chatbot Analytics Is Critical for Mobile Apps?
Without analytics, you're flying blind. Drop-off points stay hidden, and budget spent on developing new scenarios goes to waste. Analytics gives answers: which scenario retains users, where they get stuck, and which steps lead to the goal. With these data, you can iteratively improve the bot, boosting conversion 2-3 times. Example: one of our clients after implementing analytics increased lead conversion by 140% in a month.
Chatbot Funnel: From Logging to Visualization
A funnel is a sequence of steps (states) in a scenario. User starts the bot → sees greeting → answers qualification question → clicks transition button → leaves contact → receives offer. On the backend, each event is logged with user_id, conversation_id, step_name, timestamp. The funnel is built by aggregation: count of unique users who reached each step.
-- Example funnel aggregation
SELECT
step_name,
COUNT(DISTINCT user_id) as users,
LAG(COUNT(DISTINCT user_id)) OVER (ORDER BY step_order) as prev_step_users
FROM conversation_events
WHERE bot_id = $1 AND created_at BETWEEN $2 AND $3
GROUP BY step_name, step_order
ORDER BY step_order;
Conversion per step = users / prev_step_users. The mobile app receives ready funnel data via API.
Funnel Visualization
Classic funnel — descending horizontal bars. Bar color encodes step conversion: green for >70%, orange for 40-70%, red for <40%. This immediately highlights bottlenecks.
// Flutter — custom funnel widget
class FunnelChart extends StatelessWidget {
final List<FunnelStep> steps;
@override
Widget build(BuildContext context) {
final maxUsers = steps.first.users;
return Column(
children: steps.map((step) {
final widthFraction = step.users / maxUsers;
final conversion = step.conversionFromPrev;
return Padding(
padding: const EdgeInsets.symmetric(vertical: 2),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(step.name, style: Theme.of(context).textTheme.labelMedium),
Row(
children: [
Expanded(
child: FractionallySizedBox(
widthFactor: widthFraction,
child: Container(
height: 36,
decoration: BoxDecoration(
color: _conversionColor(conversion),
borderRadius: BorderRadius.circular(4),
),
alignment: Alignment.centerRight,
padding: const EdgeInsets.only(right: 8),
child: Text(
'${step.users} (${(conversion * 100).toStringAsFixed(1)}%)',
style: const TextStyle(color: Colors.white, fontSize: 12),
),
),
),
),
],
),
],
),
);
}).toList(),
);
}
Color _conversionColor(double conversion) {
if (conversion > 0.7) return Colors.green;
if (conversion > 0.4) return Colors.orange;
return Colors.red;
}
}
Metrics, Dashboard, and A/B Tests
Besides the funnel, the chatbot analytics dashboard includes several blocks.
Operational Metrics (for selected period)
- Total new conversations
- Average conversation duration
- % conversations handed over to operator
- % conversations with no user response (dropped after first bot message)
Conversion Metrics
- Target events (depends on bot: submitted application, left contact, clicked offer button)
- Conversion by channel: Telegram vs. WhatsApp vs. Web Widget
Retention
- How many users returned to the bot after 7 days, 30 days
Period is selected via date picker — last 7 days / last 30 days / custom range. Custom range on mobile uses showDateRangePicker (Flutter) or UICalendarView (iOS 16+).
Scenario Comparison (A/B)
If the bot runs A/B test scenarios, we show parallel funnels. Table: rows — funnel steps, columns — variant A and variant B with conversion per step. The cell with the better result gets green background.
| Step | Variant A | Variant B |
|---|---|---|
| Start | 1,240 (100%) | 1,198 (100%) |
| Qualification | 890 (71.8%) | 956 (79.8%) |
| Offer | 320 (35.9%) | 412 (43.1%) |
| Application | 98 (30.6%) | 145 (35.2%) |
With analytics, conversion is 2-3x higher than without. Our clients report ROI on analytics investment within 3-6 months, yielding significant budget savings.
How We Ensure Data Accuracy?
We use proven backend solutions: server-side event logging with unique session ID and timestamps. To eliminate duplicates, we deduplicate by (user_id, conversation_id, step_name). Data is transferred to the mobile app via REST API with aggregated metrics, reducing client load. The entire pipeline is covered by unit and integration tests — over 5 years of experience ensures reliability.
What's Included in the Work and How We Do It
- Dashboard with key metrics and period switch
- Funnel visualization with color-coded conversion
- Breakdown by channel (Telegram, WhatsApp, Web)
- A/B variant comparison table
- Drill-down: tap on funnel step → list of users who stopped at that step
Details on drill-down
When tapping a funnel step, we display a list of users who did not proceed to the next step. For each, we show ID, last action timestamp, and channel. This allows analyzing behavior of specific segments.
Work Process
- Analysis: study bot scenarios, define key events and goals
- Design: develop logging schema and API for mobile app
- Implementation: configure backend, write visualization widgets in Flutter/Swift/Kotlin
- Testing: verify funnel accuracy and calculation correctness
- Deployment: deploy dashboard in the app, train the team
Timelines and Cost
Basic integration with dashboard and funnel takes 5-7 business days. Cost is calculated individually after requirements analysis. Project assessment is free — contact us. ROI on analytics investment is 3-6 months due to conversion increase.
Get a consultation: reach out to discuss your chatbot. Request a free audit of your bot.







