Nested Queries on Every Field
GA4's event_params column is a nested
array. Extracting any field — page URL, session ID, custom
parameters — requires a correlated UNNEST subquery. Repeated. For
every. Single. Field.
One transformation. Every tool. Zero complexity.
Decode GA4 automatically flattens BigQuery's nested event structure
into clean, analysis-ready tables — with zero maintenance.
Works with the tools you already use
Every team working with GA4 in BigQuery hits the same wall. The data is
technically there — but structurally hostile. Accessing a single field
like page_location requires a full
UNNEST subquery. Multiply that by every field your analysts need.
GA4's event_params column is a nested
array. Extracting any field — page URL, session ID, custom
parameters — requires a correlated UNNEST subquery. Repeated. For
every. Single. Field.
GA4's schema evolves constantly. New event types, renamed parameters, and structural changes silently break custom SQL transformations. Every dbt model and Dataform workflow becomes a maintenance burden.
Before analysts can answer a single business question, engineers spend weeks building the plumbing. Custom transformations are brittle, hard to test, and solve a problem that isn't unique to your organization.
Accessing page_location and
page_title in raw GA4 BigQuery requires
correlated UNNEST subqueries for each field. Decode Data transforms those
nested arrays into direct columns — so your query becomes exactly what
you'd expect it to be.
SELECT event_timestamp, (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'page_location') AS page_location, (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'page_title') AS page_title FROM `project.analytics_x.events_*` WHERE event_name = 'page_view'
SELECT event_timestamp, event_param.page_location, event_param.page_title FROM `project.decode_analytics_x.events` WHERE event_name = 'page_view'
events_* wildcard scans every partition — expensive
event_param.field — simple dot notation, every time
Three steps from setup to clean data. No custom SQL. No brittle pipelines. No maintenance contracts.
Deploy Decode GA4 directly from the Google Cloud Marketplace with a single command. Point it at your GA4 BigQuery export project and it handles the rest. No infrastructure setup, no configuration files, no custom code.
Decode GA4 processes your GA4 export, flattening nested
event_params into direct columns.
It uses metadata-driven incremental processing — each partition is
processed exactly once. When GA4 changes its schema, Decode GA4
adapts automatically. No manual updates, ever.
Your transformed data lives in BigQuery as clean, flat tables — queryable by any tool in your stack. Connect Looker Studio, dbt, Dataform, Tableau, Power BI, or any BigQuery-compatible tool. Need cross-cloud? Export to AWS S3 or Azure Blob Storage as Parquet files.
One universal interface between GA4 and every tool your team uses. Like USB-C replaced a drawer full of adapters, Decode GA4 replaces the mess of custom transformations.
Extraction, flattening, incremental loading — fully automated from day one. Set it up once and your pipeline runs without intervention.
GA4 changes its schema without notice. Decode GA4 adapts automatically — no broken pipelines, no emergency fixes, no frantic Slack messages at 2am.
Built entirely within Google BigQuery. No external compute, no data leaving your project, no additional infrastructure to manage or secure.
Export transformed data as compressed Parquet files to Google Cloud Storage, Amazon S3, or Azure Blob Storage. Query from DuckDB, Motherduck, or any external system.
Parquet compression dramatically reduces storage costs. Partition pruning eliminates expensive full-table scans. Many teams see 40–70% lower BigQuery costs immediately.
Deploy once, never touch again. No dbt model updates when GA4 changes. No custom SQL to maintain. No brittle pipeline to babysit. Just clean data, always.
Every Decode Data transformation automatically adds fields that GA4's raw export leaves behind — zero configuration required.
Decode GA4 outputs standard BigQuery tables — readable by every analytics tool without connector configuration or vendor lock-in.
dbt
Dataform
SQLMesh
Looker Studio
Tableau
Power BI
Amazon S3
Azure Storage
Google Cloud Available on Google Cloud Marketplace. Usage-based pricing — pay for what you process. No per-seat fees, no hidden compute charges.
Pricing is 100% variable — you pay for the exact bytes of GA4 data processed, nothing more. Process 1 MiB per day and pay just $1.50/month.
Sites with fewer than 10,000 monthly sessions typically process 50–150 MB of GA4 data per month — around $3–8. Less than a coffee.
No subscriptions. No per-seat fees. Volume discounts apply automatically at each tier — billing appears on your existing Google Cloud invoice.
Get Started on Google Cloud →Decode GA4 is a BigQuery-native data transformation utility. It automatically extracts and flattens Google Analytics 4's complex nested event data structure into clean, analysis-ready BigQuery tables. The core innovation is metadata-driven incremental processing — each data partition is processed exactly once, and the system automatically adapts when GA4 changes its schema.
Decode Data is a smart utility that connects GA4 to any downstream tool without custom SQL, without brittle pipelines, and without ongoing maintenance. One deployment replaces weeks of engineering work.
Data Engineers: Deploy once, never maintain again — automatic schema evolution eliminates pipeline breaks. Analytics Engineers: Clean, analysis-ready data in minutes rather than weeks of SQL development. Data Analysts: Simple dot-notation SQL instead of complex UNNEST subqueries. VPs and Directors: Immediate cost reduction and faster time-to-insight.
Decode GA4 is distributed via Google Cloud Marketplace and installed via our installer app. More details are in the quickstart documentation, or you can view the marketplace listing directly here.
There is no trial period as there is no monthly fee and no fee to install Decode GA4. Cost is only incurred when using Decode GA4 to transform and export raw source GA4 data.
You do not, however the output events table is a 'modelling-ready' event data source, so further modelling and integration would be expected. If you do want to use the outputs of Decode GA4 in a downstream transformation tool, it is recommended to set the destination_dataset_id option upon installation.
This will result in a segregated dataset containing only the transformed GA4 event data and statistics, to be used as a clean input to the subsequent process.
Execution of the RUN function can then be incorporated into the pre-operations for the tool you are using, which is implemented slightly differently in different tools as outlined in the docs.
No. Our decoder adds a new dataset to your BigQuery project that you can access directly for downstream analysis, but you can always go back and reference your raw data or work on that data directly.
The historical data that you have decoded remains intact and accessible in your BigQuery, but if you lose permissions to the Decode GA4 proprietary functions, it will cease to decode any future data.
Deploy in 5 minutes on Google Cloud Marketplace. Free tier available. No credit card required for the first million events.