Google Analytics 4 (GA4) introduced Data Streams as the foundational entry points for collecting user data. These streams funnel information from your website and mobile apps into a single, unified property. This structure is powerful, giving businesses a cross-platform view of the user journeyāsomething that was impossible in Universal Analytics.
But hereās the catch: flexibility can also bring confusion. A poorly planned Data Stream setup often leads to fragmented data, reporting issues, and distorted insights. To make GA4 work for you, itās crucial to understand how web and app streams are meant to functionāand avoid the most common anti-patterns.
The Golden Rule: One Logical User Base, One Property
Before diving into mistakes, letās revisit the GA4 hierarchy:
- A Property is designed for one logical user base (your brand).
- Data Streams are platform-specific sources (Web, iOS App, Android App) feeding into that property.
In practice, most businesses should set up GA4 as follows:
- One Property for your entire brand.
- One Web Stream for your website.
- One iOS App Stream for your iOS app.
- One Android App Stream for your Android app.
This ensures GA4 can use User ID and Google Signals to de-duplicate users and track their journey across platformsāwhether they first interact with your brand on the website and later convert in the app. Googleās official GA4 Data Stream guide confirms this recommended structure.
Anti-Pattern 1: Creating Separate Properties for Web and App
The mistake: Businesses create āMy Brand – Webā and āMy Brand – Appā as two different properties.
Why itās wrong:
- This destroys GA4ās core advantage: unified, cross-platform tracking.
- Users appear duplicatedāone for web, one for appāpreventing a holistic view of customer journeys.
The fix:
- Stick to one property per brand.
- Add a Web Data Stream and App Data Stream(s) to it.
- This way, GA4 shows you how a user discovered your website, then later installed your app and converted.
Anti-Pattern 2: Multiple Web Streams for Subdomains or Site Sections
The mistake: Creating different Web Streams for subdomains like yourcompany.com, blog.yourcompany.com, and support.yourcompany.com.
Why itās wrong:
- Fragmented Journeys ā A user going from main site ā blog looks like they left one site and entered another, breaking sessions and inflating user counts.
- Configuration Overhead ā Managing unwanted referrals, cross-domain tracking, and settings across multiple streams is complex and error-prone.
The fix:
- Use one Web Data Stream for the entire domain (including subdomains).
- Set up cross-domain tracking in that stream to preserve session continuity.
- Later, use the Hostname dimension in GA4 reports to segment traffic by subdomain if needed.
Anti-Pattern 3: Using a Web Stream to Track a WebView in an App
The mistake: Using the websiteās Measurement ID to track activity in a mobile app WebView.
Why itās wrong:
- A WebView is part of the app experience. Using a Web Stream breaks the chain of identity between native app screens and the WebView.
- App-specific identifiers like app_instance_id are lost.
The fix:
- Always use the Firebase SDK for app tracking (both native screens and WebViews).
- This ensures app sessions remain unified. Check the Firebase Analytics documentation for proper implementation.
Anti-Pattern 4: Inconsistent Event Naming Between Streams
The mistake:
- On web: tracking newsletter signups as generate_lead.
- On app: tracking the same event as new_subscriber.
Why itās wrong:
- GA4 treats these as separate events.
- Reports are fragmented, making it harder to count total signups across platforms.
The fix:
- Develop a tracking plan before implementation.
- Use consistent, clear event names across web and app (e.g., form_submit).
- Stick to GA4ās best practices for naming conventionsāsuch as snake_caseāto ensure clarity and scalability. For a deeper dive, see event naming conventions best practices.
Best Practices for Healthy Data Streams
To wrap up, here are the golden rules for Data Stream hygiene in GA4:
- One Property per Brand ā Keep web and app under one roof.
- One Web Stream per Website ā Donāt split by subdomain or section.
- Right Tool for the Job ā Use the Firebase SDK for apps, G-ID (gtag.js or GTM) for web.
- Standardize Naming ā Keep event and parameter names consistent across platforms.
- Use Filters, Not Separate Properties ā If you need to analyze specific data streams, apply filters or comparisons in GA4 reports instead of duplicating properties.
Final Thoughts
GA4ās Data Streams are a powerful upgrade from the siloed days of Universal Analyticsābut only if used correctly. By avoiding these anti-patterns and following best practices, youāll have clean, unified, and actionable data that reflects the true customer journey.
When set up wisely, Data Streams empower GA4 to deliver on its promise: a 360-degree view of your users across web and app.