Import from Google Analytics

An import copies your Google Analytics 4 (GA4) history into RevScope, so your charts don't start on the day you installed the tracking script. It runs once, in the background, for a date range you choose. It doesn't keep syncing afterwards, and it never changes anything in your Google Analytics account. Only account admins can start or remove an import.

What you get, and what you don't

Google Analytics only hands out daily totals, such as "40 sessions on /pricing on March 3" or "100 sessions from Germany on March 3". It doesn't give out the individual visits behind those numbers. RevScope stores the totals as they are rather than inventing visits to match, and that one fact explains most of what follows. Because each total describes one thing at a time, RevScope can tell you how many sessions came from Germany, and how many viewed /pricing, but not how many sessions from Germany viewed /pricing.

An import brings in these daily numbers:

A GA session becomes one visitor in RevScope, since RevScope counts a visitor per session. GA calls a session engaged when it lasts at least 10 seconds or views a second page, and any other session counts as a bounce here, which is the same rule RevScope applies on the Overview tab.

Screen sizes, languages, GA's user counts, and GA's ecommerce revenue are not imported. Connect a payment integration for revenue, and Search Console for search terms.

Where imported data shows up

Imported numbers are added to tracked ones on the Overview tab and its breakdown panels, and on the Audience, Pages, and Events tabs. The Overview chart shades the imported range and labels it.

Some views need individual visits or payments, so they leave imported data out: Revenue, Sources, Campaigns, Visitors, Funnels, and page transitions. The same goes for any view with a filter applied, since a filter asks exactly the kind of combined question daily totals can't answer. When a view leaves out imported data that exists for the selected dates, a note under the tabs says so. If you filter the Overview to one country, for example, the numbers drop to tracked sessions only and the note appears.

Rates need more care where the two kinds of data mix. Imported sessions have no revenue attached, so counting them in a conversion rate would make it look worse than it was. Conversion rate and revenue per visitor therefore use tracked sessions only, on every tab, even though the visitor count beside them includes imported ones. On the Overview chart those two lines are blank for days that only have imported data.

Bounce rate also depends on the tab. GA can only report bounces for the page a session landed on, so landing pages include imported bounces, while the bounce and exit rates on the Pages tab use tracked sessions only.

If you'd rather see tracked data alone, clear Include imported data in reports in Settings. This hides imported data from the dashboard without deleting it, and you can turn it back on whenever you like. Ask AI and MCP clients can still query it.

Connect your Google account

The import section is in Settings, for each project. There are two ways to give RevScope read access to GA.

Connect with Google is the quick way. You sign in with a Google account that can see the property and approve read-only access to Google Analytics. Self-hosted instances only show this button after some setup.

A service account takes longer to set up, but doesn't depend on anyone's personal Google account, and it's the same kind of credential the Search Console integration uses. To create one:

  1. In Google Cloud Console, pick or create a project. Under APIs & Services → Library, enable both the Google Analytics Data API and the Google Analytics Admin API.
  2. Under IAM & Admin → Service Accounts, create a service account with no project roles. Then open it and choose Keys → Add key → Create new key → JSON to download its key file.
  3. In Google Analytics, open Admin → Property access management on the property you want to import, and add the service account's email (client_email in the key file) with the Viewer role.
  4. Paste the whole key file into Service account JSON key in Settings and choose Connect service account.

RevScope keeps your credential, encrypted, only as long as it needs it. It deletes the credential when the import finishes, fails, or is cancelled, and if you connect but never start an import, it deletes it after two hours. With Connect with Google, it also asks Google to cancel the access it was given, once no other import is using that Google account. A later import means connecting again.

Choose what to import

Once connected, the form asks for four things.

Property is the GA4 property to read. The list holds every property your credential can see. If it's empty, the credential has no access yet, which for a service account usually means step 3 above was missed or was done on a different property.

From is the first day to import. It starts at the oldest date your plan keeps, and you can't go further back, because data older than your plan's retention isn't meant to be kept. Free keeps 6 months, Starter 2 years, and Growth 5 years. Self-hosted has no limit, so the field starts at October 14, 2020, when GA4 launched.

To is the last day to import. It starts at the day before RevScope's first tracked pageview, because that first day is usually partial and GA already counted those visits too. A project with no tracking yet starts at yesterday. Today can't be imported because its numbers aren't final.

If RevScope has been tracking for longer than your plan keeps data, no range can avoid duplicates. The form says so, and Start import stays disabled until you choose an end date yourself.

You can choose a later end date, but the form will warn you first. On every day both GA and RevScope were running, the same visits get counted once by each, so visits and pageviews on those days are doubled. Suppose RevScope started tracking on August 10 and you import through August 31: all 22 of those days show about twice their real traffic.

Hostnames limits the import to traffic on the sites you list, separated by commas. It starts with the hostnames RevScope has already seen for this project, or empty if there are more than 50. This matters when one GA property covers several sites, or collects hits from staging servers you don't want in your reports. Leave it empty to import every hostname on the property.

While an import runs

Choosing Start import starts a background job, and you can close the page. It works from your newest month back to your oldest, so recent history appears first, and Settings shows how far it has got. A project runs one import at a time. Imports don't count toward your plan's monthly events.

Google limits how much data each property can request per hour and per day. A long range on a busy site can reach that limit, in which case the import shows as paused and tries again at the start of each hour until it can continue, which may take until the next day. You don't need to do anything. Other tools reading the same property share that limit.

If Google refuses access partway through, for example because someone removed the service account from the property, the import stops and shows the reason. The months already imported stay until you delete them.

Cancel, delete, and import again

Cancel stops a running import and keeps what it has imported so far. Delete removes all of an import's numbers from your reports, and is only available once it has stopped.

Two imports can't cover the same date, even from different properties, because their numbers would add up to double. To redo a range or to resume a cancelled or failed import, delete it and start again. You can also import a separate, earlier or later range alongside one you already have.

Limitations

Self-hosting

Service accounts work without any setup. To show Connect with Google as well, create an OAuth web client in Google Cloud Console and add https://your-domain/oauth/google-analytics as an authorized redirect URI, using the same address as REVSCOPE_WEB_BASE_URL. Enable the Google Analytics Data and Admin APIs on the same project. Then set REVSCOPE_GOOGLE_CLIENT_ID and REVSCOPE_GOOGLE_CLIENT_SECRET. Until Google has verified your app for the Analytics read-only scope, people signing in see a warning screen, and you'll need to list them as test users.

See all integrations, or connect Search Console for search terms.