

How to Unify Web and App GA4 Data in BigQuery for Reliable Cross-Platform Analytics
Combine GA4 web events and Firebase app events in BigQuery without double-counting. Follow our step-by-step SQL examples, avoid common pitfalls, and build trusted cross-platform reports.

Shreya Banker
Data Scientist
Data Analyst enthusiast. More than 7 years of exposure in Data Analysis and Software programming. I am a highly motivated, versatile IT professional with experience in Data Analysis, Visualization and Database Management. I look for the hardest problem to solve and where I can learn and develop the most. I love a challenge and never run from a difficult task. I'm determined to succeed, and I look forward to what life has to offer.
Handling Cross-Platform Data in BigQuery: Unifying Web and App Events for Accurate Analytics
As digital experiences become increasingly cross-platform, businesses rely on both websites and mobile apps to interact with users. While Google Analytics 4 (GA4) does a great job of collecting this data, BigQuery unlocks its full potential — but combining web and app data isn't always plug-and-play.
In this post, we'll break down how to unify Web and App data in BigQuery, what to watch out for, and how to get accurate, platform-agnostic insights.
Why Cross-Platform Unification Matters
Imagine a shopper who browses on a laptop, then checks out in your mobile app. In GA4 those hits land in two data streams:
Web: tracked via gtag.js
App: tracked via Firebase SDK
Both streams flow into the same BigQuery table, but event names, parameters, and even data types differ. If you query them “as-is,” you may miss half the story or double-count results.
Understanding the Differences
Why page_view ≠ screen_view
Here’s a simple breakdown:
On the web, GA4 uses the
page_view
event to track URLsOn apps, it uses
screen_view
to track which screens a user saw.
So, if you're measuring how many “views” something got, you’ll want to include both events, or you’ll be missing half the story.
Tip: Always use the platform field when splitting or combining data.
How to Query Web + App Views in BigQuery
Let’s break it down:
For web:
SELECT value.string_value FROM UNNEST(event_params)
WHERE event_name = 'page_view' AND key = 'page_location'
This pulls the full page URL.
For app:
SELECT value.string_value FROM UNNEST(event_params)
WHERE event_name = 'screen_view' AND key = 'firebase_screen_class'
This gives you the name of the screen the user saw.
Combine both:
CASE
WHEN platform = 'WEB' THEN ( SELECT value.string_value
FROM UNNEST(event_params)
WHERE event_name = 'page_view' AND key = 'page_location'
)
ELSE (
SELECT value.string_value
FROM UNNEST(event_params)
WHERE event_name = 'screen_view' AND key = 'firebase_screen_class'
)
END AS page_or_screen
Now you’ve got a single column—page_or_screen—that works for both platforms.
Tracking Session Engagement (And Why It’s Tricky)
One area where web and app data don’t quite align is how session engagement is measured in GA4.
For web, GA4 uses the parameter session_engaged, which is a string value (usually "1" if the session is engaged):
MAX((SELECT value.string_value
FROM UNNEST(event_params)
WHERE key = 'session_engaged')) AS session_engaged_web
For apps, it uses engaged_session_event, which is an integer (typically 1 for engaged):MAX((SELECT SAFE_CAST(value.int_value AS STRING)
FROM UNNEST(event_params)
WHERE key = 'engaged_session_event')) AS session_engaged_app
Since these are tracked with different parameter names and data types, the best approach is to normalize them into a single column using a CASE statement.
Metrics That Are Already Consistent
Not everything is so complicated! Some metrics work the same across both web and app, like:
ga_session_id
– to track unique sessionsentrances
– to know where users startedengagement_time_msec
– how long the user stayed
Final Thoughts
Unifying web and app data in GA4 BigQuery might seem complicated at first, but once you understand where the differences are, it's pretty manageable.
Just remember:
Web =
page_view
+page_location
App =
screen_view
+firebase_screen_class
Some engagement metrics look different, but they tell the same story
Many fields already work across both platforms
How Napkyn Turns Unified Data into Action
Centralizing web and app events is only the starting line. Napkyn’s solutions help you push that data further, so your team can focus on insights instead of plumbing.
What We Deliver
Automated BigQuery Pipelines -Our ETL Pipeline Solutions move GA4, CRM, and media data into BigQuery in near-real time, complete with deduping, error handling, and cost-control logic. Skip the manual exports and custom scripts. Fresh, reliable data is always ready for analysis or activation.
Cross-Platform Data Modeling - Custom SQL templates and dbt models that normalize
page_view
/screen_view
, align session logic, and create clean, business-ready tables. One source of truth means fewer reporting headaches and consistent KPIs across teams.Real-Time Dashboards & Alerts - Looker Studio and BigQuery BI Engine dashboards with automated anomaly alerts so you catch issues before they impact revenue. Decision-makers get answers in seconds, not days, and can act on trends while they still matter.
Enablement & Training - Hands-on GA4 and BigQuery workshops plus office-hour support so your analysts can own the stack long-term. You gain skills in-house instead of relying on external help for every tweak.
Ready to see unified data in action? Explore our ETL Pipeline Solutions or reach out for a quick demo of a live GA4 + BigQuery workflow tailored to your business.
More Insights


Google Ads and Analytics AI Agents: Smarter Marketing or Risky Move?

Monika Boldak
Associate Director, Marketing
Jun 3, 2025
Read More


Server-Side Tagging (sgtm) with Google Tag Manager: What Marketers and Developers Need to Know

Ricardo Cristofolini
Senior Implementation Specialist, Data Solutions
May 28, 2025
Read More


Declutter Your GTM: A Practical Guide to Cleaning Up Tags, Triggers, and Variables

Ricardo Cristofolini
Senior Implementation Specialist, Data Solutions
May 21, 2025
Read More
More Insights
Sign Up For Our Newsletter

Napkyn Inc.
204-78 George Street, Ottawa, Ontario, K1N 5W1, Canada
Napkyn US
6 East 32nd Street, 9th Floor, New York, NY 10016, USA
212-247-0800 | info@napkyn.com

How to Unify Web and App GA4 Data in BigQuery for Reliable Cross-Platform Analytics
Combine GA4 web events and Firebase app events in BigQuery without double-counting. Follow our step-by-step SQL examples, avoid common pitfalls, and build trusted cross-platform reports.

Shreya Banker
Data Scientist
Data Analyst enthusiast. More than 7 years of exposure in Data Analysis and Software programming. I am a highly motivated, versatile IT professional with experience in Data Analysis, Visualization and Database Management. I look for the hardest problem to solve and where I can learn and develop the most. I love a challenge and never run from a difficult task. I'm determined to succeed, and I look forward to what life has to offer.
Handling Cross-Platform Data in BigQuery: Unifying Web and App Events for Accurate Analytics
As digital experiences become increasingly cross-platform, businesses rely on both websites and mobile apps to interact with users. While Google Analytics 4 (GA4) does a great job of collecting this data, BigQuery unlocks its full potential — but combining web and app data isn't always plug-and-play.
In this post, we'll break down how to unify Web and App data in BigQuery, what to watch out for, and how to get accurate, platform-agnostic insights.
Why Cross-Platform Unification Matters
Imagine a shopper who browses on a laptop, then checks out in your mobile app. In GA4 those hits land in two data streams:
Web: tracked via gtag.js
App: tracked via Firebase SDK
Both streams flow into the same BigQuery table, but event names, parameters, and even data types differ. If you query them “as-is,” you may miss half the story or double-count results.
Understanding the Differences
Why page_view ≠ screen_view
Here’s a simple breakdown:
On the web, GA4 uses the
page_view
event to track URLsOn apps, it uses
screen_view
to track which screens a user saw.
So, if you're measuring how many “views” something got, you’ll want to include both events, or you’ll be missing half the story.
Tip: Always use the platform field when splitting or combining data.
How to Query Web + App Views in BigQuery
Let’s break it down:
For web:
SELECT value.string_value FROM UNNEST(event_params)
WHERE event_name = 'page_view' AND key = 'page_location'
This pulls the full page URL.
For app:
SELECT value.string_value FROM UNNEST(event_params)
WHERE event_name = 'screen_view' AND key = 'firebase_screen_class'
This gives you the name of the screen the user saw.
Combine both:
CASE
WHEN platform = 'WEB' THEN ( SELECT value.string_value
FROM UNNEST(event_params)
WHERE event_name = 'page_view' AND key = 'page_location'
)
ELSE (
SELECT value.string_value
FROM UNNEST(event_params)
WHERE event_name = 'screen_view' AND key = 'firebase_screen_class'
)
END AS page_or_screen
Now you’ve got a single column—page_or_screen—that works for both platforms.
Tracking Session Engagement (And Why It’s Tricky)
One area where web and app data don’t quite align is how session engagement is measured in GA4.
For web, GA4 uses the parameter session_engaged, which is a string value (usually "1" if the session is engaged):
MAX((SELECT value.string_value
FROM UNNEST(event_params)
WHERE key = 'session_engaged')) AS session_engaged_web
For apps, it uses engaged_session_event, which is an integer (typically 1 for engaged):MAX((SELECT SAFE_CAST(value.int_value AS STRING)
FROM UNNEST(event_params)
WHERE key = 'engaged_session_event')) AS session_engaged_app
Since these are tracked with different parameter names and data types, the best approach is to normalize them into a single column using a CASE statement.
Metrics That Are Already Consistent
Not everything is so complicated! Some metrics work the same across both web and app, like:
ga_session_id
– to track unique sessionsentrances
– to know where users startedengagement_time_msec
– how long the user stayed
Final Thoughts
Unifying web and app data in GA4 BigQuery might seem complicated at first, but once you understand where the differences are, it's pretty manageable.
Just remember:
Web =
page_view
+page_location
App =
screen_view
+firebase_screen_class
Some engagement metrics look different, but they tell the same story
Many fields already work across both platforms
How Napkyn Turns Unified Data into Action
Centralizing web and app events is only the starting line. Napkyn’s solutions help you push that data further, so your team can focus on insights instead of plumbing.
What We Deliver
Automated BigQuery Pipelines -Our ETL Pipeline Solutions move GA4, CRM, and media data into BigQuery in near-real time, complete with deduping, error handling, and cost-control logic. Skip the manual exports and custom scripts. Fresh, reliable data is always ready for analysis or activation.
Cross-Platform Data Modeling - Custom SQL templates and dbt models that normalize
page_view
/screen_view
, align session logic, and create clean, business-ready tables. One source of truth means fewer reporting headaches and consistent KPIs across teams.Real-Time Dashboards & Alerts - Looker Studio and BigQuery BI Engine dashboards with automated anomaly alerts so you catch issues before they impact revenue. Decision-makers get answers in seconds, not days, and can act on trends while they still matter.
Enablement & Training - Hands-on GA4 and BigQuery workshops plus office-hour support so your analysts can own the stack long-term. You gain skills in-house instead of relying on external help for every tweak.
Ready to see unified data in action? Explore our ETL Pipeline Solutions or reach out for a quick demo of a live GA4 + BigQuery workflow tailored to your business.
More Insights

How to Unify Web and App GA4 Data in BigQuery for Reliable Cross-Platform Analytics

Shreya Banker
Data Scientist
Jun 18, 2025
Read More

Web vs. App Tracking in GA4: Key Differences, Tools & Best Practices

Ricardo Cristofolini
Senior Implementation Specialist, Data Solutions
Jun 11, 2025
Read More

How to Track iFrame Content with GTM and GA4 Using postMessage

Rob English
Lead Implementation Specialist
Jun 4, 2025
Read More
More Insights
Sign Up For Our Newsletter
