How does GA4 app tracking work?
GA4 app tracking is powered by the Firebase SDK (Google Analytics for Firebase). Unlike web tracking (which uses a JavaScript tag), app tracking requires integrating the Firebase SDK into your iOS or Android app's native code.
The Firebase SDK automatically collects app-specific events (app_open, session_start, first_open, in_app_purchase) and sends them to a GA4 app data stream. The key architectural difference from web: app data uses different session definitions, different user identifiers (app instance ID instead of _ga cookie), and different automatically collected events.
Web streams and app streams in the same GA4 property share the same reporting interface but the underlying data structures differ.
Setting up a GA4 App+Web property
An App+Web property is a GA4 property that has both a web data stream AND one or more app data streams (iOS, Android). This is the recommended setup for businesses with both a website and mobile apps — it allows unified cross-platform reporting in a single GA4 property.
Data streams in an App+Web property:
- Web stream: collects from your website via gtag.js or GTM
- iOS stream: collects from your iOS app via Firebase iOS SDK
- Android stream: collects from your Android app via Firebase Android SDK
The user identity challenge: Web users are identified by their _ga cookie (device-based). App users are identified by their app_instance_id (device-based, per app install). A user who browses your website and then uses your app is counted as two separate users unless User-ID is implemented on both platforms.
User-ID for cross-platform identity: Implementing User-ID on both web (via gtag('config', {..., 'user_id': hashedId})) and app (via FirebaseAnalytics.setUserId(hashedId)) enables GA4 to stitch the same user's web and app sessions together under a single identity — the most powerful application of App+Web properties.
Firebase SDK setup (Android)
Step 1 — Add dependency:
Want to see which hidden implementation gaps are affecting your GA4 data quality?
Step 2 — Initialise in Application class:
Step 3 — Send a custom event:
Step 4 — Set User ID:
Firebase SDK setup (iOS / Swift)
Automatically collected app events
The Firebase SDK automatically collects these events (no code required):
| Event | Trigger |
|---|---|
first_open | First time app is opened after install or reinstall |
app_open | Each time the app is brought to foreground |
session_start | User begins a new session (30 min timeout) |
user_engagement | App is in foreground for 1+ second |
in_app_purchase | User completes an in-app purchase (stores only) |
screen_view | Current screen changes (requires automatic screen reporting to be enabled) |
app_remove | App is uninstalled (Android only) |
app_update | App is updated to a new version |
Screen view automatic collection: Enable in Firebase SDK config (automaticScreenReportingEnabled = true) to auto-fire screen_view events when Activity/Fragment changes. For complex apps with custom navigation, manual screen_view events give more control.
App-specific metrics not available in web
| Metric | Definition | App only |
|---|---|---|
| DAU/MAU ratio | Daily active users / monthly active users | ✅ |
| App opens per user | App open events per user per period | ✅ |
| Session duration distribution | Distribution of session lengths | ✅ |
| Crash-free users | % of users with no crash events | ✅ (with Crashlytics) |
| In-app purchase revenue | Revenue from in-app purchases | ✅ |
FAQ: GA4 for App Tracking: Firebase, App+Web, and Cross-Platform Properties
What should a team validate first when ga4 for app tracking: firebase, app+web, and cross-platform properties appears?
How do I know whether the fix actually worked?
When should this become a full GA4 audit instead of a quick fix?
Related guides for GA4 for App Tracking: Firebase, App+Web, and Cross-Platform Properties
Server-Side GTM Hosting Cost Benchmarks: Cloud Run vs Stape vs Self-Hosted (2026)
Server-side GTM hosting falls into three pricing models in 2026: Google Cloud Run (variable, starts at ~€120/month for 3 minimal servers, scales to €240–€300 for higher traffic, plus optional logging fees), managed providers like Stape (fixed monthly: €20/month for 500k requests…
Server-Side GTM vs Client-Side GTM: A Decision Matrix (2026)
Move to server-side GTM if you (1) need Conversions API integrations with Meta, Google Ads, TikTok, or LinkedIn for offline-conversion match quality (the strongest single justification — typical 9–24% conversion lift)…
Run a GA4 audit before ga4 for app tracking: firebase, app+web, and cross-platform properties spreads into reporting decisions
Use GA4 Audits to surface implementation gaps, broken signals, and the next fixes to prioritize before the issue becomes harder to trust or explain.