GA4 Report

Search Terms
Content Gap Detector

Pull every search term from your GA4 site search data and automatically match each one against your existing content. The gaps are your content roadmap.

🔍Search Terms Report
Last 30 days
847unique search terms·61%matched·18%partial·21% gaps ↗
Show:
All searches✅ Matched⚠️ Partial🔴 No match (gaps)
Search termSearchesUsersMatch
pricing plans142118✅ Match
how to set up UTMs8974⚠️ Partial
custom dimensions limit6452🔴 Gap
ecommerce tracking setup4740🔴 Gap
bounce rate vs engagement3833✅ Match

Your search bar is a direct line to unmet needs

When someone searches on your site, they're telling you exactly what they want and couldn't find. Most teams never look at this data. The ones that do build better content, faster.

This report surfaces every search term, shows where on your site the search happened, and uses fuzzy matching to check whether a relevant page already exists — without you having to check manually.

🔍

Content gap detection

Automatically flag search terms with no matching page in your site.

📍

Where they searched

See which page the user was on before they turned to search — intent in context.

🧠

Fuzzy page matching

Fuse.js matches each term against your full page index. No exact match needed.

📊

Volume + reach

Sort by total searches or unique users to prioritise the highest-demand gaps.

Three match states. One clear action.

Every search term is classified automatically. The gap list is your prioritised content brief.

✅ Match

Content exists

A relevant page was found with high confidence. The user's intent is likely being served — validate with engagement data.

⚠️ Partial

Close but not perfect

A loosely matching page was found. The content may need to be updated, expanded, or better signposted.

🔴 Gap

No content found

Nothing on your site matches this search term. This is a direct content brief — real demand with zero supply.

What you need

  • GA4 property with Enhanced Measurement enabled
  • Site search tracking turned on in Enhanced Measurement
  • view_search_results events in your data stream
  • Google account with read access to the property

Don't have site search tracking yet? Set it up in GA4 Enhanced Measurement →

How the matching works

When the report loads, it fetches all pages that have had at least one session in the last 90 days — this becomes the index that every search term is matched against.

Each search term is run through Fuse.js fuzzy search against the combined page title and path. The result score determines the match state.

Matching runs entirely in the browser — no round-trips to the server when you change filters. The page index is fetched once and cached for the session.

threshold: 0.4
score ≤ 0.20 → Match
score 0.21–0.40 → Partial
no result → Gap

Start with the gaps

Connect your GA4 property and see exactly what your visitors are searching for — and what content you're missing.

Run the Search Terms Report →

Free · Read-only GA4 access · Nothing stored