← All playbooks
Analytics migration

Universal Analytics → Google Analytics 4

Rebuild measurement in GA4 and preserve any previously exported Universal Analytics history without pretending that historical UA data can be imported or that unlike metrics form one continuous series.

Typical timeline15–25 business days55–90 hours active work
Statusneeds review
Source testedUniversal Analytics historical access ended 2024-07-01
Destination testedGA4 guidance reviewed 2026-07-19
Last reviewed2026-07-19
Sources5
Before you migrate

Should you make this move?

Both platforms have a case. Compare what you gain with what you give up before scheduling the cutover.

Current platform

Universal Analytics

Reasons to stay
  • Its session-based reports remain familiar to a generation of web analysts
  • Established reporting patterns make recurring measurement easier
Reasons to leave
  • Processing has ended, making it unsuitable as an active measurement platform
  • Tracking quality still depends on disciplined implementation and governance
New platform

Google Analytics 4

What gets better
  • Event-based measurement connects web, app, audiences, and Google advertising
  • Established reporting patterns make recurring measurement easier
What gets worse
  • Its data model and reporting interface are difficult for many teams to govern
  • Tracking quality still depends on disciplined implementation and governance
Best of the move

Google Analytics 4: Event-based measurement connects web, app, audiences, and Google advertising. This removes a major source-side concern: Processing has ended, making it unsuitable as an active measurement platform.

Worst of the move

What you lose: Its session-based reports remain familiar to a generation of web analysts. What you inherit: Its data model and reporting interface are difficult for many teams to govern.

01At a glance

Know the shape of the move.

Transfer outcome12 features audited
Transfer outcome distributionClean transfer: 0, Partial transfer: 6, Manual rebuild: 3, Not transferred: 3.
Clean0
Partial6
Manual3
Lost3
Mapping route9 of 10 fields have a destination path

This timeline assumes

  • It is 2026: standard Universal Analytics processing stopped and historical property access ended on July 1, 2024.
  • Historical UA analysis is possible only from exports, reports, Sheets, API extracts, or BigQuery data created while UA access still existed.
  • GA4 is already collecting or will begin collecting only forward-looking data; no step backfills UA history into the GA4 property.
  • You control site/app tagging, consent mode, tag management, GA4 administration, Google Ads links, dashboards, and BigQuery when used.
  • The objective is decision continuity, not numeric equality between UA and GA4.
02Loss matrix

What survives the move.

“Partial” and “manual” are not footnotes. They are work that must be scheduled and verified.

ItemOutcomeImpactWhat happensMitigation
Historical UA data inside GA4lostcriticalGoogle states that UA historical data cannot be imported into GA4 and Setup Assistant does not backfill it.Keep prior exports in a separate warehouse/archive and label reports by measurement system.
Historical UA data not exported before July 1, 2024lostcriticalThe source property is no longer available to create a new export.Inventory existing CSV, Sheets, API, Looker Studio, backup, and UA 360 BigQuery assets; do not promise recovery beyond them.
Pageviews and screenviewspartialhighGA4 uses an event-based model and automatic events; reporting scope and calculations differ.Define the business question and validate event payloads rather than matching the old headline number.
Sessions and userspartialcriticalSession creation, engaged sessions, identity, attribution, and user metrics differ between UA and GA4.Create a dated metric dictionary and establish a new GA4 baseline.
UA eventspartialcriticalCategory, action, label, and value do not map automatically to a well-designed GA4 event and parameters.Create a controlled event naming and parameter plan; avoid copying the old hierarchy blindly.
GoalsmanualcriticalUA goals become GA4 events marked as key events, but funnels, durations, pages-per-session goals, and attribution require redesign.Define the underlying business outcome, trigger event, validation query, and Ads behavior.
Custom dimensions and metricspartialhighGA4 scopes, registration, limits, compatible fields, and parameter model differ.Map only decision-useful fields and verify scope and report compatibility.
Views, filters, and content groupingslosthighGA4 properties and data streams do not reproduce UA views and their irreversible filters.Replace with data filters, comparisons, audiences, content groups, subproperties where licensed, or warehouse logic.
Audiences and segmentsmanualhighDefinitions, lookback windows, scope, eligibility, and activation behavior change.Rebuild from business definitions and test audience entry and exclusion.
Attribution and channel groupingpartialcriticalDefault models, channel definitions, identity, and late updates differ, so trend lines are not continuous.Document models and use a parallel or boundary period rather than splicing metrics.
Dashboards, scheduled reports, and API queriesmanualhighUA dimensions, metrics, IDs, and APIs do not become GA4 Data API requests.Rebuild each report from an approved metric contract and show an explicit UA/GA4 boundary.
Raw export continuitypartialhighGA4 can export raw events to BigQuery going forward, subject to setup, schema, limits, billing, and processing behavior.Enable and monitor BigQuery Export early; it cannot recreate missed UA or pre-link GA4 days.
03Field and feature mapping

Where each thing goes.

SourceDestinationMethodNotes
UA tracking IDGA4 property, web/app data stream, and measurement IDmanualCreate and document each environment explicitly.
pageview hitpage_view eventtransformValidate page_location, page_title, referrer, SPA route changes, and duplicate configuration.
event category/action/label/valueevent_name plus event parameterstransformUse a stable taxonomy with parameter definitions and types.
UA goalGA4 event marked as a key eventmanualRedesign the condition and test deduplication and attribution.
user-scoped custom dimensionuser property and registered user-scoped custom dimensiontransformConfirm privacy, cardinality, and scope.
hit-scoped custom dimensionevent parameter and event-scoped custom dimensiontransformNot all combinations are report-compatible.
session-scoped custom dimensionevent/user parameter or warehouse-derived session fieldmanualGA4 scope does not offer a universal direct equivalent.
UA view filterGA4 data filter, comparison, audience, or warehouse transformmanualChoose based on whether the requirement is collection, reporting, or governance.
UA segmentGA4 comparison, exploration segment, or audiencemanualScope and lookback must be re-specified.
UA historical table/reportseparate historical archive or warehouse tableunsupportedIt cannot become native GA4 historical data.
04Before you begin

Make the move recoverable.

Backup procedure

Create the source-of-truth backup

Preserve every surviving UA export and the definitions needed to interpret it before rebuilding measurement.

  1. Search organizational storage, analyst drives, Sheets, Looker Studio sources, API jobs, warehouses, and UA 360 BigQuery projects for pre-2024 exports.
  2. Hash and inventory each surviving dataset with property/view ID, date range, timezone, currency, filters, sampling status, dimensions, metrics, and extraction method.
  3. Export current site/app tags, tag-manager versions, consent configuration, data layers, dashboard definitions, Ads links, audiences, and KPI documentation.
  4. Capture GA4 property, stream, filters, retention, identity, attribution, key events, custom definitions, integrations, and BigQuery configuration.
  5. Store raw historical exports separately from transformed comparison tables.

Proof to capture: A measurement archive lists every surviving UA dataset and its interpretation limits, plus a versioned snapshot of current collection and reporting configuration.

Transformation · Event and KPI specification

Measurement contract

Replace implementation-shaped UA definitions with stable business definitions.

  1. Define each decision, KPI, event, parameters, types, owner, consent basis, and test.
  2. Map legacy usage as historical context only.
  3. Version names and prevent accidental personally identifiable information.

Proof to capture: Save the input, output, command or tool settings, warnings, and final item counts.

Transformation · Warehouse or BI semantic layer

Historical boundary model

Compare UA and GA4 without creating a false continuous series.

  1. Keep source_system and metric_definition fields.
  2. Normalize timezone and currency only where defensible.
  3. Show a visible boundary and avoid adding unlike metrics.

Proof to capture: Save the input, output, command or tool settings, warnings, and final item counts.

Transformation · Tag debugger, browser network tools, GA4 DebugView, and BigQuery

Tag and payload validation

Prove GA4 collection at the browser/app, network, DebugView, report, and warehouse levels.

  1. Test consent states and representative journeys.
  2. Check event names, types, parameters, duplicates, and PII.
  3. Reconcile landed events after processing windows.

Proof to capture: Save the input, output, command or tool settings, warnings, and final item counts.

05Handle with care

The things most likely to hurt.

These are operating limits. Treat every “Stop if” condition as a blocked migration, not a suggestion.

Reporting

A dashboard splices unlike UA and GA4 metrics

criticallikely likelihood

A single trend line crosses the platform boundary without a definition change marker.

Consequence
Leaders interpret measurement-system change as business performance.
Mitigation
Use separate series and a metric dictionary.

Stop if: A KPI cannot be explained identically on both sides of the boundary.

Collection

Duplicate GA4 tags inflate events

criticalpossible likelihood

The same interaction fires from hardcoded gtag, GTM, CMS integration, or multiple containers.

Consequence
Events and key events are overstated.
Mitigation
Inventory all tag sources and deduplicate by controlled tests.

Stop if: Any single test action produces more events than the contract allows.

Activation

Key events optimize ads incorrectly

criticalpossible likelihood

A test, duplicate, internal, or low-value event is marked as a key event and imported to Ads.

Consequence
Automated bidding spends against the wrong signal.
Mitigation
Validate counts, value, deduplication, and traffic filters before Ads activation.

Stop if: Key-event volume or value cannot reconcile to source transactions.

Privacy

Consent behavior changes silently

criticalpossible likelihood

Events or advertising signals appear in denied states unexpectedly.

Consequence
Privacy and policy exposure.
Mitigation
Test every consent state and region with legal-approved expectations.

Stop if: Collection exceeds the approved consent behavior.

Data

BigQuery export is assumed to be retroactive

highpossible likelihood

Analysts expect pre-link GA4 or UA raw events to appear.

Consequence
Historical analysis has permanent gaps.
Mitigation
Document the first export date and monitor daily tables.

Stop if: Critical reporting depends on data that was never exported.

06Precise timeline

Do the work in this order.

Estimate forOne web property with up to 75 tracked events, 20 KPIs, 10 dashboards, and one Ads account
Total elapsed15–25 business days
Active work55–90 hours
BufferAdd at least one complete business cycle for low-frequency key events, consent-region tests, app releases, or attribution validation.
01
Days 1–3Archive and define the boundary3 days
02
Days 4–7Measurement design4 days
03
Days 8–12Implement and unit-test collection5 days
04
Days 13–17Production observation5 days
05
Days 18–22Rebuild reporting3–5 days
06
Days 23–25Activation and closeout2–3 days
  1. Days 1–3 · archive

    Archive and define the boundary

    10–16 hours active3 days elapsedOwner discovery waiting
    • Inventory all surviving UA exports and definitions.
    • Document unavailable history and the exact UA/GA4 boundary.

    Depends on: Analytics, storage, BI, and warehouse access

    Stop / go checkpoint

    Is the historical claim honest?

    Go when: Every retained historical source has known dates, definitions, and limitations.

    Stop when: The plan promises native GA4 backfill or unavailable UA recovery.

  2. Days 4–7 · design

    Measurement design

    16–24 hours active4 days elapsedBusiness, privacy, and marketing approval waiting
    • Define KPIs, event taxonomy, parameters, identity, consent, retention, and attribution.
    • Map tags, key events, audiences, Ads, dashboards, and BigQuery.

    Depends on: Historical boundary, Business owners

    Stop / go checkpoint

    Approve implementation?

    Go when: Every event and KPI has an owner, definition, privacy basis, and test.

    Stop when: PII, ambiguous scope, or unowned activation remains.

  3. Days 8–12 · implement

    Implement and unit-test collection

    16–24 hours active5 days elapsedCode review and deployment waiting
    • Implement data-layer and GA4 tags in non-production.
    • Configure property, streams, filters, key events, custom definitions, links, and BigQuery.
    • Test payloads and consent states.

    Depends on: Approved contract, Test environment

    Stop / go checkpoint

    Release to production?

    Go when: Representative journeys fire exactly the contracted events with no PII or duplication.

    Stop when: Consent, identity, event typing, or duplication checks fail.

  4. Days 13–17 · observe

    Production observation

    6–12 hours active5 days elapsedGA4 and attribution processing waiting
    • Release in a controlled window.
    • Reconcile events, parameters, transactions, consent states, key events, and BigQuery tables.
    • Keep Ads optimization changes disabled.

    Depends on: Passed pre-production tests

    Stop / go checkpoint

    Activate reporting and Ads?

    Go when: Collection reconciles within approved tolerances across full processing windows.

    Stop when: Volume, value, consent, or warehouse gaps are unexplained.

  5. Days 18–22 · reporting

    Rebuild reporting

    6–10 hours active3–5 days elapsedStakeholder review waiting
    • Build GA4-native dashboards and separately labeled historical views.
    • Validate metric definitions, filters, access, and visible boundary notes.

    Depends on: Stable production data

    Stop / go checkpoint

    Retire legacy reports?

    Go when: Decision owners approve definitions and can reproduce verification queries.

    Stop when: Any dashboard hides the source-system boundary or uses incompatible fields.

  6. Days 23–25 · activate

    Activation and closeout

    1–4 hours active2–3 days elapsedAudience and Ads processing waiting
    • Enable approved key-event and audience activation.
    • Monitor Ads counts and remove obsolete UA tags, queries, and schedules.
    • Publish the verification report.

    Depends on: Approved reporting

    Stop / go checkpoint

    Close migration?

    Go when: Activation matches validated GA4 signals and no obsolete tag collects.

    Stop when: Ads receives duplicate, test, or unreconciled key events.

07The point of change

Cut over with a way back.

Go live

Cutover

Make the validated GA4 measurement contract authoritative while preserving UA exports as a separately labeled historical archive.

Recommended window: Early Monday through Wednesday, avoiding campaign launches and allowing at least three staffed days for observation.

  1. Freeze measurement configuration and publish its version.
  2. Deploy GA4 collection and validate browser/app payloads in production.
  3. Wait for processing, then reconcile events, values, consent states, and BigQuery tables.
  4. Switch dashboards and recurring reports to approved GA4 definitions with a visible historical boundary.
  5. Enable Ads key events and audiences only after volume and value validation.
  6. Remove obsolete UA tags and scheduled jobs without deleting the historical archive.

Proof to capture: A versioned contract, passing payload tests, reconciled reports and warehouse tables, approved dashboards, and correctly bounded historical views.

Return to safety

Rollback

Disable incorrect GA4 collection or activation while preserving already landed events and the last known-good configuration.

Deadline: Within the same business day for privacy, PII, duplicate key-event, or advertising-impact failures.

  1. Disable the faulty GA4 tag or publish the prior tag-manager/container version.
  2. Pause affected key-event and audience imports in Ads.
  3. Annotate the invalid time window and preserve raw payload evidence.
  4. Restore the last approved dashboards and metric-contract version.
  5. Correct in non-production and rerun the full validation suite before redeploying.

Proof to capture: Faulty events stop, Ads no longer consumes them, the invalid interval is documented, and the previous reporting configuration is restored.

Rollback immediately when
  • PII appears in any event or parameter
  • Consent behavior exceeds approval
  • Duplicate or missing critical events
  • Transaction value or key-event count cannot reconcile
  • Ads optimizes against an invalid signal
08Verification report

Prove the migration worked.

Every blocking check must pass. Capture the evidence before cleanup begins.

0%
Interactive report preview0 / 8 checks passed
PassIDCheckMethodExpected resultEvidence
V-01BlockingUA archive provenanceInspect every retained dataset for source ID, date range, timezone, filters, sampling, schema, and hash.Every historical claim is traceable; unavailable periods are stated.Archive manifest.
V-02BlockingEvent contractPerform representative journeys and inspect network and DebugView events.Exact names, counts, types, parameters, and no prohibited data.Journey and payload log.
V-03BlockingConsent statesTest accepted, denied, partial, withdrawn, and regional scenarios.Collection and modeling signals match approved behavior.Consent test matrix.
V-04BlockingTransaction reconciliationCompare order IDs, currency, gross value, refunds, and duplicates with the commerce source.100% IDs accounted for and value within approved processing tolerance.Transaction comparison.
V-05BlockingOutcome countsReconcile each key event to its authoritative business source and exclude tests/internal traffic.Counts and value meet the contract before Ads activation.Key-event report.
V-06BlockingBigQuery continuityCheck daily tables, event volume, late updates, schema, billing, and export alerts.No unexplained missing day and the first available date is documented.Warehouse monitor output.
V-07BlockingMetric definitions and compatibilityReproduce dashboard metrics from documented queries and inspect incompatible-field warnings.Every KPI matches its approved GA4 definition and shows the UA boundary.Dashboard acceptance sheet.
V-08BlockingAds and audiencesCompare imported key events, values, audience entry, exclusions, and destinations.Only approved, validated signals activate and counts reconcile.Activation audit.
09Post-migration cleanup

Remove the scaffolding safely.

Safe after: At least one complete reporting and campaign cycle, all blocking checks pass, and stakeholders approve the historical boundary.

  1. Preserve UA exports, provenance, definitions, transformations, and known gaps under the retention policy.
  2. Remove obsolete UA tags, variables, APIs, Sheets jobs, alerts, and credentials.
  3. Retire dashboards that imply continuous UA/GA4 comparability.
  4. Restrict and monitor BigQuery datasets, billing, service accounts, and retention.
  5. Record GA4 property, stream, tag, dashboard, Ads, privacy, and warehouse owners.
  6. Schedule monthly collection checks and quarterly contract, consent, access, and restore reviews.
Sources and maintenance

Built to be reviewed.

Tested 2026-07-19. Next scheduled review: 2026-10-19.

  1. Google Analytics migration Q&AAccessed 2026-07-19
  2. GA4 Setup AssistantAccessed 2026-07-19
  3. GA4 data compatibilityAccessed 2026-07-19
  4. GA4 BigQuery ExportAccessed 2026-07-19
  5. GA4 BigQuery schemaAccessed 2026-07-19