Most people who want to leave Google Analytics stay for one reason: the history. Years of traffic sit in GA4, and starting a new tool from zero means losing the charts you compare against every month.

You don’t have to lose them. GA4 keeps your aggregated reports for as long as the property exists, and Google lets you read them through an API. Vireo Analytics uses that API to copy your history into your WordPress database, in the same tables as the traffic it records itself, so your charts run straight through from the old tool to the new one.

What GA4 still has

The data retention setting in GA4, two months or fourteen, sounds like it limits how far back you can go. It doesn’t affect the standard reports. Google applies it to explorations and funnel reports only, so daily pageviews, pages, referrers and countries go back to the day the property started collecting.

Universal Analytics is a different story. Google shut it down in 2024 and its data is no longer available, so history from before your GA4 property was set up can’t be imported by anyone. Vireo’s importer reads GA4 properties only.

What carries over

From GA4, Vireo brings across:

  • Daily pageviews and users
  • Pageviews and users per page, matched to your posts where the address resolves to one
  • Referring sites, and which pages each one sent readers to
  • Countries
  • Browsers, operating systems and device types
  • Outbound link clicks, file downloads and form submissions, where GA4 recorded them
  • Your own custom events, by name and count

What stays in GA4

Some of what GA4 measures has no place to live in Vireo, so it doesn’t come across:

  • Sessions, engagement time and revenue
  • GA4’s automatic events, such as scroll and session_start
  • The parameters attached to events. Your own events come across by name only.
  • Query strings on page addresses. Pages are stored by path.

If you rely on any of these, export them from GA4 before you switch the tracking off, or keep the property around to look things up.

Do it in this order

The order matters, because it decides whether you end up with a gap, an overlap or a clean line.

  1. Install Vireo and let it record, with GA4 still running. From that day on, Vireo has its own numbers, and nothing you do in GA4 can affect them.
  2. In Google Cloud Console, create a project, enable the Google Analytics Data API, create a service account and download a JSON key for it.
  3. In GA4, open Admin, then Property access management, and give the service account’s address Viewer access on the property.
  4. Note the property ID from Admin, then Property details. It’s a number, not the G- measurement ID.
  5. In WordPress, go to Vireo Analytics, Settings, Import & export. Under Import data, choose Google Analytics, paste the whole key file, enter the property ID, set the date range and click Start import.
  6. Check the imported months against GA4’s own reports.
  7. Remove the GA4 tracking code from your site.

The GA4 switching guide has each Google screen in detail, including what to do if Google refuses the request.

Vireo handles the overlap for you. If it already has its own numbers when you import, the import stops the day before they begin and tells you which day that is, so no day holds both GA4’s count and Vireo’s.

The import runs in two-week batches, newest first, and shows its progress as it goes. It runs from the import screen, so keep that tab open until it finishes. On a site with years of history that takes a while. When it’s done, you can remove the saved key from the same screen. The data already imported stays.

Why the numbers won’t match exactly

When you compare the imported months with GA4, most figures will line up. Visitors won’t, and that’s expected.

Vireo counts a visitor once per day. For a month, its visitor figure is the sum of the daily counts. GA4 counts a returning user once across the whole month. So the same month reads higher in Vireo’s visitors column than in GA4’s users, even though the underlying data is the same.

After the switch, your own numbers will differ from GA4’s for other reasons too. Both tools exclude known bots, but Vireo also drops automated browsers and visitors who view one page more than five times in a day, which can lower the count. How much of your traffic is bots explains what it filters. On a site where GA4 only runs after a visitor accepts a cookie banner, GA4 misses everyone who declines. Vireo doesn’t use cookies and doesn’t wait for that consent, which can raise the count. It does skip visitors whose browser asks not to be tracked. Compare trends across the switch rather than single totals.

Things that catch people out

Import each date range once. Importing the same dates twice adds the numbers twice, and that can’t be undone. Vireo remembers what it imported and asks before you run an overlapping range, but if a run stops partway, set the dates to what’s missing rather than starting from the beginning.

The key belongs to a service account, not to your Google login. If the import says Google refused the request, the usual cause is that Viewer access was granted on the account rather than on the property, or that the plain Analytics API was enabled instead of the Analytics Data API.

Your server needs the PHP OpenSSL extension to sign the requests to Google. Vireo checks for it and says so on the import screen if it’s missing. Most hosts have it on.

Remove GA4 only after you’ve checked the import. Once the code is off your site, GA4 stops collecting, and the import is your record of everything before that day.

If GA4 isn’t your only old tool

If you also used Jetpack Stats, a WordPress stats plugin, or Plausible, Vireo can import those too, and the same overlap rule applies to each one. The importing docs list every source and what it needs, and the comparison table shows what comes across from each. If Jetpack is on its way out too, leaving Jetpack covers the rest of what it does.