goodClicks, badClicks, and lastLongestClick: the three click signals the Google leak confirmed.

20/04/2026

For most of the last decade, debates about whether Google uses click data to rank websites ran on inference. SEOs pointed to ranking experiments, patents, and public Google denials, and nobody had the source documents. That changed in May 2024, when 2,596 internal Google documents from the Content API Warehouse leaked publicly, and again through the 2023 DOJ antitrust trial, where Pandu Nayak, a Google VP of Search, testified under oath about a click-based re-ranking system called NavBoost. If you want a wider lens on what NavBoost is and how the system works, that overview covers the 18-year history and ranking mechanism in plain English.

Those two sources together ended the debate. Google does use click behavior to rank pages. And the leaked documents named the exact signals NavBoost ingests: goodClicks, badClicks, lastLongestClick, unsquashedClicks, and a handful of related metrics that shape how your site gets evaluated every time a user interacts with it in the SERP.

This post focuses on the three click signals that matter most for how you think about user engagement in search. goodClicks and badClicks are the two sides of every click, and lastLongestClick is the tiebreaker that quietly decides which result “won” the query. Understanding what each one actually measures, and how they compound, changes how you approach titles, meta descriptions, landing page content, and the rest of the engagement signals you have any control over.

Key takeaways

  • The leak confirmed NavBoost uses three primary click signals. goodClicks represent engaged clicks that don’t return to the SERP quickly, badClicks represent clicks that bounce back fast, and lastLongestClick identifies the result that held the user’s attention longest in a search session. All three are stored per query, per document, per locale.
  • lastLongestClick is the most influential of the three. When a user works through several results for the same query, the one they stayed on longest before ending the session gets a strong positive signal. This is the modern implementation of what SEOs used to call dwell time, and it’s measured at the session level, not the individual page view.
  • These signals are stored over a 13-month rolling window. Pandu Nayak’s DOJ testimony confirmed NavBoost retains roughly 13 months of click data per query. That means today’s engagement shapes rankings for more than a year, and it also means bad click patterns take that long to fully wash out of the system.

What the 2024 Google leak actually revealed

The leak surfaced through Erfan Azimi, who shared the documents with Rand Fishkin and Mike King in May 2024. The files came from Google’s internal Content API Warehouse and described the attributes of 14,014 modules used across Google Search. They weren’t user manuals or strategy documents. They were the technical schema that tells Google’s internal systems what data each module handles, which fields exist, and what those fields mean.

The same leak also surfaced separate Chrome-sourced fields like chromeInTotal and chromeTrans, suggesting that browser-level behavior is captured in a parallel pipeline alongside the SERP click signals NavBoost reads.

Among those modules were several tied directly to NavBoost, the click-based re-ranking system Google had previously refused to confirm by name in public communications. The most telling module was QualityNavboostCrapsCrapsData, which stored the click and impression attributes for a given query-document pair. Inside that module, the documented fields included:

  • goodClicks – clicks classified as positive engagement
  • badClicks – clicks classified as negative engagement
  • lastLongestClicks – the longest click in a search session
  • unsquashedClicks – raw click counts before normalization
  • unsquashedImpressions – raw impression counts before normalization
  • unicornClicks – clicks from users Google classifies as high-trust evaluators

The term “squashing” refers to a normalization step Google applies to prevent manipulation. Raw click and impression counts get dampened before they feed into ranking calculations, which is why simply generating more clicks isn’t the same as generating more signal. The system is designed to weight quality of engagement far above raw volume, and the squashing step is what enforces that.

The leak also made clear that these click signals aren’t stored globally. They’re stored per query, per document, per country/language bucket. That’s why the same page can perform well for one query and poorly for a closely related one, and why your engagement signals have to be earned on each query-page combination independently. There’s no overall “site quality” click score that rescues a page with weak signals on its target query.

goodClicks: what Google counts as positive engagement

A goodClick isn’t just any click on your result. It’s a click that demonstrates, through subsequent user behavior, that your page satisfied the query. The exact thresholds Google uses aren’t published, but the documented behavior of the signal makes the logic clear: if a user clicks your result and doesn’t return to the SERP to click a different result, or returns only after spending meaningful time on your page, that click is classified as positive.

The practical implication is that your page’s job doesn’t end at the click. The click just starts the evaluation window. What happens in the next few seconds, and across the user’s remaining search session, determines whether that click ends up strengthening or weakening your position for the query.

A few patterns consistently produce goodClicks:

  • The page answers the query fast. Users who land on a page and find what they came for in the first screen rarely return to search. The answer doesn’t have to be exhaustive. It has to be visible and credible within the first few seconds.
  • The page matches what the title and meta promised. Titles that overpromise generate a click but often produce a bounce back, which destroys the goodClick pattern. Alignment between the SERP snippet and the landing page is one of the cleanest ways to earn goodClick classifications.
  • The page gives the user a reason to keep reading. Internal navigation, follow-up content, and logical next steps all extend the session. Internal linking shapes engagement signals directly because it converts a single-page visit into a multi-page session, which Google interprets as deeper satisfaction.
  • The page loads fast enough not to break the intent. Page experience feeds into engagement signals, not because Core Web Vitals directly boost rankings, but because a slow page breaks the user’s attention before the goodClick pattern can form.

The strongest goodClick signal comes from what Google’s documentation calls a satisfied session end. A user clicks your result, spends time on the page, and then ends their search session entirely without going back to try another result. That’s the cleanest possible positive pattern, because it means your page resolved the query so completely the user stopped searching.

badClicks: the fast-return pattern that undoes positive signals

A badClick is the inverse of a goodClick. It’s a click on your result followed by a quick return to the SERP, typically with a re-click on a different result. The user has signaled that your page didn’t deliver what they expected, and they’re continuing their search. Google stores this as a negative data point against your page for that specific query.

The behavior SEOs used to describe loosely as “bounce back to search” is almost exactly what NavBoost is measuring here, though with more precision than the bounce rate metric most analytics tools track. Google Analytics bounce rate isn’t a ranking factor, and John Mueller and Gary Illyes have said so repeatedly. But the act of returning to a SERP and clicking a different result, sometimes called pogo-sticking, is a distinct behavioral pattern that NavBoost explicitly records as badClicks.

The distinction matters. Google Analytics bounce rate is a per-session metric computed by your analytics tool, with no direct line into Google’s ranking systems. badClicks are a per-query, per-document behavioral pattern computed from Google’s own SERP data. The first is a third-party metric. The second is a ranking input.

Abstract 3D render of blue and white cube clusters representing classified click data

Several things cause badClick patterns:

  • Intent mismatch between query and page. If you rank for a query your page doesn’t genuinely address, every click on that listing is structurally likely to become a badClick. The fix isn’t optimization. It’s either producing a page that actually fits the query or accepting that the listing shouldn’t rank.
  • Headline or meta description overreach. Titles and meta descriptions that exaggerate what the page delivers produce the same pattern. The click rate looks healthy. The return-to-SERP rate is silently destroying your NavBoost signal.
  • Slow page load during high-intent queries. Users with active intent have low patience. A 5-second load on a transactional query regularly produces a return to SERP before the page even renders.
  • Layout shifts, interstitials, or popups in the first few seconds. Anything that breaks the user’s path to the content they came for can produce a return to SERP. This is the engagement-signal version of why page experience matters, and it’s measured at the behavioral level, not the Lighthouse score level.

The important insight is that badClicks accumulate per query. A page that has a strong goodClick pattern for one query can have a weak one for a related query, and both signals coexist in NavBoost simultaneously. This is why pages with weak user signals often show up as asymmetric performers in Search Console: high position for some queries, low for others, even though the page hasn’t changed.

lastLongestClick: the tiebreaker that decides which result won

Of the three signals, lastLongestClick is the one most SEOs don’t fully appreciate, and it’s arguably the most important. The documented behavior goes like this: when a user runs a search and clicks through multiple results in the same session, the result they stayed on longest before ending their session gets flagged as the lastLongestClick for that query. It’s essentially Google marking the winner of a multi-result evaluation.

This is the modern, measurable version of what SEOs used to call dwell time. Dwell time as a concept was always directionally useful but mechanically vague. lastLongestClick is the precise implementation: session-level, query-specific, and stored as a boolean attribute against your document for that query. Either your page was the lastLongestClick for that session or it wasn’t.

The reason this signal matters more than goodClicks in isolation is that it captures comparative performance. A goodClick tells Google your page was acceptable. A lastLongestClick tells Google your page was the best option among the ones the user actually sampled. That’s a much stronger ranking signal, because it reflects direct head-to-head performance against competing results in the same SERP.

Abstract illustration of flowing data paths converging into a processing node

Several consequences follow from how the signal is structured:

  • Ranking higher helps, but the click order doesn’t decide the winner. A user can click the #1, #3, and #5 results, and the #5 result can still win the lastLongestClick if it held the user’s attention longest. This is why pages can rise from position 5 or 6 when their engagement signals are genuinely stronger than the higher-ranked results.
  • Depth matters more than first-screen satisfaction. Pages that give a strong first-screen answer earn goodClicks, but pages that give a strong first-screen answer and keep the user engaged beyond that point earn lastLongestClicks. Freshness and content depth both feed into this signal because they extend the time users spend per session.
  • The signal is evaluated against the session, not the clock. “Longest” doesn’t mean longest in absolute terms. It means longest among the results the user sampled in that specific search session. A 2-minute session on your page can win the lastLongestClick if the other results in the session got 30 seconds each.
  • Ending the session counts. If the user doesn’t return to SERP after your page, you win by default for any session where yours was the final click. This overlaps with the satisfied session end pattern that produces strong goodClicks, but lastLongestClick tracks it as a separate attribute with its own weight.

The practical takeaway is that lastLongestClick is where the meaningful ranking movement tends to come from, especially for competitive queries. Earning goodClicks keeps you in the game. Earning lastLongestClicks is how pages overtake higher-ranked competitors on signal strength rather than on link authority or raw content volume.

How the three signals compound into NavBoost scores

NavBoost doesn’t treat these signals in isolation. It stores them as attributes on the same query-document record, and the combined pattern is what drives the re-ranking adjustment. A page with strong goodClicks, weak badClicks, and frequent lastLongestClick wins for that query produces a clean positive NavBoost signature. A page with mixed signals produces a weaker signature even if the goodClick count looks healthy in isolation.

The compounding matters because NavBoost was explicitly described by Pandu Nayak as a re-ranking system, not a primary ranking input. The initial ranking is produced by the traditional information retrieval stack. NavBoost then looks at how users have actually behaved on those results and re-orders them based on the observed signals. A page that outranks its link profile on traditional scoring can still lose position if its NavBoost signature is weak. A page that under-ranks on traditional scoring can climb several positions if its NavBoost signature is consistently strong.

That re-ranking happens continuously, over the full 13-month window Nayak described in testimony. Click behavior from 12 months ago still contributes, which means long-standing pages with strong historical engagement have a structural advantage, and recently published pages need to generate a genuinely positive pattern from their first impressions to compete.

There’s also a compounding effect across queries. A page that earns strong lastLongestClicks on a primary query starts to rank higher on related queries where its traditional signals might be weaker, because NavBoost’s cross-query confidence tends to flow toward pages with strong primary-query patterns. This is part of why brand entity signals and click behavior compound: confidence on one query becomes leverage on adjacent ones.

Case study: the user signal shape that moved a commerce site from page 2 to position 4

A commerce site in a mid-competition category came in with a cluster of category pages stuck at positions 11-14 for their primary commercial queries. Traditional optimization had plateaued. Links were healthy, schema was clean, titles and meta descriptions had been rewritten multiple times. Nothing was moving.

The diagnostic revealed the pattern. For the top five target queries, Search Console showed 1,800-2,400 monthly impressions per page with CTRs averaging 1.1%, far below what positions 11-14 should produce. That told us NavBoost was seeing the pages as weak attractors even at their current rank. The signals weren’t just soft. They were actively suppressing the pages.

Over a 4-month sprint, the user engagement pattern was reshaped across the category pages: first-screen answers were strengthened, internal navigation was reorganized to extend sessions, and the specific queries each page targeted were rewritten to genuinely match user intent. The goal was to shift the NavBoost signature from mixed to consistently positive across the query cluster.

By month three, the lead page moved from position 12 to position 6, with CTR on the primary query climbing to 3.8%. By month four, it had stabilized at position 4, with a secondary page in the cluster also moving from position 14 to position 7. Monthly organic traffic to the category cluster grew by 210%, and the movement held through the next two Google updates.

The reason the pattern held is that the underlying signals had genuinely shifted. The pages weren’t getting false clicks. They were earning real goodClicks and increasingly winning lastLongestClick for the target queries, which NavBoost kept reinforcing month after month.

What this means for how you think about engagement on your pages

The most useful reframe from understanding these three signals is to stop treating clicks as the finish line. The click starts a measurement window, and what happens inside that window is what NavBoost records. Pages that treat the click as the victory tend to produce strong short-term CTR and weak long-term rankings, because the signals underneath are telling Google the opposite of what the click-through suggests.

A few practical shifts follow from this:

  • Alignment between SERP snippet and landing page is a ranking concern, not just a conversion concern. Every pixel of mismatch between what your title promised and what your page delivers increases the probability of a badClick. If your meta description is doing conversion-focused work at the expense of accuracy, you’re likely losing more ranking signal than you’re gaining in click volume.
  • First-screen content is a NavBoost decision, not a CRO decision. What the user sees before they scroll determines whether the session continues. If your category page’s first screen is filler before the actual products, or your article’s first screen is filler before the actual answer, you’re structurally producing badClicks on impatient users.
  • Internal linking is an engagement signal mechanism. Multi-page sessions outperform single-page sessions on lastLongestClick almost automatically, because each additional pageview extends the session and delays the satisfied session end. Site architecture affects this at scale, and it’s one of the cleanest levers you have for shifting signal patterns.
  • Thin or filler content under-performs even when it ranks. A page that ranks but produces weak lastLongestClicks will gradually lose position to pages that rank lower but produce stronger ones. This is the NavBoost mechanism that quietly correct for content that’s thin relative to user expectations.
  • Query targeting has to match reality. If you’re ranking for a query your page doesn’t actually serve well, the cheapest fix is almost always to shift the page’s content to genuinely serve that query, rather than to keep optimizing titles and meta descriptions against a structural mismatch.

The deeper takeaway is that NavBoost’s three click signals reward exactly the kind of page you’d want users to land on: one that matches the query, answers fast, holds attention, and concludes the search. Pages that do this generate the signals NavBoost needs to push them up. Pages that don’t generate the opposite signals and get pushed down, regardless of how well-optimized the traditional signals look. This is why user-signal work produces durable ranking movement in ways that title-tag optimization and link-building no longer can, and it’s why the safety question around user signal work has a clear answer when it’s done on real user behavior rather than artificial click patterns: Google is already measuring exactly these patterns, on the exact queries you care about, with the exact attribution model NavBoost uses.

Frequently asked questions

Q: Does Google confirm these three click signals publicly?

A: Not in public statements, but they’re confirmed through two independent sources. The first is Pandu Nayak’s testimony during the 2023 DOJ antitrust trial, where he described NavBoost and its reliance on click data over a 13-month window. The second is the May 2024 Content API Warehouse leak, where internal Google documents named goodClicks, badClicks, and lastLongestClicks as documented fields in NavBoost-related modules. Google has not publicly contested the authenticity of the leaked documents.

Q: If I generate a high CTR artificially, does that produce goodClicks?

A: No. The squashing step in NavBoost explicitly dampens raw click volume before it feeds into ranking calculations, and clicks only get classified as goodClicks when subsequent behavior confirms positive engagement. A click without a matching session pattern doesn’t move the signal. This is also why Google has been able to safely ignore most forms of manipulated click traffic for years without affecting legitimate rankings, similar to how bad backlink patterns get discounted rather than penalized.

Q: How fast do these signals affect rankings?

A: Partial effects appear within weeks, but full signal integration takes several months because NavBoost’s confidence on any query-document pair builds up as the sample size grows. The 13-month retention window also means it takes time for old weak signals to wash out when you shift a page’s engagement pattern. In practice, consistent user-signal improvement over a 4-month window is enough to see meaningful ranking movement on most competitive queries, and the full picture stabilizes over 8-12 months.

Have you tried User Signal Amplification?

Takes 15 seconds. No email required.

© 2026 - All rights reserved!