When GA4 explorations show only the last two months or so while standard reports go back much further, the cause is almost always one of five things: event data retention is set to 2 months, the property is classified as Large and retention was cut automatically, data thresholding is hiding rows, the exploration is sampled, or the exploration mixes user-scoped and event-scoped fields so it counts a different thing than the report. Retention is the one we find first on almost every property we take over. Fix it under Admin, Data collection and modification, Data retention by choosing 14 months, and know that the change will not restore data that has already been deleted.
GA4 keeps two kinds of data. Standard reports (Reports, Acquisition, Engagement and so on) read from aggregated tables that GA4 builds as data is processed. Explorations (free form, funnel exploration, path exploration, segment overlap, user explorer) and funnel reports query event-level and user-level data, and that data is deleted once it passes the retention window you set. So the same property can show two years of sessions in a traffic report and two months in a path exploration, and both are correct.
The five causes we find most often.
We ran into this on an account we took over: a path exploration built to explain a drop stopped cold about two months back, while the traffic acquisition report showed the full year. Nobody had touched the retention setting. The full list, in the order we check it:
- Event data retention left at 2 months: on a standard property the choices are 2 months or 14 months, and event-level data older than the setting is deleted, so explorations have nothing to query
- Large property reduction: when a standard property reaches the Large size class (25 billion or more events in the prior 31 days), GA4 automatically drops event retention to 2 months and permanently deletes older event-level data
- Data thresholding: GA4 withholds rows when demographics, search query data or Google signals could let someone infer an individual, which shrinks totals and removes small segments
- Sampling: an exploration whose query covers more events than the property quota is built from a sample, so totals drift from the unsampled standard report
- Scope mismatch: a session-scoped dimension like session source paired with a user metric, or a first user dimension compared with a session dimension in a report, counts different things and will never match
How to verify which one it is.
Three checks, in this order. They need only Editor access.
The retention setting. Click Admin, confirm you are in the right property, then under Data collection and modification open Data retention (older help pages call this Data Settings, Data Retention). Read the Event data retention value. If it says 2 months, you have found the main cause. Changing it requires the Editor role.
The data quality icon. At the top of the exploration, the icon next to the title turns from green to a warning when data is thresholded or sampled. Hover it. Thresholding says that cards only show data meeting minimum aggregation thresholds. Sampling shows the percentage of data used.
A side by side check. Rebuild the exploration's simplest version (one dimension, one metric, same date range) as a standard report or a comparison in the matching report. If the standard report has data on dates where the exploration is empty, it is retention. If both have data but the numbers differ, it is thresholding, sampling or scope. The same discipline applies to conversions; see why GA4 conversions are not showing.
Diagnose top to bottom.
| Symptom | Likely cause | Fix |
|---|---|---|
| Exploration empty before a date about 2 months ago | Event data retention set to 2 months | Set retention to 14 months; lost data stays lost |
| Retention reverted to 2 months on its own | Property reached the Large size class | Reduce event volume or upgrade to 360 |
| Exploration empty before 14 months ago | 14 months is the standard property maximum | Use standard reports or BigQuery export |
| Rows missing, totals lower than the report | Data thresholding (signals, demographics) | Widen date range; try Device based reporting identity |
| Age, gender, interests only go back 2 months | Demographic data always kept 2 months | Expected; no setting changes it |
| Numbers shift each time the range changes | Exploration sampled over quota | Shorter ranges, or query BigQuery |
| Users or sessions never match the report | Mixed user and session scope | Match dimension and metric scope |
| Comparison period blank in an exploration | Comparison dates fall outside retention | Compare in a standard report instead |
What is normal and what is a red flag.
Normal: explorations stopping at 14 months on a standard property with retention set correctly. Age, gender and interest data only reaching back 2 months, since Google applies that window to demographic data regardless of the setting. Google signals data following its own default of 26 months, capped by any shorter setting you choose. Small differences between an exploration and a standard report, because standard reports estimate distinct counts such as users and sessions with HyperLogLog++ while explorations count from event-level data.
Also normal: sampling on very large queries. The exploration quota is 10 million events per query on a standard property and up to 1 billion on 360.
Red flags: a hard date edge at about 2 months, a retention value nobody chose, or a Large classification nobody noticed. Retention belongs in every audit, next to the tag checks in our conversion tracking audit checklist.
Getting history past the retention window.
For long trend lines, use standard reports or tools that read the same aggregated data. In our accounts, Looker Studio and Data API pulls built on standard dimensions kept returning history after explorations had gone empty, which matches Google's statement that retention only touches explorations and funnel reports. For raw event history, link BigQuery under Admin, Product links. Standard properties have a daily export limit of 1 million events, the free BigQuery sandbox works until you exceed its limits, and you own the exported tables, so they are not deleted by the GA4 retention setting. If calls feed GA4 from a tracking tool, keep them in the export too; see our CallRail GA4 integration guide.
Why does my GA4 exploration only show 2 months of data?
The property's event data retention is set to 2 months, so event-level data older than that has been deleted and explorations cannot query it. Change it under Admin, Data collection and modification, Data retention to 14 months. Standard reports are not affected and still show older history.
Can I recover GA4 data that retention already deleted?
No. Increasing retention only applies to data that has not been deleted yet. Older aggregated numbers are still in standard reports, but event-level detail for explorations is gone unless you were already exporting to BigQuery.
Why do my exploration numbers differ from standard reports?
Thresholding can hide rows, explorations can be sampled above 10 million events per query on standard properties, standard reports estimate users and sessions with HyperLogLog++, and mixing user-scoped and session-scoped fields counts different things. Check the data quality icon first.
How do I keep GA4 data longer than 14 months?
Link the BigQuery export. It writes raw events daily to tables you own, which the GA4 retention setting does not delete. It is not retroactive, so it only stores data from the day you link it.