The most common FlutterFlow analytics problem is checking standard Firebase Analytics reports immediately after logging an event — standard reports have a 24-hour processing delay. Use the Realtime tab to verify events are arriving. Other frequent issues include duplicate events from widget rebuild loops, events not appearing due to naming rule violations, and broken funnels because screen_view events are not firing correctly. Each problem has a specific diagnostic step.
Why FlutterFlow Analytics Problems Are Tricky
Firebase Analytics has an invisible delay that catches every developer off guard: standard reports aggregate data with a 24-hour delay. This means logging an event and then checking the Events report in Firebase Console will show nothing for up to a full day, leading to hours of debugging a system that is actually working correctly. Beyond the delay, FlutterFlow-specific issues include events firing on every widget rebuild (instead of once per user action), event names that silently fail because they contain spaces or start with numbers, and screen tracking that breaks because FlutterFlow's navigator does not always fire the automatic screen_view event. This guide covers each category with exact diagnostic steps.
Prerequisites
- FlutterFlow project with Firebase Analytics enabled and google-services.json configured
- App tested on a real device or simulator (Analytics does not work in FlutterFlow's web Run Mode for mobile-specific events)
- Firebase Console access with at least Viewer permissions
Step-by-step guide
Verify events using the Realtime tab before assuming nothing works
Verify events using the Realtime tab before assuming nothing works
If you logged an event in FlutterFlow and cannot find it in Firebase Console > Analytics > Events, do not spend time debugging your implementation yet. Go to Firebase Console > Analytics > Realtime. This view shows events arriving in the last 30 minutes, updated every few seconds. Trigger the event on your device and watch the Realtime view. If the event appears here, your implementation is correct — the main Events report will populate within 24 hours. If the event does not appear in Realtime after triggering it multiple times, then you have a real implementation problem to debug.
Expected result: You can confirm within 2 minutes whether an event is being sent, without waiting 24 hours.
Fix event names that violate Firebase naming rules
Fix event names that violate Firebase naming rules
Firebase Analytics silently drops events whose names violate its rules — no error is thrown, the event just never appears anywhere. Rules: event names must be 1-40 characters, start with a letter, contain only letters, numbers, and underscores (no spaces, hyphens, or special characters), and must not start with 'firebase_', 'google_', or 'ga_'. In FlutterFlow check every Analytics Action you added and review the event name field. Common violations: 'button click' (has a space — should be 'button_click'), '1st_purchase' (starts with a number — should be 'first_purchase'), 'add-to-cart' (has a hyphen — should be 'add_to_cart').
Expected result: Renamed events appear in the Realtime tab within 30 seconds of triggering them on a test device.
Find and fix duplicate events from widget rebuilds
Find and fix duplicate events from widget rebuilds
If an event shows 10x more occurrences than expected, the likely cause is that it is logged inside a widget's build method or inside an action that fires on every state change. In FlutterFlow, check whether the Analytics Action is attached to: a widget's On Initialize property (fires every time the widget rebuilds), a Text Field's On Change (fires on every keystroke), or a conditional widget that re-evaluates frequently. Move analytics logging to explicit user actions: button taps, page loads (using the page's On Load action, which fires once per navigation), or form submissions. Never log analytics inside any action that fires based on a variable change.
Expected result: Event counts match expected user action frequency. The events-per-user ratio is within a normal range.
Fix missing screen_view events for funnel analysis
Fix missing screen_view events for funnel analysis
Firebase Analytics automatically fires screen_view events when the navigator changes pages. In FlutterFlow this usually works, but it breaks in two common scenarios: when you navigate using a dialog or bottom sheet (these do not trigger screen_view because they overlay the existing route) and when you use a PageView or TabBar to switch content within a page (no navigation event fires). For these cases, manually log a screen_view event using a Firebase Analytics Custom Action. Call analytics().logScreenView(screenName: 'ScreenName') in the dialog's On Open action or the tab's On Selected action. Also set the screen name as a user property so it appears in session-level reports.
1// Custom Action: logScreenView.dart2import 'package:firebase_analytics/firebase_analytics.dart';34Future logScreenView(String screenName) async {5 await FirebaseAnalytics.instance.logScreenView(6 screenName: screenName,7 screenClass: screenName,8 );9}Expected result: All key screens appear in Firebase Console > Analytics > Screens, including dialogs and tab content.
Debug broken funnels in Firebase Analytics
Debug broken funnels in Firebase Analytics
A funnel in Firebase Analytics shows how many users complete each step of a flow (e.g., product_view > add_to_cart > purchase). If your funnel shows 0% completion at a step, the event at that step is not being logged. Common causes: the action that logs the event is unreachable (behind a condition that never evaluates true), the event name has a typo compared to the funnel definition, or the user parameter you filter by does not match. To debug: in Firebase Console > Analytics > Events, search for the event name. If it shows zero occurrences, the event is never logged. If it shows occurrences but the funnel shows 0%, check your funnel definition for a mismatched event name or user property filter.
Expected result: Each funnel step shows a corresponding event in the Events list, and the funnel completion rate is non-zero.
Complete working example
1// Custom Actions for Firebase Analytics in FlutterFlow2// Add firebase_analytics to your FlutterFlow packages3import 'package:firebase_analytics/firebase_analytics.dart';45final _analytics = FirebaseAnalytics.instance;67/// Log a custom event with optional parameters8/// eventName: snake_case, 1-40 chars, starts with letter9Future<void> logEvent(10 String eventName,11 Map<String, dynamic>? parameters) async {12 await _analytics.logEvent(13 name: eventName,14 parameters: parameters,15 );16}1718/// Log a screen view (use for dialogs, tabs, bottom sheets)19Future<void> logScreenView(String screenName) async {20 await _analytics.logScreenView(21 screenName: screenName,22 screenClass: screenName,23 );24}2526/// Set a user property (e.g., subscription plan, user segment)27/// name: 1-24 chars. value: 1-36 chars28Future<void> setUserProperty(29 String name, String? value) async {30 await _analytics.setUserProperty(31 name: name,32 value: value,33 );34}3536/// Log a purchase event with required Ecommerce parameters37Future<void> logPurchase(38 String transactionId,39 double value,40 String currency) async {41 await _analytics.logPurchase(42 transactionId: transactionId,43 value: value,44 currency: currency,45 );46}4748/// Log a standard funnel step event49Future<void> logFunnelStep(50 String funnelName, int stepNumber, String stepName) async {51 await _analytics.logEvent(52 name: '${funnelName}_step_$stepNumber',53 parameters: {54 'funnel_name': funnelName,55 'step_name': stepName,56 'step_number': stepNumber,57 },58 );59}Common mistakes when troubleshooting Common FlutterFlow Analytics Problems
Why it's a problem: Checking standard Analytics reports immediately after sending an event
How to avoid: Always use the Realtime tab in Firebase Console > Analytics to verify events are arriving. Standard reports will populate within 24 hours.
Why it's a problem: Using event names with spaces, hyphens, or capital letters
How to avoid: Use only snake_case event names: lowercase letters, numbers, and underscores. Test every new event name in the Realtime tab on a device immediately after implementing it.
Why it's a problem: Placing analytics logging inside FlutterFlow widget On Initialize actions
How to avoid: Log analytics events only in response to explicit user actions (button taps, form submissions) or page navigation events (On Page Load, which fires once per navigation).
Best practices
- Maintain a spreadsheet of all your event names, their trigger points, and expected parameters so your team uses consistent naming across the app.
- Enable Firebase Analytics DebugView during development (adb shell command on Android) to see events flowing in near-real time without the 24-hour delay.
- Set user properties for key segments (subscription plan, user role, onboarding segment) immediately after login so all subsequent events are attributed correctly.
- Use Firebase Analytics' standard event names (logPurchase, logAddToCart, logLogin) rather than custom equivalents where they apply — standard events unlock automatic reports like ARPPU and purchase funnels.
- Review your event count vs session count ratios weekly in Firebase Console. Events with unrealistically high ratios indicate duplicate logging from rebuild loops.
- Test analytics on a real device, not FlutterFlow's Run Mode — some analytics events behave differently in the web preview environment.
- Create a Firebase Analytics audience for each user segment and link it to Google Ads and Firebase Notifications for targeted campaigns.
Still stuck?
Copy one of these prompts to get a personalized, step-by-step explanation.
I'm using Firebase Analytics in my FlutterFlow app and my events are not showing up in the Firebase Console. Walk me through the diagnostic process: how do I use the Realtime tab to verify events, what naming rules can cause silent failures, and what are the most common FlutterFlow-specific causes of missing or duplicate analytics events?
Write a set of FlutterFlow Custom Actions in Dart that wrap the firebase_analytics package. I need functions for logging custom events with parameters, logging screen views for dialogs and tabs, setting user properties, logging standard purchase events, and logging funnel step events with a consistent naming pattern.
Frequently asked questions
How long do I have to wait to see events in Firebase Analytics?
Standard reports in Firebase Console > Analytics > Events have a 24-hour processing delay. The Realtime tab shows events within 30 seconds. DebugView shows events almost instantly when enabled on a debug device.
Why do my events show in Realtime but not in standard reports?
This is normal if it has been less than 24 hours since you sent the event. If events still do not appear after 48 hours, check whether you have sampling enabled (large-volume apps may have sampling applied, which reduces visible event counts) or whether the events are being filtered by your Analytics data filters.
Can I delete incorrectly named events from Firebase Analytics?
No. Firebase Analytics retains all event data permanently and does not support deleting individual events. You can archive events in the Events report so they no longer appear in your main view, but the underlying data remains. The best approach is to fix the event name going forward and create a new correctly-named event.
Why is my event count much higher than the number of users who triggered it?
High event-to-user ratios almost always indicate the event is being logged in a widget rebuild loop or in an action that fires on every state change. Check where the analytics action is attached in FlutterFlow and move it to a user-initiated trigger instead.
Does FlutterFlow's Run Mode support Firebase Analytics?
Firebase Analytics works in Run Mode for web-targeted events, but mobile-specific analytics behaviors (screen tracking tied to native navigation, some automatic events) are only reliable when testing on a real device using a debug or release build distributed via Firebase App Distribution or TestFlight.
How many custom events can I have in Firebase Analytics?
Firebase Analytics allows up to 500 distinct event names per app. Each event can have up to 25 parameters, each parameter name up to 40 characters, and string values up to 100 characters. These limits are per app, and unused events can be archived but not deleted.
Talk to an Expert
Our team has built 600+ apps. Get personalized help with your project.
Book a free consultation