GA4 and Firebase: How the Integration Works and What to Audit
GA4 is the native analytics layer for Firebase apps. The integration is seamless in setup but deceptively complex in practice, the data model, session definition, and event schema all differ from web GA4, and the two streams are often combined in a single GA4 property in ways that distort cross platform reporting.
How Firebase connects to GA4
When you enable Google Analytics in a Firebase project, Firebase automatically creates a GA4 property and begins streaming app events to it. The Firebase SDK handles event collection, you don't need gtag. js or GTM.
Events are batched and sent periodically rather than in real time, which means app events appear in GA4 with a slight delay compared to web events.
If you're running a combined web + app property (a single GA4 property with both web data streams and Firebase app data streams), be aware that sessions, user counts, and engagement metrics are calculated differently for each stream.
Cross-stream comparisons require careful dimension filtering to avoid comparing web sessions to app sessions directly.
Key differences in the data model
App sessions use the Firebase session model: a session starts when the app is brought to the foreground and ends after 30 minutes of inactivity.
Web sessions use the GA4 web session model (same 30-minute timeout but tied to page context). The two models produce different session counts for the same user behaviour.
User identification also differs. Web uses a browser based client_id. Apps use a Firebase app_instance_id.
When users log in, the user_id parameter can unify cross platform identity, but this requires explicit implementation, the SDK does not automatically link web and app sessions for the same logged in user without the user_id parameter being set consistently in both.
Auditing a Firebase GA4 implementation
Check that standard app events are firing correctly: first_open, app_update, session_start, and screen_view are automatically collected by Firebase.
Custom events should be named consistently with your web event naming convention (both using snake_case) if you want to compare behaviour across platforms.
For e commerce apps, verify that in app purchase events follow the GA4 e commerce schema with the items array.
Firebase's automatic in app purchase tracking captures the transaction but not the product detail, you need to implement the full GA4 purchase event manually to get item level reporting.
Audit the Firebase DebugView (available in Firebase Console → Analytics → DebugView) to validate event parameters in real time during development.
Ready to audit your GA4 property?
Run a full GA4 audit in under 10 minutes. Free to start.
Start Free Audit