Web Analytics for SEO
Measure organic traffic and behavior with web analytics.
Where Search Console shows how you appear in Google, web analytics (such as Google Analytics 4) shows what visitors do on your site.
What to track for SEO
- Organic sessions - traffic from search engines over time.
- Engagement - engaged sessions, time on page, pages per session.
- Conversions - sign-ups, sales, leads from organic traffic.
- Landing pages - which pages attract and convert organic visitors.
Connect your tools
Link Search Console to Analytics to combine query data with on-site behavior for a fuller picture.
Example
# Segment organic search traffic in GA4
Reports -> Acquisition -> Traffic acquisition
Filter: Session default channel group = "Organic Search"
Watch: sessions, engagement rate, conversionsWhen to use it
- An SEO team connects GA4 to BigQuery to analyse which landing pages from organic search have the highest conversion rate, informing where to invest content resources.
- A content manager uses the Acquisition > Traffic Acquisition report in GA4 to compare organic session quality (engagement rate) versus paid and direct channels.
- A developer sets up a custom GA4 event to track PDF download conversions from blog posts, attributing SEO content directly to a bottom-funnel lead action.
More examples
GA4 organic traffic segment
Filtering the GA4 Data API by organic search channel and grouping by landing page shows which SEO pages generate the most sessions and conversions.
# GA4 Data API: sessions from organic search in the last 30 days
python3 - << 'EOF'
# Requires: google-analytics-data python package
from google.analytics.data_v1beta import BetaAnalyticsDataClient
from google.analytics.data_v1beta.types import RunReportRequest, Dimension, Metric, FilterExpression, Filter
request = RunReportRequest(
property="properties/YOUR_GA4_PROPERTY_ID",
date_ranges=[{"start_date": "30daysAgo", "end_date": "today"}],
dimensions=[Dimension(name="landingPagePlusQueryString")],
metrics=[Metric(name="sessions"), Metric(name="conversions")],
dimension_filter=FilterExpression(
filter=Filter(
field_name="sessionDefaultChannelGroup",
string_filter=Filter.StringFilter(value="Organic Search")
)
),
)
print("Request built — run against GA4 Data API client.run_report(request)")
EOFTrack blog PDF download conversion
Firing a GA4 file_download event on PDF clicks attributes bottom-funnel lead conversions back to the organic blog post, making SEO ROI measurable.
<a
href="/downloads/marathon-training-plan.pdf"
id="pdf-download"
data-file="marathon-training-plan"
download>
Download 16-Week Marathon Plan (PDF)
</a>
<script>
document.getElementById('pdf-download').addEventListener('click', () => {
gtag('event', 'file_download', {
file_name: 'marathon-training-plan.pdf',
file_extension: 'pdf',
content_type: 'training_guide',
// GA4 automatically captures page_location for source attribution
});
});
</script>BigQuery SEO landing page analysis
A BigQuery query joining organic sessions with conversion events ranks SEO landing pages by actual revenue contribution, not just traffic volume.
# GA4 BigQuery export: top organic landing pages by engaged sessions
python3 - << 'EOF'
SQL = """
SELECT
(SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'page_location') AS landing_page,
COUNTIF(session_engaged = '1') AS engaged_sessions,
COUNTIF(event_name = 'purchase') AS conversions,
SAFE_DIVIDE(COUNTIF(event_name = 'purchase'), COUNT(DISTINCT session_id)) AS cvr
FROM `project.dataset.events_*`,
UNNEST(event_params) AS ep
WHERE _TABLE_SUFFIX BETWEEN '20240501' AND '20240531'
AND traffic_source.medium = 'organic'
GROUP BY 1
HAVING engaged_sessions > 100
ORDER BY conversions DESC
LIMIT 20
"""
print(SQL)
EOF
Discussion