GA4 Data Retention 2026: Export Your History Before It's Gone

Event-level data in a standard GA4 property lives for 2 or 14 months, then it is deleted. If your year-over-year comparisons matter, the export has to happen before the window closes, not after.

By Null Agency · Updated September 23, 2026 · Written for marketers and developers who rely on GA4 history and have not yet archived it

TL;DR: the retention window is a deadline, not a setting

GA4 event-level data expires. In a standard property the retention setting is 2 months or 14 months, and the shorter value is where a new property starts. Aggregated standard reports keep longer, but anything that reads user-level or event-level data (Explorations, custom segments, most ad-hoc questions) only reaches as far back as that window.

Short on time? Jump to the numbered archive checklist below and do steps 1 to 3 today.

What GA4 actually deletes, and what it keeps

The word "retention" in GA4 is narrower than most people assume. It does not mean your account, your property, or your standard reports vanish after 14 months. It refers to how long Google keeps user-level and event-level data: the granular rows that record individual events tied to identifiers such as cookies, user IDs and advertising IDs.

For a standard property that setting has two choices: 2 months or 14 months. A newly created property starts at the shorter one, so a lot of teams have been running on a 2-month window without ever choosing it. The setting lives in Admin under Data Settings, then Data Retention. Larger paid tiers of Google's product offer longer options; check current Google documentation for the exact scope on your property type, because the details differ between property types.

What survives past the window is the aggregated data that powers the standard reports: the Reports section with its overview, acquisition, engagement and retention cards. Those are built from aggregated tables, not from raw events, so a report showing sessions by channel for the last 26 months will still load after the event-level window has passed.

What does not survive is everything that needs to walk back through the individual events:

There is also a subtlety worth knowing: the retention setting has a "reset user data on new activity" toggle that extends a returning user's data window when they come back. It does not turn a 2-month property into a 14-month one, and it does not affect event data older than the window. Treat it as a nuance, not a rescue plan.

Why this bites teams a year later

Retention limits are invisible until the day you need the data. The pattern is consistent: someone builds a funnel Exploration in September, compares it against last September, and the older half is missing or empty. The standard reports still load, so nothing looks broken, and the question of what happened to the granular data gets asked months after the window closed.

Three situations make it costly:

Year-over-year analysis. A 2-month window makes any comparison beyond the last quarter impossible at the event level. Even at 14 months, the window is only just longer than one full year, which leaves no margin for a seasonal comparison that needs two Septembers plus the weeks around them.

Migrations. When a team decides to leave GA4 (for cost, consent-banner burden or the privacy questions covered in our GA4 privacy issues breakdown), the natural instinct is to switch the tag and move on. If the old property is never archived, the last 2 or 14 months of granular data disappear on a schedule nobody is watching, and the historical baseline the new tool should be compared against goes with it.

Audits and disputes. Attribution disputes, ad-spend reviews and agency handovers all reach back further than the retention window. The conversation "what did traffic from that campaign look like last spring" is answerable only if someone exported last spring.

None of this is an argument that GA4 is misleading about the limit. The limit is documented. It is an argument that the default is shorter than most reporting cycles, and that the fix costs about an hour if done before the deadline and is impossible after it.

Your export options, compared

There are four practical ways to get data out of GA4. They differ a lot in how much detail they hold and in whether they can capture the past or only the future.

MethodWhat you getCovers the past?EffortBest for
BigQuery exportRaw event rows in your own BigQuery project, queryable with SQLNo. Starts the day you link the propertyOne-time setup, then hands-offThe permanent archive. Everything else is secondary
Report CSV / Sheets downloadThe rows currently shown in one standard reportYes, for the date range and aggregation the report supportsManual, one report at a timeSnapshots of specific reports you will need to cite later
Looker StudioDashboards and tables connected to the property, exportable to CSV or SheetsSame limits as the source: aggregated reach is long, event-level reach is the retention windowLow to mediumSharing a recurring view with stakeholders
Data APIProgrammatic report queries, same dimensions and metrics as the interfaceBounded by the same retention and aggregation rulesNeeds a script and credentialsScheduled pulls into your own warehouse or spreadsheet

The important row is the first one. BigQuery is the only route that gives you the raw events under your own control, and it is forward-only. Every day you postpone linking is a day of granular data that will never be in your archive. The other three routes export what GA4 currently holds in a shaped, aggregated form. They are useful, and they are how you preserve the old aggregated history, but they cannot reconstruct events after the fact.

Linking the property to BigQuery has no fee from Google's side. Storing and querying the data in BigQuery is billed under Google's own pricing, with a free allowance; check the current BigQuery documentation for the allowances that apply to you. For a small or mid-sized site the archive is typically modest in size, but that depends entirely on your event volume, so look at your own numbers before assuming.

One more limit to plan around: the standard export options are subject to sampling and thresholding on some reports and explorations, so a CSV pulled from a heavily filtered view can differ from the same view pulled unfiltered. When exact counts matter, prefer the BigQuery rows and do the aggregation yourself.

How to archive your GA4 data: a numbered checklist

Do these in order. Steps 1 to 3 take under an hour and protect everything that has not expired yet.

  1. Extend retention to 14 months. In Admin, go to Data Settings, then Data Retention, set event data retention to 14 months, and save. This is not retroactive for data already deleted, but it stops the 2-month clock on everything from now on.
  2. Link the property to BigQuery. In Admin, open Product links, then BigQuery links, and connect a Google Cloud project you own. Enable the daily export. From this day forward, every event lands in your project as raw rows, in dated tables that follow the events_YYYYMMDD naming pattern. Use a Cloud project with billing enabled: a BigQuery sandbox project (no billing account) expires tables automatically, which quietly deletes the archive you are building. Very high-traffic standard properties can also hit the daily export event limit, so watch for export warnings.
  3. Confirm the first table arrived. The first daily export shows up after the link is established. Open BigQuery, find the dataset for your property (it is named after the property ID), and check that a dated events table exists and holds rows. An untested export is not an archive.
  4. Save the reports you cannot recreate. For the acquisition, pages, events, conversions and audience reports you actually use, set the widest date range the report allows and download each as CSV. Name files with the report and the range so that in a year you can tell what they are.
  5. Record your configuration. Write down your event names, custom dimensions, conversion definitions and data-stream settings. Raw rows are hard to interpret without knowing what generate_lead meant on your site in that quarter. A short document beats a lost dictionary.
  6. Script the Data API if you need recurring pulls. If someone reports on a fixed schedule, a small script that calls the Data API and appends to a spreadsheet or table keeps aggregated history flowing without manual downloads.
  7. Copy the archive somewhere that is not the account you are leaving. If you are migrating away from Google, do not leave the only copy in the same Google project that could be closed or changed. Store a dump in your own object storage.
  8. Put a recurring reminder in a calendar. Review the export monthly for the first quarter: confirm new dated tables keep appearing and that no export errors are queued.

Once the export is running, a query like the one below answers the kind of question the retention window would otherwise block: event counts by name for one archived day. Replace the project, dataset and date suffix with your own (if your project ID contains hyphens, wrap the whole table path in backticks), and switch to a wildcard table when you want a range of days.

SELECT
  PARSE_DATE('%Y%m%d', event_date) AS day,
  event_name,
  COUNT(*) AS events
FROM yourproject.analytics_123456789.events_YYYYMMDD
GROUP BY day, event_name
ORDER BY day, events DESC;

Two habits make the archive far more useful later. First, keep the raw tables and build views on top of them rather than overwriting anything. Second, export a copy of the property configuration alongside the data, because event definitions drift and the meaning of a row is only recoverable if you kept the dictionary.

How other tools handle history and export

Retention is a product decision, and tools make it differently. GA4's limit exists because Google stores granular data tied to identifiers, and keeping those indefinitely creates privacy exposure. Cookieless tools that store no personal data have less reason to expire rows, and several keep history for as long as you are a customer. The comparison below is qualitative.

ToolHistory windowRaw / bulk exportNotes
GA4Event-level: 2 or 14 months in standard properties. Aggregated reports longerFree BigQuery export (forward-only), report CSV, Data APIStrongest export tooling of the group, with the shortest granular window
PlausibleHosted: set by plan terms. Community Edition: your own databaseCSV export; self-hosting keeps the raw database in your handsPaid hosted plans; open source and self-hostable
FathomFull analytics history while subscribedCheck current docs for export optionsPaid, pageview-tiered; history is tied to an active subscription
Cloudflare Web AnalyticsLimited windowNo CSV button; data reachable through the GraphQL Analytics APIFree, cookieless, no custom events
GhostMetricsFull history, every plan including freeCSV from the dashboard or JSON from the API, every stored row and column, every planShips a manifest.json describing each column. Hosted only

Two practical points come out of that table. First, "full history while subscribed" and "full history on a free plan" are different promises: a tool that ties history to an active subscription means the archive question returns the day you cancel. Second, an export that produces aggregated tables is not the same as an export of every stored row. If you might one day switch tools, or need to audit a number, the rows are what matter.

If you are weighing where to go from GA4 more broadly, our Google Analytics alternatives comparison and the shorter GA4 alternative guide cover the trade-offs beyond retention.

How GhostMetrics handles history and export

GhostMetrics is our product, so treat this section as a description rather than a neutral review. The relevant facts for this topic are short.

Full history, on every plan. The free plan (free forever, no card, one website, unlimited pageviews) includes the real-time dashboard, every dashboard view and full history. There is no 2-month or 14-month event window and no paywall in front of older rows.

Raw export, on every plan. The Export data button in the dashboard downloads every stored row and every column as CSV. The same data is available as JSON from the API. This is not a Pro feature; the free plan gets it too. The export ships with a manifest.json that describes each column, including the dates on which the Core Web Vitals definitions changed, so someone opening the file a year from now can interpret it without asking anyone.

Why the retention question looks different. GhostMetrics sets no cookies, stores no IP addresses (they are hashed), keeps no personal data and uses no cross-session identifier. There is no user-level profile to expire, so the reason GA4 ages out granular data does not apply in the same way. That is a design property, not a claim that the two products are equivalent: GhostMetrics does far less than GA4 by design.

What it does not do with your GA4 history. There is no GA4 importer. Nothing carries over automatically, and the new tool starts its own history from the day the tag goes live. That is why the archive in the previous section matters: your old numbers live in the BigQuery tables and CSVs you save, and your new numbers live in GhostMetrics. For rebuilding your GA4 events on the new side, see our custom events without Google Analytics guide.

What you give up by leaving GA4. Google Ads attribution, audiences, ecommerce funnels and multi-session user analysis have no equivalent in a cookieless tool, and those are the capabilities that justify staying on GA4 for some teams. If your business is paid-acquisition-heavy, keep GA4 running for that, archive it properly, and consider running a lightweight tool beside it. If your questions are "which pages, from where, how fast, and what did people click", the cookieless model covers them, and it sets no cookies for a consent banner to ask about, as described in our note on analytics without a consent banner.

The install is one line in <head>, about 3 KB compressed on the wire:

<script defer src="https://ghostmetrics.nullagency.io/gm.js" data-site="YOUR-SITE-ID"></script>

What to archive, and what to let go

You do not need to keep everything. A sensible split, based on what teams actually ask for later:

The last point is the one that gets missed. Exporting solves a data-loss problem and creates a data-governance one. A cookieless tool sidesteps the second half of that trade, since there is no personal data in the rows to govern; a GA4 archive does not.

Want history you never have to rescue? Try GhostMetrics

Full history, every planCSV + JSON export, free too1 site free$9.99/mo flat Pro

GhostMetrics is cookieless web analytics: no cookies, no localStorage, no stored IP addresses, no personal data, and it honors Global Privacy Control and Do Not Track. Install one script tag and you are live; no plugin, no tag manager, no build step. The free plan is free forever: one site, unlimited pageviews, real-time dashboard, every view, full history.

Need more than one site or a public shareable dashboard? Pro is $9.99/mo flat, unlimited pageviews, unlimited websites (fair-use ceiling of 250), with a 30-day free trial: a card starts the trial, nothing is charged for 30 days, and you can cancel anytime. Raw event export as CSV or JSON, with a manifest.json for the columns, is available on every plan, including free.

Start free: full history, no card See the live demo

FAQ

How long does GA4 keep my data?
For event-level data in a standard property, the retention setting is either 2 months or 14 months, and the default is the shorter one until you change it in Admin. Aggregated standard reports are kept longer. Check current Google documentation for the exact scope.
Will my standard GA4 reports disappear after 14 months?
Not the aggregated standard reports, which are built from aggregated data. The retention setting limits user-level and event-level data, which is what Explorations and custom queries read. That is why a year-over-year Exploration can come back empty while a standard report still loads.
Is the GA4 BigQuery export free, and does it include past data?
Linking a property to BigQuery is free, but the export starts on the day you link it and does not backfill older history. Google bills BigQuery storage and queries under its own pricing, so check the current free-tier allowances.
Can I import my GA4 history into GhostMetrics?
No. Nothing carries over automatically and GhostMetrics has no GA4 importer. Export your GA4 data first and keep it as a separate archive, then let GhostMetrics build its own history from the day you install the tag.
Does GhostMetrics delete old data on the free plan?
No. The free plan keeps full history, and every plan can export every stored row and column as CSV from the Export data button or as JSON from the API, with a manifest.json describing each column.

Keep reading

Google Analytics Alternatives

The full field compared, beyond retention

Is Google Analytics GDPR Compliant?

What the consent question means for your data

GA4 Alternative

A shorter guide to leaving Google Analytics

GhostMetrics Live Demo

The real dashboard, live data

Disclosure: GhostMetrics is built by Null Agency and we use it on this site, so we are not a neutral party about our own product. We kept the claims to what the free and paid plans actually do, and pointed to GA4's export tooling where it is stronger. Retention limits, export options and pricing for third-party products can change; always check the vendor's current documentation before deciding.