Search Console and GA4 data in audits
Connect Google Search Console and GA4 with one service account key, so every audit adds clicks, impressions, sessions and key events to each URL and issue.
Agency edition. Search Console and GA4 connections are part of the Agency edition. See Editions and page limits.
After each audit, SiteAud!tLint pulls the last 7, 28 or 90 days of data for every crawled URL and adds it to the Action Plan. You see which issues sit on pages that actually earn clicks and sessions, and you fix those first.
| Source | Per URL |
|---|---|
| Search Console | Clicks, impressions, CTR and average position |
| GA4 | Sessions, engagement rate and key events |
1. Create a service account key in Google Cloud
One key covers both Search Console and GA4.
- Open the Google Cloud console and select or create a project.
- Under APIs & Services > Library, enable the Google Search Console API and the Google Analytics Data API.
- Under IAM & Admin > Service Accounts, create a service account. It needs no roles in Google Cloud.
- Open the service account, go to Keys > Add key > Create new key, choose JSON and download the file.
- Copy the service account e-mail. It ends in
iam.gserviceaccount.com.
2. Give the service account access
- Search Console: open the property, go to Settings > Users and permissions > Add user, paste the service account e-mail and choose Restricted. Read access is all SiteAud!tLint needs.
- GA4: open Admin > Property access management, add the service account e-mail and give it the Viewer role.
3. Connect in SiteAud!tLint
- Open Settings > Connections and find the Google section.
- Open the JSON key file in a text editor, copy everything, and paste it into Service account.
- Tick Pull Search Console data, click Load properties and pick the property for this site.
- Tick Pull GA4 data, enter the Property ID, a number such as
123456789from Admin > Property details in GA4, and click Test GA4. - Pick a Date range and click Save.
The key is stored in the system keychain, like Slack and Linear keys. See Where your data lives.
How the data lines up with your audit
- Search Console data ends two days before the audit, because Google reports it with a delay of about two days.
- GA4 rows are matched to crawled URLs by host name and page path.
www.and the bare domain count as the same site. - Pick the Search Console property that matches the crawled site. A domain property (
sc-domain:example.com) covers every subdomain and protocol, while a URL prefix property covers only that exact prefix. - In the Action Plan, each issue type shows the clicks, impressions and sessions of its affected URLs, so a warning on a page with real traffic can outrank a critical issue on a page nobody visits.
Troubleshooting
| Message or symptom | Fix |
|---|---|
| "That is not valid JSON" | Paste the whole key file, from the first { to the last } |
| "This JSON is not a service account key" | You copied a different file, such as an OAuth client. Create a JSON key for a service account (step 1) |
| "No properties shared with ... yet" | Add the service account e-mail as a user in Search Console (step 2) |
| An error mentioning an API that has not been used or is disabled | Enable the Search Console API or the Analytics Data API in the same Google Cloud project as the key |
| Test GA4 reports a permission error | Give the service account the Viewer role on that GA4 property, and check the Property ID is the number, not the measurement ID that starts with G- |
| Columns are empty for some URLs | Those pages had no clicks or sessions in the date range, or their URL in Google differs from the crawled one |
Applies to SiteAud!tLint 0.8 and later. Current version 0.8.0.