Connect Google Analytics
Connect a GA4 property so Adduce reads its traffic, channel mix and landing pages and turns the changes into evidence.
Adduce reads three fixed reports from a GA4 property — traffic, channel mix and landing pages — and turns what moves in them into evidence.
Beta
This connector works, but it has not been proven against a real customer account yet, so Adduce badges it Beta wherever it appears. Tell us at hello@adducehq.com if what you see does not match this page.
Before you begin
- Role: project Editor or Lead. A workspace Admin is a lead on every project.
- In Google Cloud: permission to create a service account and a JSON key for it.
- In GA4: permission to grant that service account access to the property.
- To hand: the numeric GA4 property ID, and the whole JSON key file.
- Time: fifteen minutes, most of it in Google Cloud.
What Adduce reads
| Surface | What it becomes |
|---|---|
| Daily active users, sessions and page views | Evidence describing the traffic trend over the last eight weeks |
| Sessions and users by channel group | Evidence describing where your traffic comes from |
| A channel that jumps or falls week on week | Evidence naming the channel and the size of the move |
| Sessions by landing page | Evidence naming the pages people arrive on most |
Only these three reports are read. Adduce deliberately leaves event trends to your product-analytics source rather than counting the same thing twice, and it reads nothing about individual people.
Permissions the service account needs
| Grant | Where | Why |
|---|---|---|
| Analytics read-only | the key's own scope | call the GA4 Data API at all |
| Viewer on the property | GA4 Admin → Property access management | read that one property's reports |
Nothing is written. The service account can read the property's reports and nothing else in your Google account.
Steps
In Google Cloud, open IAM → Service Accounts, create one for Adduce, then open Keys → Add key → JSON and download the file. Keep the whole file: the paste has to include both the account's email address and its private key.
In GA4, open Admin → Property access management and add that service account's email address as a Viewer.
Still in GA4, open Admin → Property → Property details and copy the Property ID. It is a number, not the G-… measurement ID.
In Adduce, open the project, choose Sources, then Add source, and choose the Google Analytics tile.
On Connection details, name the source and paste the property ID and the JSON key.
Paste the whole downloaded file into Service account key (JSON) — the field's own help names both pages it depends on.
Choose Continue. Adduce mints a token from the key and runs a one-metric report against the property, so a key that cannot reach that property is refused here, naming the email address to add in GA4.
First sync and cadence
The first sync reads the last ninety days of the three reports. After that Adduce syncs once a day at 03:00 UTC, and Sync now runs one immediately. Today is always excluded, because GA4's current day is incomplete, and the three most recent days are re-read every time — GA4 restates them for about seventy-two hours.
Disconnect or replace credentials
Delete the source from its page and type its name to confirm. Deleting removes the evidence it produced. To rotate the key, delete the source and add it again; the next sync backfills ninety days afresh. Revoking the key in Google Cloud stops the sync at its next run, which then shows as failed.
If it did not work
Why does it say the service account has no access to this property?
The key is valid but that property has not been shared with it. The message names the email address to add — put it in GA4 under Admin → Property access management as a Viewer, then try again.
Why was the property ID refused?
You pasted the G-… measurement ID. Adduce needs the numeric property ID from Admin → Property → Property details.
Why was the key refused?
Either it is not the whole file — it must still contain the account's email address and its private key — or the key has been deleted or disabled in Google Cloud. Create a fresh JSON key and paste all of it.