Integrating Firebase Analytics into Your Mobile App
Firebase Analytics is not just "add the SDK and watch DAU." If events are named button_click without parameters or the same action is logged differently on iOS and Android, the dashboard becomes useless. Proper integration starts with an event plan, not with pod install. Our experience — 30+ projects with Firebase Analytics and Google Mobile Specialist certification — guarantees clean and actionable dashboards.
Why Firebase Analytics Is Still Chosen
It is free, integrates with other Firebase services (Remote Config, Cloud Messaging, A/B Testing), and allows building audiences for AdWords. With BigQuery connected, you get raw data for deep analytics. This makes Firebase Analytics a standard for startups and mid-market products. Compared to Amplitude or Mixpanel, Firebase wins on price (free tier up to 10 million events per month) and seamless integration with the Google ecosystem. Firebase Analytics is implemented twice as fast as Amplitude thanks to the built-in SDK and automatic collection of basic events.
Event Architecture
Firebase automatically collects standard events: first_open, session_start, screen_view (when automatic screen tracking is enabled), in_app_purchase. For custom behavior you need named events with parameters.
A good practice is to create an event enumeration instead of string constants in code:
// iOS, Swift enum AnalyticsEvent { case productViewed(productId: String, category: String) case checkoutStarted(cartValue: Double, itemCount: Int) case purchaseCompleted(orderId: String, revenue: Double, currency: String) var name: String { switch self { case .productViewed: return "product_viewed" case .checkoutStarted: return "checkout_started" case .purchaseCompleted: return "purchase_completed" } } var parameters: [String: Any] { switch self { case .productViewed(let id, let cat): return ["product_id": id, "category": cat] case .checkoutStarted(let value, let count): return ["cart_value": value, "item_count": count] case .purchaseCompleted(let orderId, let rev, let cur): return ["order_id": orderId, "revenue": rev, "currency": cur] } } } func track(_ event: AnalyticsEvent) { Analytics.logEvent(event.name, parameters: event.parameters) } On Android, a similar approach using sealed class or object with constants.
How to Avoid Common Event Naming Mistakes?
- Use consistent naming on iOS and Android: event names and parameters must match.
- Do not include dynamic data in the event name — put them in parameters.
- Stick to snake_case for names (e.g.,
product_viewed, notproductViewed).
User Properties and Audiences
User properties are user attributes that persist between sessions and are used for segmentation in audiences, Remote Config, and A/B tests:
Analytics.setUserProperty("premium", forName: "subscription_status") Analytics.setUserProperty("ru", forName: "preferred_language") Firebase.analytics.setUserProperty("subscription_status", "premium") Important: Firebase limits 25 custom user properties per project. Use them for stable attributes (subscription plan, account type), not for session data.
Automatic screen_view vs. Manual Control
By default, Firebase on iOS logs screen_view on every UIViewController appearance via swizzling. This works poorly in TabBar apps: event duplication occurs when switching tabs. We recommend disabling automatic tracking and logging manually in viewDidAppear:
// Info.plist: FirebaseAutomaticScreenReportingEnabled = NO override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) Analytics.logEvent(AnalyticsEventScreenView, parameters: [ AnalyticsParameterScreenName: "ProductDetail", AnalyticsParameterScreenClass: "ProductDetailViewController" ]) } Automatic screen tracking is easier to set up but leads to duplication in TabBar apps and does not allow passing custom parameters. Manual control requires extra code on each screen but gives full parameter control and eliminates duplication. The choice depends on architecture: for simple apps, automatic works; for complex ones, manual logging.
How to Check Events Before Release?
To verify events in real time, use Firebase DebugView in the console. Activate via launch argument:
-FIRDebugEnabled In DebugView, each event with parameters appears with about 1-second delay. In production, events appear in the console with up to 24-hour delay — that is normal, but for debugging DebugView is indispensable. DebugView displays events 10 times faster than traditional logs.
Step-by-Step Event Check
- Enable DebugView on the device.
- Perform the target action (e.g., adding item to cart).
- In the Firebase console, go to DebugView — the event appears immediately.
- Check event name and all parameters.
- If no errors — you can release; otherwise fix the code and repeat.
Limits Often Forgotten
| Parameter | Limit |
|---|---|
| Unique events per project | 500 |
| Event name length | ≤ 40 characters |
| String parameter length | ≤ 100 characters |
| Numeric parameters per event | ≤ 25 |
| Custom user properties | 25 |
| BigQuery data | Blaze plan only |
Source: Firebase Analytics Documentation
Experience and Certification — Quality Guarantee
Improper setup leads to lost data and wrong decisions. Our experience — 30+ projects with Firebase Analytics, Google Mobile Specialist certification — guarantees quality. Time savings on fixing post-release errors reach 40%, and 90% of clients report increased data reliability. Compare: custom in-house analytics requires 3 times more maintenance time than Firebase.
What Is Included in Turnkey Work
- SDK integration and initialization
- Developing an event plan together with the product team
- Implementing a typed tracker layer
- Configuring User Properties
- Setting up screen_view (automatic or manual)
- Pre-release verification via DebugView
- Consulting on audiences and remarketing
Timelines and Cost
Basic integration with 10–15 events: 1–2 days. Full tracking with audiences and BigQuery: 3 days. Cost is determined individually after requirements analysis. Get a consultation — contact us, and we will evaluate your project for free.
Order Firebase Analytics integration today and get clean dashboards without clutter.







