Blog
Smart SEO Blog

GA4 SEO Reporting: Track Organic Performance Accurately

This article was written, optimized, and published automatically by Smart SEO — the content and search platform. Get started →
GA4 SEO Reporting: Track Organic Performance Accurately
In this article

Accurate GA4 SEO reporting comes down to three fixes: a custom channel group that isolates organic traffic, a linked Search Console property, and a short list of key events tied to real business outcomes. Get those right and most of the confusing numbers in your organic reports disappear. I've audited dozens of GA4 properties for SEO teams, and the same handful of setup mistakes shows up almost every time. Below is the configuration I use, the explorations I build first, and the data-quality traps that quietly distort organic numbers.

Why GA4's Default Reports Mislead SEO Teams

Out of the box, GA4 gives you a channel called Organic Search. It looks like everything an SEO needs. It isn't.

The default channel group puts a session into Organic Search when the medium is "organic" or the source matches Google's internal list of search engines. That catches Google, Bing, DuckDuckGo, Yahoo and others. The problem is everything it lumps together or misses entirely.

  • Google Discover and Google News traffic often lands in Organic Search or Referral depending on how the visit is tagged, so editorial sites see inflated or deflated "search" numbers.
  • AI assistant referrals from chatgpt.com, perplexity.ai or gemini.google.com usually fall into Referral, hiding a growing slice of discovery traffic.
  • Misused UTM tags, such as a newsletter link tagged utm_medium=organic, pollute the channel with non-search visits.
  • Payment gateways and login domains that aren't excluded can steal the session and wipe out the organic attribution for a conversion.

There's a second trap. GA4 offers both Session default channel group and First user default channel group. The Traffic acquisition report uses the session version. User acquisition uses first-user. Mix them in the same slide deck and your stakeholders will see two different "organic" figures for the same month.

My rule: report sessions and engagement at the session scope, and report new-customer acquisition at the first-user scope. Label which one you used. Every time.

None of this means GA4 is broken. It means the defaults were built for a generalist marketer, not for someone whose job depends on separating Bing clicks from Discover impressions.

How Do You Set Up a Custom Channel Group for SEO?

Go to Admin, then Data display, then Channel groups, and copy the default group. Rename it, then edit the Organic Search rule and add new channels above it for AI assistants, Google Discover and other sources you want separated. Rule order matters because GA4 assigns each session to the first matching channel.

Custom channel groups apply retroactively, which is the best thing about them. Build one today and it reclassifies historical data in standard reports and explorations. Standard properties allow two custom groups, so don't waste them on experiments.

Here's the structure I recommend for most SEO-led sites:

  • AI Assistants: Session source matches regex chatgpt|perplexity|gemini|copilot|claude. Place this near the top.
  • Google Discover: Session source contains "discover" or matches the patterns you see in your own source/medium report.
  • Organic Search - Google: Source exactly matches "google" and medium exactly matches "organic".
  • Organic Search - Other: the default organic logic for Bing, DuckDuckGo, Yandex and the rest.

Splitting Google from other engines sounds fussy. It pays off the first time a Bing update hits and your blended organic line barely moves, masking a 30% drop in one engine.

One gotcha nobody mentions: before writing regex, open Explore, pull Session source and Session medium for the last 90 days, and export the list. You'll find odd variants like "chatgpt.com" and "chat.openai.com" that a lazy rule misses. Check what's actually in your data, then write the rule.

Once saved, set the new group as the primary channel group in the same Admin screen so it appears in the Traffic acquisition report by default.

Linking Search Console and Publishing the Reports

GA4 knows what users did after they arrived. Search Console knows what they searched before clicking. Linking the two is the only way to see queries alongside on-site behaviour without exporting spreadsheets.

The steps are quick:

  • In GA4, open Admin, then Product links, then Search Console links.
  • Choose the Search Console property you verified. A domain property is better than a URL-prefix one because it covers every subdomain and protocol.
  • Select the web data stream and submit.

Here's where people get stuck. After linking, the reports don't appear in the left navigation. You have to open Library, find the Search Console collection, and click Publish. Until you do, the data exists but nobody can see it.

The published collection gives you two reports: Queries and Google organic search traffic. The second one is the useful hybrid. It pairs landing pages with Search Console impressions, clicks and position, and GA4 engagement and key events.

Know the limits before you promise anything to a client. Search Console dimensions only combine with a few GA4 dimensions, mainly landing page, country and device. You cannot slice queries by GA4 audiences or custom events. Data also arrives with the usual Search Console delay of roughly two days.

For deeper query work, I still go straight to Search Console or a dedicated platform. If you're comparing options, this breakdown of how to choose an SEO analytics platform that scales covers when GA4 alone stops being enough.

Events and Key Events That Actually Matter for SEO

Sessions tell you traffic arrived. Key events tell you whether it was worth anything. Google renamed "conversions" to key events in 2024, and the term "conversion" now refers mainly to events imported into Google Ads.

Enhanced measurement handles a lot automatically: page views, scrolls at 90%, outbound clicks, site search, video engagement and file downloads. Turn it on in the data stream settings and check each toggle. Site search is the one I see disabled most often, and it's gold for content gap analysis.

For organic reporting, I mark these as key events on most B2B and content sites:

  • generate_lead for demo or contact form submissions
  • sign_up for free trials or newsletter subscriptions
  • file_download filtered to gated assets like whitepapers
  • purchase for ecommerce, with the value parameter populated

Resist the urge to mark scroll or page_view as key events. It inflates key event rates and makes organic look heroic in a way finance will eventually question.

A practical tip: create a custom event for engaged blog reads using GA4's Create event feature. Trigger it when page_location contains "/blog/" and the scroll event fires. Now you can compare deep reading across organic landing pages without touching Google Tag Manager.

Also register any custom parameters you send, such as content_author or content_category, as custom dimensions under Admin, then Custom definitions. Unregistered parameters are collected but invisible in reports. Registration isn't retroactive either, so do it early.

Building Explorations for Organic Analysis

Standard reports answer "how much." Explorations answer "why." They're where serious GA4 SEO reporting happens, because you can combine dimensions the standard reports won't let you mix.

I build three explorations for every new property.

1. Landing Page Performance (Free Form)

Rows: Landing page + query string. Columns: none. Values: Sessions, Engaged sessions, Engagement rate, Key events, Total revenue. Add a filter for Session default channel group (or your custom group) equal to Organic Search - Google. Sort by sessions and look for pages with high traffic and an engagement rate well below your site average. Those are your rewrite candidates.

2. Organic Path Exploration

Start from a session_start event, filtered to organic sessions, then view the next pages users visit. This shows whether blog readers ever reach product or pricing pages. On one SaaS site I worked with, the top organic article sent almost nobody onward because the only call to action sat below a 3,000-word wall. One inline link fixed it.

3. Organic Funnel

Build steps for landing page view, key product page view, form start and generate_lead. Segment by device. Mobile funnels usually reveal the friction desktop data hides.

Two warnings. First, explorations respect your data retention setting, and the default is only two months. Second, standard properties start sampling explorations once a query exceeds 10 million events. Watch the shield icon in the top right. A yellow one means you're looking at an estimate, so shorten the date range or move the analysis into BigQuery.

Share explorations with your team instead of rebuilding them. They're private by default, which trips up agencies constantly.

Fixing the Data-Quality Issues That Distort Organic Numbers

A beautiful report built on dirty data is worse than no report. These are the settings I check before trusting any organic figure.

  • Data retention: Admin, then Data collection and modification, then Data retention. Switch event data retention to 14 months on standard properties. This only affects explorations, but year-over-year organic comparisons are impossible without it.
  • Reporting identity: If Google signals is enabled, GA4 may apply data thresholds and hide rows with small user counts. Switching reporting identity to device-based removes most thresholding. Long-tail landing pages are exactly the rows that vanish otherwise.
  • Unwanted referrals: In the data stream's tag settings, add payment processors like PayPal or Stripe checkout domains. Otherwise a returning user from the gateway starts a new referral session and organic loses the purchase.
  • Cross-domain measurement: If your blog lives on a separate domain from your app, configure both so the session carries across.
  • Internal traffic: Define your office IP ranges and activate the filter. Leave it in testing mode first to confirm it works.

Watch for a large "(not set)" landing page row too. It typically means sessions started without a page_view, often from consent banners delaying the tag or from single-page applications firing events before the first page view. That's a tracking problem, not an SEO problem, and it's worth raising with whoever owns your technical SEO and site implementation.

Consent Mode deserves a mention. With Consent Mode v2 in advanced mode, GA4 models some behaviour from users who decline cookies. Expect organic sessions to look different from pre-consent baselines, and annotate the change date in your reports.

Why Does GA4 Organic Traffic Differ From Search Console Clicks?

GA4 counts sessions that loaded your tag, while Search Console counts clicks on Google results, whether or not the tag ever fired. Consent refusals, ad blockers, slow-loading pages, bot filtering and differing time zones all widen the gap. A difference of 10% to 30% is common and doesn't signal broken tracking.

The two tools also measure different things on purpose. Search Console reports Google only, including clicks that bounced before your page rendered. GA4 includes Bing and other engines unless you split them, and it starts a new session after 30 minutes of inactivity, so one click can become two sessions.

So which number should you report? Use Search Console for visibility metrics: impressions, clicks, average position and click-through rate. Use GA4 for what happened afterwards: engagement, key events and revenue. Don't try to reconcile them to the decimal. You'll lose a week and gain nothing.

The gap matters more as search results change. AI Overviews can earn impressions and citations that produce few clicks, so Search Console visibility may rise while GA4 sessions stay flat. If that's happening to you, read up on how to earn citations in Google's AI Overviews and track those pages separately.

What should worry you? A sudden change in the ratio. If the gap jumps from 15% to 50% overnight, check for a deployment that broke the tag.

Turning Configuration Into a Monthly Reporting Routine

Setup is a one-time job. Reporting is forever, so make it repeatable.

I run organic reporting on a simple monthly cadence:

  • Week 1: Pull the Landing Page Performance exploration and the Google organic search traffic report. Flag pages with falling clicks or engagement.
  • Week 2: Review the organic funnel for drop-off changes by device.
  • Week 3: Check the AI Assistants channel growth and the pages it lands on.
  • Week 4: Present a one-page summary with three wins, three problems and the next actions.

For stakeholder dashboards, connect GA4 and Search Console to Looker Studio. It's free and handles blended views well enough for most teams. Keep an eye on GA4 API quotas, though. Heavy dashboards with many charts can hit token limits and show errors during busy hours. Fewer charts per page helps.

If you're spending a full day every month assembling the same slides, it's time to automate. This piece on SEO reporting automation covers how teams cut that work down to minutes, and this checklist on what to look for in an SEO reporting dashboard helps you choose what belongs on screen.

Larger sites should enable the free BigQuery export too. Standard properties can export up to one million events per day, and raw data sidesteps sampling and thresholds entirely.

Get Your Organic Data Right This Week

You don't need a month-long project. Copy the default channel group and split organic sources. Link Search Console and publish the collection. Mark three or four meaningful key events, raise data retention to 14 months, and build the landing page exploration. That's an afternoon of work. After it, your organic numbers will hold up when a CFO asks hard questions, and you'll spend reporting time on decisions instead of explanations. Start with the channel group, since it fixes history retroactively.

Frequently Asked Questions

Can GA4 show which keywords drive organic conversions?

Not directly. Google withholds most organic keyword data from analytics tools, so GA4 shows almost no query-level detail natively. Linking Search Console adds queries, but they only connect to landing pages, country and device. The practical workaround is to tie conversions to landing pages in GA4, then check which queries drive each page in Search Console.

Do custom channel groups in GA4 change historical data?

Yes. Custom channel groups apply retroactively across standard reports and explorations, so a group you create today reclassifies past sessions too. That's unlike custom dimensions, which only collect data from the moment you register them. Standard properties allow two custom channel groups, so plan your rules carefully and test them against exported source and medium data first.

How should I track ChatGPT and Perplexity traffic in GA4?

Create a custom channel called AI Assistants using a regex on session source, such as chatgpt|perplexity|gemini|copilot|claude, and place it above Referral in the rule order. Check your actual source list first, because variants like chat.openai.com exist. Some AI app traffic arrives without a referrer and lands in Direct, so treat the figure as a minimum.

Why is my GA4 organic landing page report showing (not set)?

A (not set) landing page usually means a session began without a page_view event. Common causes include consent banners delaying the tag, single-page apps firing events before the first page view, or sessions resuming after the 30-minute timeout. Check your tag firing order in Tag Assistant and make sure page_view fires first on every page load.