TL;DR
- Google announced on 18 October 2011 that signed-in searches would move to HTTPS, so sites stopped receiving the organic query, and later extended encryption to all searches.
- Linking Search Console to GA4 adds the Google Organic Search Queries and Google Organic Search Traffic reports, which stay hidden until the collection is published in Library.
- Search Console data in GA4 covers 16 months at most, arrives about 48 hours after collection, and excludes anonymized queries from the query rows.
- The Search Console interface shows up to 1,000 rows per table; Google points to the bulk data export to BigQuery for the most complete query list.
The keyword not provided Google Analytics problem exists because Google encrypts its search pages, so when someone clicks an organic result the destination site learns the visit came from Google but not the query that was typed. Analytics cannot report a keyword it never receives, which is why Universal Analytics filled its organic keyword report with "(not provided)" and why GA4 has no usable organic keyword list of its own. The honest fix is not a hidden setting or a recovery trick. It is to link Google Search Console to GA4, read queries there, and do the rest of the analysis by landing page.
Why Google Analytics shows (not provided)
The change started with a Google announcement on 18 October 2011 titled "Making search more secure". Google said signed-in users would be redirected to the HTTPS version of Google Search, which encrypts both the search query and the results page. In the same post Google spelled out the consequence for site owners: websites reached from organic listings would still know the visitor came from Google, but would not receive information about each individual query. Google pointed site owners to an aggregated list of their top 1,000 queries for each of the past 30 days in what was then Google Webmaster Tools, now Search Console.
Google later extended encrypted search beyond signed-in users, so today effectively all Google organic visits arrive without the query attached. Modern browsers also default to sending only the referring origin (for example https://www.google.com/) on cross-site navigation, not the full URL. Put together, there is no query string for any analytics tool to read.
Universal Analytics showed this as the keyword value "(not provided)" in its organic keyword report. At first the label covered part of the traffic; once encryption applied to everyone, it covered almost all Google organic visits. Universal Analytics standard properties stopped processing data on 1 July 2023, so for most sites that report is now history. The underlying cause did not go away when GA4 replaced it.
What (not provided) is not
It is not a tracking error, a missing tag or a broken filter. Nothing in your GA setup, Tag Manager container or consent banner will bring the keyword back, because the data never left Google's servers. Any tool that claims to "unlock" (not provided) keywords inside Analytics is either estimating or pulling from Search Console.
Can GA4 show organic keywords at all?
Not from its own collected data. GA4 does have term dimensions, such as session manual term, but they fill from UTM parameters (utm_term) and similar campaign tagging, which Google organic clicks do not carry. So for Google organic traffic those fields hold no real search query. Google Ads is the one exception people confuse with this: paid clicks have their own search terms report inside Google Ads, which says nothing about organic search.
The only official way to see Google organic queries alongside GA4 is the Search Console integration, described below. It shows Search Console's data inside GA4; it does not attach queries to individual GA4 sessions.
How to link Search Console to GA4 to see queries
According to Google's Analytics Help page on the Search Console integration, the link adds two reports to your property:
- Google Organic Search Queries. Search queries with Search Console metrics (clicks, impressions, click-through rate and average position). You can break this down by Search Console dimensions only, not by Analytics dimensions.
- Google Organic Search Traffic. Landing pages with both Search Console and Analytics metrics, so you can see impressions and clicks next to engagement and key events for the same page. You can break it down by country and device.
The steps and requirements:
- Make sure you have the Editor role on the GA4 property and are a verified owner of the Search Console property. Verification can be done during linking.
- In GA4 Admin, open Product links, choose Search Console links and click Link.
- Pick the Search Console property, then the GA4 web data stream that collects the same pages.
- Submit the link, then go to Library in the reports navigation and publish the Search Console collection. Google notes the collection is unpublished by default, so the reports stay hidden until you do this.
Limits worth knowing before you rely on it:
- One web data stream can link to one Search Console property, and one Search Console property can link to one web data stream.
- Links cannot be edited. To change one, delete it and create a new link.
- The compatible dimensions for Search Console metrics are landing page, device and country, and the reports do not support time-series charts.
- Search Console keeps 16 months of data, so the reports show 16 months at most, and data appears about 48 hours after Search Console collects it.
Why the query numbers still won't add up
Even after linking, the query table will not account for every organic click. Google's Search Central blog explains that anonymized queries, ones not issued by more than a few dozen users over a two-to-three month period, are left out of query rows to protect privacy. They still count toward the chart totals, which is why the sum of the rows is lower than the total. The Search Console interface also shows at most 1,000 rows per table, so long-tail queries can drop out of the table while still counted in the chart. For the most complete query list Google points to the bulk data export to BigQuery.
Two more sources of mismatch between Search Console and GA4: Search Console counts clicks on Google results, while GA4 counts sessions that loaded your tag, and a click does not always become a recorded session (consent choices, blocked scripts, or a visitor leaving before the page loads). Expect the numbers to be close in trend, not identical.
What (not set) and (other) mean
These two labels often appear next to organic data and get mistaken for the same problem. The table below separates the three, using Google's own definitions.
| Label | What it means | What to do |
|---|---|---|
| (not provided) | Google withheld the organic search query because search is encrypted | Read queries in Search Console or the linked GA4 Search Console reports |
| (not set) | A placeholder GA4 uses when it received no value for a dimension, for example a session with no page_view event shows landing page as (not set) | Check tagging: page_view firing, empty parameters, unlinked Google Ads accounts |
| (other) | A report hit its row limit, so less common values were grouped into one row; Google treats dimensions with more than 500 values as high-cardinality | Use standard reports, avoid high-cardinality custom dimensions, or use BigQuery for full detail |
Only the first is about keywords. A (not set) landing page in an organic report usually points to a tagging problem worth fixing, because it means you cannot connect that traffic to a page at all.
How to find not provided keywords: the honest alternatives
There is no way to restore the exact query for each GA4 session. What you can do is combine page-level data from both tools, which answers most of the questions people actually ask about keywords.
1. Landing-page analysis in GA4
Every organic session still records its landing page. Filter GA4 traffic to the Organic Search channel and break it down by landing page, then look at engaged sessions, key events and revenue per page. Each page targets a known set of topics, so the landing page is the closest reliable stand-in for intent. A product page that brings in organic sessions with good conversion is telling you the queries behind it are commercial, even without seeing them.
2. Join pages to queries in Search Console
Open the Search Console Performance report, filter by a single page, and switch to the Queries tab. That gives the queries that drove impressions and clicks to that page. Pair it with the GA4 landing-page view of the same URL and you have both sides: which queries reach the page and what visitors do once they land. The Google Organic Search Traffic report in GA4 does part of this join for you at page level.
3. Use the bulk export for scale
For larger sites, the Search Console bulk data export to BigQuery gives the most complete query and page data Google offers, without the 1,000-row interface limit. If GA4 also exports to BigQuery, the two can be joined on landing page and date for custom reporting. This is still a page-level join, not a session-level one.
4. Treat estimates as estimates
Third-party SEO tools estimate which keywords a page ranks for using their own rank tracking and search-volume models. They are useful for spotting opportunities and competitor coverage, but they are modelled numbers, not your traffic. Keep them separate from first-party Search Console data in reports so nobody mistakes one for the other.
5. Use on-site search for intent
If your site has an internal search box, GA4 can record the terms people type into it through enhanced measurement's site search setting. Those are your visitors' own words after they arrive, which is a different question from what they searched on Google, but often a useful one for content and navigation.
Common mistakes when chasing organic keywords
- Linking the wrong data stream. If the Search Console property covers a different domain variant or subdomain from the GA4 web stream, the landing-page report will not line up. Make sure both collect the same pages.
- Forgetting to publish the collection. The link can be live while the reports stay invisible because the Search Console collection was never published in Library.
- Expecting session-level keywords. The query report cannot be broken down by GA4 dimensions such as source, audience or event, so a "keyword to conversion" report per session is not possible from this integration.
- Comparing totals without allowing for anonymized queries. The query rows will always sum to less than the chart total.
- Reading the 16-month window as a full archive. Search Console data older than 16 months is gone unless you exported it. If year-on-year history matters, set up the BigQuery bulk export early.
What this means for Thai businesses
Thai sites face the same encryption limit as everyone else, and a few local details make the alternatives more important:
- Thai and English queries mix. When people search the same need in Thai, English or a blend of both, the Search Console query report shows each version as a separate row, so grouping them by landing page is usually more useful than reading the query list line by line.
- Language versions need clean page paths. If Thai and English pages sit under clear paths such as /th/, the landing-page view in GA4 and Search Console can be filtered per language. Mixed or parameter-based language URLs make that split harder.
- Small sites hit anonymization more. A smaller Thai site gets fewer searches per query, so a larger share of its long-tail queries can fall under the anonymized threshold. Page-level analysis carries more weight in that case.
- Agency and client reporting. Monthly SEO reports that once listed "top keywords from Analytics" should now state the source clearly: Search Console for queries, GA4 for on-site behavior, and any third-party estimates labelled as estimates.
Frequently asked questions about (not provided)
Why does Google Analytics show (not provided) for organic keywords?
Google Analytics shows (not provided) because Google encrypts search, so organic visits arrive without the query and Analytics has nothing to record. Google announced the change for signed-in users on 18 October 2011 and later extended encryption to all searches.
Is there a way to unlock not provided keywords in GA4?
No, there is no setting that restores the query for individual sessions. The official route is to link Search Console to GA4 and use its Google Organic Search Queries and Google Organic Search Traffic reports, which show Search Console data at the query and landing-page level.
Why don't Search Console clicks match GA4 organic sessions?
They measure different things: Search Console counts clicks on Google results, while GA4 counts sessions where your tag loaded. Consent choices, blocked scripts and early exits all create gaps, and anonymized queries are excluded from the Search Console query rows.
How far back can I see query data?
Search Console keeps 16 months of performance data, so the linked GA4 reports also show 16 months at most. To keep older history, set up the Search Console bulk data export to BigQuery before the data ages out.
Does (not set) mean the same as (not provided)?
No, (not set) is a placeholder GA4 uses when it received no value for a dimension, such as a session without a page_view event. It usually signals a tagging issue on your side, while (not provided) is Google withholding the query.
Getting usable keyword reporting
The keyword column in Analytics is not coming back, and that is fine once reporting is built around what is available: Search Console for queries, GA4 for behavior, and landing pages as the bridge between them. If your GA4 property is not linked yet, or the reports do not line up, Relevant Audience's GA4 setup and migration service covers the Search Console link and tagging checks. For keyword strategy and reporting see SEO services in Thailand, and for a full review of how your site performs in search, an SEO audit is the place to start.







