TL;DR
GA4 has a hard ceiling on how long it keeps user-level and event-level data: 14 months maximum, 2 months by default. That ceiling only applies to Exploration reports, the ones used for funnels, path analysis, and custom segment breakdowns. Standard reports (Traffic Acquisition, Pages and Screens, Ecommerce Purchases) run on aggregated, pre-computed data that GA4 keeps forever. The most common way merchants discover this is by trying to build a year-over-year comparison in Explorations and finding that last year's data no longer exists. The fix is two steps: change the retention setting to 14 months immediately, and set up a BigQuery export if you need data beyond that window. BigQuery storage costs most Shopify stores under $5/month.
Key Takeaways
- GA4's default data retention is 2 months. The maximum is 14 months. Both are shorter than most merchants expect.
- Only Exploration reports are affected. Standard reports use aggregated data with no retention limit.
- Changing the retention setting does not recover data that has already expired. Change it now to preserve data going forward.
- For data beyond 14 months, BigQuery export is the standard workaround. It costs most Shopify stores under $5/month and stores raw event data with no expiration.
What does GA4 data retention actually control?
GA4 stores two types of data internally. The distinction matters because retention rules apply to one and not the other.
User-level and event-level data is the raw, granular record of what happened on your site: individual sessions, event parameters, user properties, and the identifiers that tie them together. This is the data that powers Exploration reports, where you can build funnels, segment by custom dimensions, and trace individual user paths. GA4 deletes this data after the retention period expires. Once gone, it cannot be recovered.
Aggregated data is the pre-computed summary that feeds standard reports. When GA4 processes incoming events, it rolls them up into daily totals, channel-level summaries, and page-level metrics. These aggregated tables are stored indefinitely, regardless of your retention setting.
The retention setting in GA4 Admin controls only the first type. When Google says "data retention," they mean the raw, row-level event records. They do not mean the totals visible in standard reports.
The practical implication: if you set retention to the default 2 months, GA4 deletes all user-level and event-level data older than 60 days. You can still see traffic totals from six months ago in Traffic Acquisition. But you cannot open Explorations and build a funnel report for the same period, because the underlying event-level records no longer exist.
What is NOT affected by retention settings?
Standard reports in GA4 are not subject to data retention limits. These reports include:
- Traffic Acquisition (sessions by channel, source, medium)
- Pages and Screens (pageviews and engagement by URL)
- Ecommerce Purchases (revenue, transactions, items sold)
- Events (event counts by name)
- User Acquisition (first-visit channel attribution)
All of these draw from aggregated data that GA4 keeps indefinitely. You can look at Traffic Acquisition data from 18 months ago without any issue, even with a 2-month retention setting.
The confusion arises because merchants see old data in standard reports and assume the same data is available everywhere. Then they open Explorations, try to build a custom funnel for the same date range, and find nothing. The data powering the standard report still exists. The granular, event-level data that would power the Exploration does not.
How do I change the retention period?
The setting is buried two levels deep in GA4 Admin. Here is the exact path:
- Open GA4 and click Admin (gear icon, bottom left).
- Under the property column, click Data Settings.
- Click Data Retention.
- Change "Event data retention" from 2 months to 14 months.
- Leave "Reset user data on new activity" toggled on (this extends the retention window each time a user returns, which is the behavior you want).
- Click Save.
This change takes effect immediately for new data. It does not retroactively restore data that has already been deleted under the previous setting. If your property has been running at the 2-month default for a year, you have already lost 10 months of event-level data permanently.
The single most useful thing a Shopify merchant can do right now is change this setting. It takes 30 seconds and costs nothing. If you set up GA4 months ago and never touched this, your Exploration data is likely already truncated.
What is the BigQuery workaround?
For data that needs to persist beyond 14 months, the standard approach is a BigQuery export. GA4 can stream raw event-level data to Google BigQuery daily. Once in BigQuery, data persists as long as the table exists. There is no retention limit.
The export captures every event GA4 receives, with full parameters, user properties, and session context. It is a complete copy of the event-level data that GA4 would otherwise delete after 14 months.
How to set it up:
- Create a Google Cloud Platform (GCP) project if you do not have one. Enable billing (required even for free-tier usage).
- In GA4, go to Admin > Product Links > BigQuery Links.
- Click Link and follow the wizard to connect your GA4 property to your GCP project.
- Choose Daily export (streaming export is available but costs more and is unnecessary for most stores).
- GA4 will begin exporting event data to BigQuery the next day.
Once linked, BigQuery receives a new table each day containing every event from that day. You query it using SQL. For merchants comfortable with spreadsheets but not SQL, Google's Looker Studio can connect directly to BigQuery tables and provide a visual reporting layer.
The setup takes about 15 minutes. The ongoing maintenance is essentially zero, since GA4 handles the daily export automatically.
How much does BigQuery cost for a Shopify store?
Less than most merchants expect.
Storage cost: $0.02 per GB per month. A Shopify store generating 50,000 events per month stores roughly 500 MB per year of event data. At $0.02/GB, that is about $0.12/year for storage. Even stores with 500,000 monthly events stay well under $2/year for storage alone.
Query cost: $5 per TB scanned. Most analytical queries on a single store's data scan less than 1 GB. That makes a typical query cost fractions of a penny. Even running 100 queries per month against a year of data, the query cost stays under $1.
Total cost for most Shopify stores: under $5/month, and often under $1/month. The first 1 TB of queries per month and the first 10 GB of storage are free under GCP's free tier, which means very small stores may pay nothing at all.
The cost only becomes meaningful for stores with millions of monthly events or stores running complex queries across multi-year datasets. For the typical Shopify store doing five to six figures in monthly revenue, BigQuery is effectively a rounding error in operating costs.
Does server-side tracking quality affect retained data?
Yes. The value of retained event-level data depends entirely on the quality of what was captured in the first place.
GA4 data retention preserves exactly what was sent at the time the event fired. If a purchase event arrived with proper client_id stitching, accurate campaign_details attribution, and correct ecommerce parameters, the retained exploration data will support meaningful session-level analysis: which campaigns drove purchases, how users navigated before converting, and what the funnel looked like by traffic source.
If a purchase event arrived with a synthetic, server-generated client_id (common with admin-created orders, POS transactions, or certain accelerated checkout flows), the retained data is less useful for session analysis. The event itself is preserved, and the revenue numbers are accurate. But the session-level context, like which ad campaign or landing page led to the purchase, is missing because the server-generated ID has no browsing history attached to it.
This means two stores with the same monthly order volume can have very different analytical value in their retained exploration data. The store with proper client-side session stitching on its tracking events gets 14 months of rich, queryable session data. The store with fragmented or synthetic IDs gets 14 months of event records that are accurate on revenue but thin on attribution context.
The quality gap carries over to BigQuery as well. BigQuery preserves what GA4 received. Clean input produces clean, long-term analytical data. If the events arriving in GA4 have proper session attribution and deduplication from the start, whether stored in GA4's 14-month window or exported to BigQuery, the data remains useful for year-over-year analysis. The complete Shopify GA4 setup guide covers the tracking foundation that determines this data quality, including browser and server-side configuration.
For stores already tracking custom dimensions, the retention question becomes even more pointed. Custom dimensions like customer lifetime stage, discount code, and logged-in state are only available in Exploration reports. If retention is set to 2 months, those high-value segmentation dimensions disappear after 60 days.
FAQ
Does changing the retention setting recover old data? No. GA4 deletes event-level data on a rolling basis. Once data passes the retention window, it is permanently removed. Changing the setting from 2 months to 14 months only preserves data going forward. Any data already deleted under the shorter window is not recoverable.
Can I export historical data from GA4 to BigQuery retroactively? No. The BigQuery export only captures data from the day the link is created onward. It does not backfill historical data. This is why setting up both the 14-month retention and the BigQuery link as early as possible matters. Every day without the export running is a day of data that will eventually expire.
Does GA4 data retention affect Google Ads conversion reporting? No. Google Ads conversion tracking is a separate system. When GA4 sends a conversion to Google Ads (via linked accounts), Google Ads stores that conversion in its own reporting infrastructure. The GA4 retention setting does not affect Google Ads reports or Smart Bidding data.
Is the 14-month limit the same for GA4 free and GA4 360? No. GA4 360 (the paid enterprise version) supports retention periods up to 50 months. The 14-month ceiling applies only to the free version of GA4, which is what the vast majority of Shopify stores use.
WeltPixel Conversion Tracking ensures your GA4 events arrive with proper session attribution and deduplication. Whether you keep data in GA4's 14-month window or export to BigQuery, clean input data means reliable output.