How to Combine GA4 and Google Search Console Data for Deeper Organic Traffic Insights
Google Analytics 4 tells you what happens on your site. Google Search Console tells you what happens before your site. Neither alone answers: "Which search queries drive my most engaged traffic?" This guide walks you through 5 methods to combine them, from free manual setups to fully automated tools.
- Chapter I: Why Combine GA4 and Google Search Console
- Chapter II: What Data Lives Where
- Chapter III: Looker Studio Data Blending
- Chapter IV: Google Sheets (Expor or API)
- Chapter V: BigQuery for Large Sites
- Chapter VI Python with GA4 and GSC
- Chapter VII Third-Party Tools and Platforms
- Chapter VIII Common Pitfalls
- Chapter IX Unlocking Insights
- Chapter X Frequently Asked Questions
- Chapter XI Conclusion
Why Combining GA4 and Google Search Console Matters
GA4 shows sessions, engagement rate, and conversions by landing page, but it cannot tell you which search queries brought those visitors. Google Search Console shows queries, impressions, click-through rate, and average position, but it has zero visibility into what users do after they click.
Combining both datasets lets you answer questions neither tool can answer alone:
- Which keywords bring high-converting traffic?
- Which pages rank well but underperform on-site (high impressions, low engagement)?
- Where are content opportunities with high impressions but low CTR?
- Are ranking drops actually hurting sessions and conversions, or is traffic shifting to other pages?
The natural join key between both datasets is the landing page URL. Match on that, and you unlock a complete picture of your organic search funnel from impression to conversion.
Key Takeaway
GA4 tells you what happens on your site. GSC tells you what happens before your site.
- Join key: Landing Page URL
- GA4: sessions, engagement, conversions
- GSC: queries, impressions, CTR, position
What Data Lives Where: A Quick Reference
Before blending, understand which metrics come from which source. The landing page URL is the only dimension that appears in both, making it your primary join key.
| Dimension / Metric | GA4 | GSC |
|---|---|---|
| Search queries | ✗ | ✓ |
| Impressions | ✗ | ✓ |
| CTR | ✗ | ✓ |
| Average position | ✗ | ✓ |
| Sessions | ✓ | ✗ |
| Engagement rate | ✓ | ✗ |
| Conversions / Key events | ✓ | ✗ |
| Landing page URL | ✓ | ✓ |
| Device category | ✓ | ✓ |
| Country | ✓ | ✓ |
Important caveat: URL formats differ between tools. GSC includes the full URL with protocol and trailing slash, while GA4 often stores only the path. You will need to normalize URLs in every method below.
Join Key
Landing Page URL is the only dimension shared by both GA4 and GSC.
Always normalize URLs before joining:
- Strip protocol and domain
- Remove trailing slashes
- Handle www vs non-www
Method 1: Looker Studio Data Blending
Looker Studio (formerly Data Studio) is the most popular free method because it connects natively to both GA4 and Google Search Console.
Step 1: Connect Both Data Sources
- Open Looker Studio and create a new report.
- Add a Google Analytics connector and select your GA4 property.
- Add a Search Console connector, select your site, and choose URL Impression table type.
Step 2: Create a Blended Data Source
- Go to Resource > Manage blended data > Add a blend.
- Left table (GSC): Landing Page, Query, Date + Impressions, Clicks, CTR, Position.
- Right table (GA4): Landing Page, Date + Sessions, Engaged Sessions, Conversions.
- Join key: Landing Page + Date. Use Left outer join.
Step 3: Normalize URLs
REGEXP_REPLACE(Landing Page, "https?://[^/]+", "")
Step 4: Build Your Report
Create a table chart showing: Query, Landing Page, Impressions, Clicks, CTR, Sessions, Engagement Rate, and Conversions.
Pros
- Free and native to Google ecosystem
- Visual drag-and-drop interface
- Shareable reports with auto-refresh
Cons
- URL normalization requires REGEX calculated fields
- Blended sources capped at 50K rows
- GA4 data sampling on high-cardinality dimensions
Best For
Marketing teams who want free, visual reports without code.
Key Limitation
Blended data sources are capped at 50K rows.
Method 2: Google Sheets (Manual Export or API)
Option A: Manual Export
- In GSC, go to Performance, then Export to Google Sheets.
- In GA4, go to Reports > Engagement > Landing Page, then Export.
- Use
VLOOKUPorINDEX-MATCHon the normalized URL to join.
Option B: Apps Script API Fetch
For automated refreshes, use Google Apps Script:
const gscResponse = SearchConsole.Searchanalytics.query(
'https://example.com',
{ startDate: '2026-01-01', endDate: '2026-03-31',
dimensions: ['page', 'query'], rowLimit: 25000 }
);
Pros
- Free and familiar interface
- Full control over transformations
- Can automate with Apps Script triggers
Cons
- Manual exports go stale immediately
- GSC API limited to 25K rows per request
- Sheets slows down past ~50K rows
Best For
Small sites and ad-hoc analysis where simplicity matters.
Tip
Use IMPORTRANGE to pull data from multiple sheets into one workbook.
Method 3: BigQuery for Large Sites
Set Up Exports
- GA4: Admin > BigQuery Links > enable daily export.
- GSC: Set up bulk data export to BigQuery.
The Join Query
SELECT
gsc.query, gsc.page AS landing_page,
SUM(gsc.impressions) AS impressions,
SUM(gsc.clicks) AS gsc_clicks,
ROUND(AVG(gsc.position), 1) AS avg_position,
SUM(ga4.sessions) AS sessions,
SUM(ga4.key_events) AS key_events
FROM `project.dataset.searchdata_site_impression` gsc
LEFT JOIN (
SELECT REGEXP_REPLACE(page_location, r'https?://[^/]+', '') AS page_path,
event_date,
COUNTIF(event_name = 'session_start') AS sessions,
COUNTIF(event_name IN ('purchase','generate_lead','sign_up')) AS key_events
FROM `project.dataset.events_*` GROUP BY 1, 2
) ga4 ON REGEXP_REPLACE(gsc.page, r'https?://[^/]+', '') = ga4.page_path
AND FORMAT_DATE('%Y%m%d', gsc.data_date) = ga4.event_date
WHERE gsc.data_date BETWEEN '2026-01-01' AND '2026-03-31'
GROUP BY 1, 2 ORDER BY impressions DESC
Pros
- Handles millions of rows
- Full SQL flexibility
- Scheduled queries for automation
Cons
- Storage and query costs add up
- Requires SQL knowledge
- No built-in visualization
Method 4: Python with GA4 and GSC APIs
For data teams comfortable with code, Python offers the most flexible approach. Pull data from both APIs, merge with pandas, and pipe into any visualization tool.
Prerequisites
- Google Cloud project with Search Console API and Analytics Data API enabled
- OAuth 2.0 credentials or service account
- Python 3.8+ with
google-analytics-data,google-auth, andpandas
Sample Script
import pandas as pd
from google.analytics.data_v1beta import BetaAnalyticsDataClient
from google.analytics.data_v1beta.types import RunReportRequest, DateRange, Dimension, Metric
ga4_client = BetaAnalyticsDataClient()
ga4_request = RunReportRequest(
property="properties/YOUR_PROPERTY_ID",
date_ranges=[DateRange(start_date="2026-01-01", end_date="2026-03-31")],
dimensions=[Dimension(name="landingPage")],
metrics=[Metric(name="sessions"), Metric(name="engagedSessions"), Metric(name="keyEvents")],
)
# Normalize and merge
from urllib.parse import urlparse
def to_path(url):
return urlparse(url).path.rstrip("/") or "/"
df_combined = df_gsc.merge(df_ga4, on="page_path", how="left")
Pros
- Maximum flexibility
- Free (no paid tool required)
- Easy to schedule via cron or Airflow
Cons
- Requires Python and API knowledge
- OAuth setup is non-trivial
- Must handle API quotas and rate limits
Best For
Data teams who want full control and already use Python.
Tip
Use the searchconsole Python library for a simpler GSC API wrapper.
Method 5: Third-Party Tools and Platforms
If you'd rather not build and maintain the integration yourself, several tools can help — from Semrush's Organic Traffic Insights to ETL platforms like Supermetrics and Funnel.io.
| Tool | Approach | Cost | Skill |
|---|---|---|---|
| Looker Studio | Data blending | Free | Low-Medium |
| Google Sheets | Manual export / Apps Script | Free | Medium |
| BigQuery | SQL joins | $$ | High |
| Python / API | pandas merge | Free | High |
| Semrush | Built-in GA/GSC merge | $$$ | Low |
| Nexus by Boundify | Purpose-built GA4 + GSC intersection | Free tier | None |
Our Pick
Nexus by Boundify — purpose-built to combine GA4 and GSC with zero setup, URL normalization, and keyword drilldowns.
Common Pitfalls When Combining GA4 and GSC
Watch out for these common issues that can silently corrupt your data:
- URL normalization — Trailing slashes, www vs non-www, HTTP vs HTTPS all cause mismatches. Always strip to path-only before joining.
- Date and timezone alignment — GSC uses UTC. GA4 uses your property timezone. Expect cross-day mismatches.
- GA4 data thresholds — GA4 hides rows below privacy thresholds with high-cardinality dimensions.
- GSC row limits — The GSC API returns max 25,000 rows per request. Large sites need pagination.
- Clicks ≠ sessions — GSC clicks include image and Discover. GA4 sessions require active JavaScript. Expect 10–30% variance.
- Token refresh and API changes — Google APIs evolve. OAuth tokens expire. Scripts break silently.
Pro Tip
The #1 cause of broken joins is URL normalization. Always strip protocol, domain, trailing slashes, and query parameters before merging.
What Insights Can You Unlock?
Once your data is combined, here are the most actionable patterns:
| Pattern | What It Means | Action |
|---|---|---|
| High impressions, low CTR | Pages rank but titles don't compel clicks | Rewrite title tags and meta descriptions |
| High CTR, low engagement | Content doesn't match search intent | Align page content with driving queries |
| Top queries with declining sessions | Possible ranking drop or SERP feature | Investigate SERP changes |
| Organic conversions, low impressions | High-value topic with room to grow | Create supporting content and internal links |
| Device-level mismatch | Ranking well on mobile, bouncing on desktop | Investigate UX issues on underperforming device |
Quick Win
Start with "high impressions, low CTR" pages — rewriting title tags is the fastest way to increase organic traffic without changing rankings.
Frequently Asked Questions
Frequently Asked Questions
No. GA4 does not report individual search queries. You need Google Search Console for query-level data. GA4 shows landing pages and traffic metrics, but the actual keywords users searched for are only available in GSC.
GA4's built-in Search Console report shows only landing page and query dimensions with limited metrics. A proper combined report gives you full control over both datasets, lets you add custom dimensions, and supports filtering and segmentation that the native integration cannot.
GSC counts clicks on search results (including image and Discover). GA4 counts sessions with active JavaScript. Differences in tracking methodology, bot filtering, and JavaScript execution mean you should expect 10–30% variance between the two.
GSC data finalizes 2–3 days after the date. Daily or weekly refresh captures changes quickly enough for most use cases. Automated tools like Nexus refresh on every view, so your data is always current without manual intervention.
No. Looker Studio, Google Sheets, or dedicated tools like Nexus can combine the data without writing any SQL. BigQuery is best for enterprise-scale sites with millions of rows, but most sites can use simpler methods effectively.
Still Have Questions?
Check out Nexus or reach out to our team for help.
Conclusion
Combining GA4 and Google Search Console data is one of the highest-leverage analyses you can do for organic search. Each method has its place:
- Looker Studio for quick, free, visual reports
- Google Sheets for small sites and ad-hoc analysis
- BigQuery for enterprise-scale data
- Python for maximum flexibility and automation
- Nexus by Boundify for teams that want insights without infrastructure
Whichever method you choose, the key is to start combining. The insights you'll uncover by bridging search visibility with on-site behavior are worth far more than the setup time.
Need help with your organic traffic strategy? Boundify's demand generation services can help you turn these insights into growth.
Contributors:
Emilio Garcia
Managing Partner, Boundify
Sources:
From Our Blog
Stay up to date with what is new in our industry, learn more about the upcoming products and events.

Improve Your B2B Marketing Strategy with Data Analysis Tools

How to Make Your B2B Website a Demand-Gen Engine
