How to Find Search Terms in Google Analytics 4

Google Analytics 4 can show you two types of search terms: the queries people typed into Google before clicking through to your site, and the words visitors typed into your own site’s search bar. Each one lives in a different place and requires its own setup. Here’s how to find both.

Google Search Queries That Brought Visitors to Your Site

The search terms people use on Google before landing on your website come from Google Search Console, not from GA4 itself. To see them inside your Analytics dashboard, you need to link the two tools together.

Go to Admin in GA4, find Product Links in the left column, and select Search Console Links. Follow the prompts to connect your Search Console property. You need to be verified as a property owner in Search Console and have Editor access in GA4 to complete the link.

Once the connection is active, the reports won’t appear automatically in your navigation. You need to publish them. Go to Reports, then click Library (the folder icon at the bottom of the left sidebar). Find the Search Console collection and enable it. After that, a Search Console section appears in your Reports menu with a Queries report ready to use.

The Queries report shows the dimension “Organic Google search query,” which is the actual phrase someone typed into Google that triggered your listing. Alongside each query you’ll see four metrics: organic search clicks, impressions, click-through rate, and average position. Together, these tell you not just which terms drive traffic but how visible you are for each one and how often people actually click.

You can combine organic search query data with a handful of other dimensions, specifically country and device category. If you want more flexibility, open Explorations and build a free-form report using those same dimensions and metrics. This lets you filter, sort, and segment the data in ways the standard report doesn’t support.

Search Terms Visitors Type on Your Website

If your site has its own search bar, GA4 can capture what people type into it. This is called internal site search tracking, and it’s handled through Enhanced Measurement, which is on by default for most new data streams.

To confirm it’s working, go to Admin, then Data Streams, and click on your web stream. Open Enhanced Measurement and make sure the Site Search toggle is turned on. GA4 detects searches by watching for common URL query parameters like q, s, or search. If your site uses a different parameter (for example, term or searchtext), click Show Advanced Settings and add it to the list.

Every time someone searches your site, GA4 fires a “view_search_results” event and records the search term. To see the data, go to Reports, then Engagement, then Events, and click on “view_search_results.” From there you can add a secondary dimension of “search_term” to see exactly what visitors looked for. Alternatively, build an Exploration with the “search_term” dimension and the “event_count” metric to get a clean, sortable list of everything people searched for on your site.

Why Some Search Data Shows as “(not set)”

You’ll likely notice “(not set)” appearing in your reports. This is a placeholder GA4 uses when it doesn’t have data for a particular dimension. The causes vary depending on which report you’re looking at.

For organic search queries, the data depends entirely on the Search Console link being active. If the link is broken or wasn’t set up, every row shows “(not set)” for the query dimension. Traffic from unlinked or improperly tagged sources also defaults to “(not set).”

For internal site search, “(not set)” often appears when the search term parameter isn’t being passed in the URL, or when your site uses JavaScript-based search that doesn’t update the URL at all. In that case, you’ll need Google Tag Manager to fire a custom event that captures the search term from the page rather than from the URL.

A few other common causes worth knowing: sessions where the session_start event is missing will show “(not set)” for session-level dimensions, custom parameters can take up to 24 hours to populate after you first register them, and consent mode configurations that block certain events can cause gaps in the data.

Building a Custom Search Terms Report

The standard reports give you a quick look, but Explorations let you dig deeper. Here’s a practical setup for each type of search data.

For organic queries, open Explorations and create a new free-form report. Add “Organic Google search query” as your row dimension. Pull in “Organic Google search clicks,” “Organic Google search impressions,” “Organic Google search click through rate,” and “Organic Google search average position” as your metrics. Sort by impressions descending to see which queries generate the most visibility, or sort by clicks to see what actually drives traffic. Adding “Device category” as a second dimension lets you compare how the same queries perform on mobile versus desktop.

For internal site search, create another free-form Exploration with “search_term” as the row dimension and “event_count” as the metric. This gives you a ranked list of everything visitors searched for on your site. You can layer on “Landing page” as a secondary dimension to see which pages people were on when they decided to search, a useful signal that the page wasn’t answering their question.

Both of these Explorations can be saved, shared with teammates, and revisited anytime. They update with fresh data automatically, so once you build them you have a reusable dashboard for monitoring search behavior.

Quick Checklist

  • Organic search queries: Link Search Console under Admin > Product Links, then publish the Search Console collection in Reports > Library.
  • Internal site search: Confirm Enhanced Measurement is on under Admin > Data Streams, and verify your URL query parameters are listed in the Site Search settings.
  • Custom analysis: Use Explorations for sortable, filterable reports with exactly the dimensions and metrics you need.
  • “(not set)” values: Check that your integrations are active, parameters are correct, and events are firing as expected.