GA4 properties and data streams explained (finally)
Understand how GA4's account hierarchy works with properties and data streams. Learn how to structure your analytics for websites and apps.
If you're coming from Universal Analytics, the whole "data streams" concept probably threw you off. It threw me off too. But once you understand how GA4's structure works, it actually makes more sense than UA's setup.
Let me break it down.
The GA4 hierarchy
GA4 organizes data in a three-level hierarchy:
Account
└── Property
└── Data Stream (Web)
└── Data Stream (iOS App)
└── Data Stream (Android App)
That's it. Simple compared to UA's Account → Property → View structure.
Account
The top level. Think of it as your organization's container for all analytics properties.
- One account per company/organization (usually)
- Handles user access and permissions
- Contains billing information (for GA4 360)
Property
The level where data lives and gets analyzed.
- Represents a single business/product/brand
- Contains all your reports and explorations
- Where you configure key events, audiences, and data settings
- Can have up to 50 data streams
Data Stream
The source that sends data into your property.
- Three types: Web, iOS App, Android App
- Each has its own Measurement ID (web) or App Stream ID
- Enhanced Measurement settings are configured here
Key difference from Universal Analytics
In UA, if you wanted to track a website and mobile app together, you needed workarounds. Each property was essentially single-platform.
In GA4, one property can receive data from multiple platforms. Your website, iOS app, and Android app can all feed into the same property, giving you a unified view of user behavior across platforms.
Universal Analytics (Old)
─────────────────────────
Property: "Website"
Property: "iOS App"
Property: "Android App"
(Hard to see cross-platform journeys)
GA4 (New)
─────────────────────────
Property: "My Product"
└── Web Stream
└── iOS Stream
└── Android Stream
(Unified cross-platform view)
This is genuinely useful if you have users who browse on web and later convert in your app.
What about Views?
Short answer: they're gone.
Views don't exist in GA4. Instead, you have other options:
| UA Concept | GA4 Replacement |
|---|---|
| Filtered views | Data filters (permanent) |
| Different views for regions | Segments in Explorations |
| View-level access control | Property-level roles (less granular) |
| Test view | DebugView |
If you need truly separate data (like different business units), create separate properties.
GA4 360 only: Sub-properties and roll-up properties are available on the paid tier, offering more UA-like flexibility.
How many properties do you need?
This is the question I get asked most often. Here's my rule of thumb:
One property if:
- Single website/product
- Single brand
- Web + mobile app for the same product
- One team manages everything
Multiple properties if:
- Multiple distinct brands/products
- Different business units need data separation
- Legal/compliance requirements for data isolation
- Different geographic regions with separate teams
Practical example
Scenario: You have an e-commerce site, a blog on a subdomain, and mobile apps.
Answer: Usually one property with:
- Web stream for main site (example.com)
- Blog is part of the same domain, same stream
- iOS stream for the app
- Android stream for the app
Scenario: You run an agency with 50 clients.
Answer: 50 separate properties (one per client), all under your agency account.
Setting up data streams
Web stream setup
- Go to Admin → Data Streams
- Click Add stream → Web
- Enter your website URL (with https://)
- Name it clearly (e.g., "Main Website")
You'll get a Measurement ID that looks like G-XXXXXXXXXX. This is what you use to install tracking.
Important web stream settings
After creating your stream, configure these:
| Setting | Location | Recommendation |
|---|---|---|
| Enhanced Measurement | Stream details | Enable all (except form interactions if unreliable) |
| Unwanted Referrals | Configure tag settings | Add payment providers (PayPal, Stripe) |
| Internal Traffic | Configure tag settings | Add your office IPs |
| Cross-domain Tracking | Configure tag settings | Add your domains if you have multiple |
For detailed setup, see our initial setup checklist.
App stream setup
- Go to Admin → Data Streams
- Click Add stream → iOS app or Android app
- Enter your bundle ID / package name
- Follow the Firebase SDK integration steps
App streams require Firebase SDK integration. GA4 uses Firebase for mobile app tracking. There's no way around it.
Common mistakes to avoid
Multiple web streams for one website
This is the biggest mistake I see. Don't do this:
❌ Wrong:
Property: "My Site"
└── Web Stream: "Homepage" (example.com)
└── Web Stream: "Blog" (blog.example.com)
└── Web Stream: "Shop" (shop.example.com)
This creates data duplication and fragmented user journeys. Instead:
✅ Correct:
Property: "My Site"
└── Web Stream: "Main Website" (example.com + all subdomains)
Configure cross-domain tracking if needed, but use one stream.
Creating streams before you need them
Don't create placeholder streams "just in case." Each stream starts collecting data immediately (if installed), and empty streams just clutter your setup.
Mixing test and production
Some people create a "test" stream for their staging environment. This pollutes your production data. Instead:
- Use a completely separate property for testing
- Or use DebugView for verification
- Or use internal traffic filters
Data stream limits
| Limit | Amount |
|---|---|
| Data streams per property | 50 total |
| App streams (iOS + Android) | 30 max |
| Web streams | No specific limit (within total 50) |
You're unlikely to hit these limits unless you're doing something wrong with your structure.
Permissions and access
Unlike UA views, you can't give someone access to just one data stream. Access is managed at the property level.
Available roles:
| Role | Can view | Can configure | Can manage access |
|---|---|---|---|
| Viewer | ✓ | - | - |
| Analyst | ✓ | Create explorations | - |
| Marketer | ✓ | Create audiences | - |
| Editor | ✓ | ✓ | - |
| Administrator | ✓ | ✓ | ✓ |
If you need granular access control, consider separate properties.
Cross-platform user tracking
One of GA4's best features is unified user tracking. When set up correctly, you can see:
- A user browsing on mobile web
- Later installing your app
- Making a purchase in the app
This requires:
- All platforms feeding into the same property
- A consistent user identifier (User-ID feature)
- Proper data stream configuration
For most sites, even without User-ID, GA4 does a decent job of stitching sessions together using Google Signals and device graphs.
Next steps
Once you have your structure figured out:
And if you want simpler analytics without managing all this complexity, try Analayer. We connect to your GA4 data and surface the insights you actually need.
See your analytics clearly
Stop struggling with Google Analytics. Connect your account and get a cleaner, simpler view of your data in seconds.