“Search queries” means two completely different things in Google Analytics 4, and the answer depends on which one you want. If you mean what people typed into your own site’s search box, GA4 collects it natively through enhanced measurement. If you mean what people typed into Google before clicking your result, GA4 cannot see it at all unless you link Search Console, and even then the data lives in a separate set of reports that are hidden by default.
search_term parameter as a custom dimension and read it in an exploration. For Google organic keywords, link Search Console under Admin, Product links, then publish the Search Console collection from the Library. GA4 alone will never show Google search terms.The reason this trips people up is historical. Universal Analytics had a Site Search section under Behavior and an Organic Keyword dimension under Acquisition, and the second one had already been reduced to a wall of “(not provided)” years before GA4 arrived. Both paths are different now. Here is how each one actually works.
Part one: what people search for on your site
GA4 handles internal site search through enhanced measurement. When it detects a search results page, it sends a view_search_results event carrying a search_term parameter.
Turn the listener on
Go to Admin, and under Data collection and modification click Data streams. Select your web stream. Enhanced measurement appears near the top. Click the gear icon and confirm that Site search is switched on.
By default the listener looks for any of five query parameters in the URL: q, s, search, query and keyword. WordPress uses s, so a stock WordPress install works with no changes. Many ecommerce platforms and custom builds do not. Expand Show advanced settings under the Site search toggle and add your own parameter names, separated by commas.
Check your own search results URL before you assume. Run a search on your site and look at the address bar:
https://example.com/?s=ga4+events -> parameter is s works by default
https://example.com/search?q=ga4+events -> parameter is q works by default
https://example.com/find?term=ga4+events -> parameter is term must be added
https://example.com/search/ga4-events/ -> no parameter at all, needs a tagWhen your search has no query parameter
Sites that rewrite search into a clean path, and single page apps that never change the URL, defeat the automatic listener entirely. In that case you send the event yourself. In Google Tag Manager, create a GA4 Event tag named view_search_results with a search_term parameter pulled from a data layer variable or a DOM element, and trigger it on the search results view. With gtag.js it is a single call:
gtag('event', 'view_search_results', {
search_term: 'ga4 events',
search_results_count: 12
});Switch off the enhanced measurement Site search toggle if you do this, or you will collect the event twice on any page that happens to carry a matching parameter.
Register search_term so you can actually see it
This is the step almost everyone misses. GA4 collects search_term, but it will not appear as a dimension anywhere until you register it.
Go to Admin, under Data display click Custom definitions, then Create custom dimension. Set the dimension name to something like Site search term, scope to Event, and event parameter to search_term. Save.
Read the terms in an exploration
Click Explore in the left navigation and pick Blank. Import your Site search term dimension plus Page path and screen class, and import the metrics Event count, Sessions and Key events. Drag the search term into Rows and the metrics into Values. Add a filter on Event name exactly matching view_search_results.
Sort by event count and you have your list. The value is rarely in the top ten, which is usually your brand name and your two most obvious products. It is in the long list underneath, where people ask for things you do not sell, or use words you never put on the page. Those rows are a content plan. If you are building that plan out, our guide to creating a content calendar is a sensible next stop.
Part two: what people typed into Google
GA4 has no independent access to Google search terms. The tag runs on your page after the click, and Google strips the query from the referrer for signed in and secure searches. That is the whole story behind “(not provided)”, and it has been true since Google moved search to HTTPS by default.
The only supported way to see organic queries alongside Analytics data is to link Search Console.
Link Search Console to GA4
You need the Editor role in the Analytics property and verified ownership of the Search Console property. Then, in GA4, go to Admin, under Product links click Search Console links, then Link. Choose your Search Console property, select the web data stream to associate it with, review and submit.
One web data stream can link to only one Search Console property. If you run separate Search Console properties for http, https, www and bare domain, link the domain property or the one that actually holds your data.
Publish the reports, because they are hidden
This is the part that generates the most confused support threads. After linking, nothing appears. The Search Console collection is unpublished by default.
In the left navigation click Reports, then Library at the bottom. Find the Search Console collection card, click the three dot menu on it, and choose Publish. The collection now appears in your Reports navigation.
You get two reports. Google organic search queries lists the query with Search Console metrics: clicks, impressions, click through rate and average position. Google organic search traffic lists landing pages and combines Search Console metrics with Analytics metrics such as engaged sessions and key events.
| What you want | Where it lives | Setup needed | History available |
|---|---|---|---|
| Terms typed into your site search | GA4 explorations, search_term | Enhanced measurement plus custom dimension | From registration date onward |
| Google organic queries | GA4 Search Console collection | Product link plus publish the collection | Up to 16 months |
| Query to conversion path | Not available anywhere | Impossible by design | None |
| Paid search terms | Google Ads search terms report | Google Ads account | Full account history |
| Query level clicks and position | Search Console Performance report | Verified property | Up to 16 months |
Why Search Console still beats the GA4 version
The GA4 Search Console reports are convenient, but they are a thin slice. The full Search Console Performance report gives you comparison mode, regex filters on queries and pages, country and device breakdowns, and the Search Appearance dimension. None of that is in GA4.
Use GA4 when you want queries beside engagement metrics on the same screen. Use Search Console when you want to work on the queries themselves. In practice most people link the two, glance at the GA4 collection once a month, and do the real analysis in Search Console.
Search Console also caps at 1,000 rows per query in the interface, which is where the Search Console API or a third party tool earns its keep on larger sites. If you are auditing indexing at the same time, our explainer on the Search Console sitemap report covers the other half of that workflow.
Troubleshooting
Site search shows no data at all. Confirm the toggle is on, then confirm your search URL actually carries one of the configured parameters. Run a search, copy the URL, and compare character by character. A parameter of search_query will not match a configured value of query.
search_term is collected but the dimension is empty. Either you registered it after the data you are looking at, or you typed the parameter name with different casing. Parameter names are case sensitive. Check the raw event in DebugView.
The Search Console reports are missing after linking. You did not publish the collection. Go to Reports, Library, find the Search Console card, and publish it. Nothing else is wrong.
GA4 and Search Console numbers disagree. They always will. Search Console counts clicks on results; GA4 counts sessions that its tag observed. Consent banners, ad blockers, prerendering and bounced loads all sit between the two. A gap of ten to thirty percent is normal.
Site search terms contain personal information. People type email addresses and order numbers into search boxes. Add a redaction rule, or strip the parameter before it reaches GA4, because Google’s terms prohibit sending data that identifies an individual.
Frequently asked questions
Can GA4 show me the Google keywords that sent me traffic?
Not on its own. GA4 sees only what the referrer allows, and Google strips the query from secure searches, which is why “(not provided)” exists. Linking Search Console to your GA4 property surfaces query data in a separate report collection, but the two datasets are never joined at session level.
What replaced the Site Search report from Universal Analytics?
Nothing replaced it as a standard report. GA4 collects the same data as a view_search_results event with a search_term parameter, and you read it by registering a custom dimension and building a free form exploration, or by adding the dimension to a custom report in the Library.
Why does my site search parameter not get picked up?
Enhanced measurement only watches five parameters by default: q, s, search, query and keyword. Anything else has to be added under the Site search advanced settings, and sites that use a clean URL path with no parameter need a manual tag instead.
How far back does the Search Console data in GA4 go?
Sixteen months, matching Search Console’s own retention window. GA4’s standard event data retention is shorter and configurable, which is another reason the two sets of numbers behave differently in long date ranges.
Do I need Google Tag Manager for site search tracking?
Usually not. If your search results page carries a query parameter, enhanced measurement handles it with a toggle. You only need a tag manager when the URL does not change on search, or when your platform routes search through a clean path with no parameter at all.
Can I see search terms in real time?
The Realtime report shows event counts, so you can confirm view_search_results is firing, but reading the terms themselves reliably means DebugView for testing and an exploration for analysis. Standard surfaces can lag by up to 24 hours.
The bottom line
Decide which question you are asking before you open GA4. On site search is yours to collect, cheap to enable, and consistently undervalued: it is the only place your visitors tell you in their own words what they came for. Turn the listener on, register the dimension today rather than next quarter, and save an exploration you can reopen monthly.
Google organic queries are not yours to collect. Link Search Console, publish the collection so the reports actually appear, and accept that GA4 will show you queries and sessions side by side but never stitched together. For the wider setup, our guide to adding Google Analytics to WordPress covers getting the tag in place correctly in the first instance.
