How to combine Google Analytics and Search Console data
By the Analistable team · Updated · 3 min read
Search Console knows queries, impressions and clicks; GA4 knows sessions and conversions. Join them on the landing page: Search Console reports full URLs (https://example.com/pricing), GA4 reports paths (/pricing), so strip the domain first. GA4's built-in Search Console link shows both by landing page, but to connect queries to conversions you need to join exports yourself.
Part of our guide: How to join spreadsheets on a common column
What each tool can tell you
| Search Console | GA4 | |
|---|---|---|
| Unit | Clicks and impressions in Google Search | Sessions, users, events on your site |
| Search queries | Yes | No |
| Conversions / revenue | No | Yes |
| Page identifier | Full URL | Landing page path (+ query string) |
| Data retention | 16 months | Depends on property settings; reports keep aggregated data |
Option 1: GA4's built-in Search Console link
In GA4 Admin → Product links → Search Console links, link the property. Then in Reports → Library, publish the Search Console collection. You get two reports: Queries (Search Console metrics by query) and Google organic search traffic (Search Console clicks next to GA4 engagement and conversions by landing page).
The limit: queries can't be combined with GA4 metrics in these reports. You can see which pages convert and which queries get clicks, but not which queries lead to conversions.
Option 2: join the exports
- In Search Console, open Performance, set the date range, open the Pages tab and export. (The interface exports up to 1,000 rows; use the API or the BigQuery bulk export for more.)
- In GA4, open Reports → Engagement → Landing page, filter Session default channel group = Organic Search, set the same date range and download the CSV.
- Clean the key: in the Search Console sheet, add
=REGEXREPLACE(A2, "^https?://[^/]+", "")(Google Sheets) or, in Excel,=MID(A2, FIND("/", A2, 9), 500)to turn the URL into a path. - Join on the path with XLOOKUP or Power Query Merge.
| Landing page | GSC clicks | GSC position | GA4 sessions | GA4 conversions | Conv. per 100 clicks |
|---|---|---|---|---|---|
| /pricing | 1240 | 4.1 | 1105 | 62 | 5 |
| /blog/merge-csv-files | 3810 | 6.8 | 3392 | 21 | 0.6 |
| /tools/compare-spreadsheets | 950 | 9.3 | 861 | 34 | 3.6 |
Sessions are lower than clicks partly because of consent and ad blockers, and because a click and a session are counted differently. Compare ratios between pages rather than expecting the numbers to match.
Estimating conversions per query
Export queries with pages from the Search Console API (dimensions page and query). For each page, share its GA4 conversions across its queries in proportion to clicks:
=XLOOKUP([@Path], GA4[Landing page], GA4[Conversions], 0) * [@Clicks] / SUMIFS([Clicks], [Path], [@Path])It's an estimate — it assumes every query converts at its page's average rate — but it ranks queries by likely business value far better than clicks alone.
URL details that break the join: trailing slashes (/pricing vs /pricing/), upper-case letters, and query strings in GA4's “Landing page + query string” dimension. Normalise both sides the same way.
Doing it without spreadsheets
Analistable connects to Google Analytics and Search Console and loads both reports into an in-browser database, so you can ask “which pages have high impressions but low conversion?” and get the joined table back. Related: finding pages that are losing clicks, merging GA4 with ad cost data and combining several GA4 properties.
Frequently asked questions
- Can I see Search Console queries in GA4?
- Yes, after linking Search Console in GA4 Admin and publishing the Search Console collection. The Queries report shows Search Console metrics only, not GA4 conversions.
- Why don't Search Console clicks match GA4 sessions?
- They measure different things: clicks in Google Search vs sessions recorded on your site. Consent banners, ad blockers and session rules all reduce GA4's count.
- How do I join GA4 and Search Console by URL?
- Strip the protocol and domain from Search Console URLs so they match GA4's landing page paths, normalise trailing slashes and case, then use XLOOKUP or a merge.