Reporting diagnostic · SEO

Keep the unknown clicks in the report

A mismatch can be expected. The analytical mistake is turning that mismatch into a confident growth story.

  1. The chart can count clicks whose queries you cannot seeA query filter removes anonymized queries from the chart as well as keeping their text out of the table.
  2. Non-brand share needs an explicit denominatorThe share among disclosed queries is a different measure from the share of every Search click.
  3. Keep the unexplained remainder separateCheck scope and export limits before treating the difference as privacy filtering.

You export the Queries table from Search Console, sum the clicks and get a smaller number than the chart. Then you split queries into brand and non-brand. Those two filtered totals still do not reconstruct the original number. Neither observation, by itself, proves that your export is broken.

Google can report that a click happened without revealing the search phrase behind it. That distinction becomes consequential when a dashboard turns the visible phrases into percentages of all organic traffic. A seemingly precise non-brand growth story can depend on clicks whose classification is actually unknown.

A query filter changes which clicks remain visible

Google’s explanation of privacy filtering distinguishes anonymized queries from disclosed queries. The query strings are withheld, but their clicks contribute to an unfiltered chart. Applying a query filter excludes those anonymized queries from the chart total too. A filter and its logical opposite therefore do not necessarily recover the original total.

Think of “contains our brand” and “does not contain our brand” as operations on the query data that can be disclosed. The second operation is not a way to recover every anonymous search that was unrelated to your business name. Nor does a broad regular expression turn withheld phrases into visible rows.

This is a narrower issue than the difference between live rank tracking and Search Console performance data. Here, the question is whether the population behind a percentage survived the filtering step.

Non-brand share can rise without another known non-brand click

The following is a synthetic example, not a customer dataset. Assume two comparable periods, each with 100 total clicks. Known queries have been classified correctly into two mutually exclusive groups. Ignore extraction and aggregation differences for this demonstration.

Period A

  • All clicks: 100
  • Known brand clicks: 20
  • Known non-brand clicks: 40
  • Unclassified remainder: 40
  • Known-query coverage: 60%
  • Non-brand share of known clicks: 66.7%

Period B

  • All clicks: 100
  • Known brand clicks: 10
  • Known non-brand clicks: 40
  • Unclassified remainder: 50
  • Known-query coverage: 50%
  • Non-brand share of known clicks: 80%

Period A produces 40 ÷ (20 + 40) = 66.7%. Period B produces 40 ÷ (10 + 40) = 80%. The second percentage is mathematically correct, but only as the non-brand share of known-query clicks. It does not establish that non-brand clicks increased across the entire property.

There are still 40 known non-brand clicks in each period. What changed is the size and composition of the classified subset. The unknown group could contain brand searches, non-brand searches or both. Its changing size does not tell us which.

Calculate what the unknown group could change

Let T be aligned total clicks, B known brand clicks and N known non-brand clicks. The residual is U = T − B − N. If these groups form a valid partition, the lowest possible non-brand share is N ÷ T. The highest is (N + U) ÷ T. These are logical limits, not a confidence interval or a prediction.

In Period A, non-brand share of all clicks could lie anywhere from 40% to 80%. In Period B, it could lie from 40% to 90%. The wider second range means less knowledge about the mix, not a better result.

Three assignments demonstrate the problem. If every unknown click was branded, true non-brand clicks stayed at 40 in both periods. If every unknown click was non-brand, they rose from 80 to 90. If all unknown clicks in A were non-brand but all in B were branded, they fell from 80 to 40. The same displayed rows permit all three stories.

The bounds also depend on your brand definition. A misspelling, product name or retailer query may need a deliberate classification rule. Calling a visible query “non-brand” because a narrow regex missed it introduces a separate error that the interval cannot repair.

Check the mismatch before calling it anonymization

Google’s discrepancy guide lists several causes, including aggregation changes and row limits. Use the following sequence before applying the arithmetic to a real export.

  1. Freeze the scope. Use the same property, dates, Search type, country, device and other filters. Start with a settled date window and preserve the original unfiltered total.
  2. Preserve the unit. Do not subtract a sum of URL-level rows from a property-level total without verifying compatible aggregation. Use clicks throughout this calculation, not a mixture of clicks and impressions.
  3. Finish the available extraction. Check whether you saved only the interface’s first 1,000 rows or stopped an API export early. Record the export method and limits.
  4. Check the classification. Classify each disclosed query once. Do not add overlapping regex results as though they were disjoint groups.
  5. Name the remainder honestly. Use “unclassified” or “unreconciled” until you have ruled out mismatched scope and extraction defects. If the residual is negative, stop: these totals cannot support this partition.

Our separate discussion of property and page impression aggregation addresses a different reason totals can diverge. The point is not to merge the two diagnoses: establish the counting unit before investigating query disclosure.

More API rows do not reveal withheld query text

The Search Analytics API reference explicitly says the API does not guarantee every data row. Pagination retrieves more of the available result set; an exhausted response is not evidence that every underlying query has been disclosed. A script that produces a clean CSV can still produce an incomplete basis for brand attribution.

Bulk export to BigQuery has a useful distinction. Its documented schema includes an is_anonymized_query flag and click metrics, while withholding the query text for flagged rows. That can preserve an explicit anonymous metric group in the export. It does not let a brand-matching expression recover those phrases. Aggregate the exported metrics before comparing them; the documentation warns that repeated keys can occur.

Write the conclusion the data can support

For the synthetic example, an honest reporting sentence would be:

Known non-brand clicks stayed at 40. Their share of disclosed-query clicks increased from 66.7% to 80%, while disclosed-query coverage fell from 60% to 50%. The available data does not establish a change in total non-brand clicks.

That wording keeps a useful observation without inventing its cause. When you compare channels, apply the same restraint to definitions: a Pinterest Pin click and a website visit are not interchangeable either. A report earns trust by keeping the unobserved part visible.

Questions about missing Search Console query clicks

Does a mismatch prove that clicks were lost?

No. Clicks can appear in the unfiltered total without their query strings appearing in the table. Scope differences and export limits also need checking.

Can I call total clicks minus known brand clicks non-brand?

Not as a measured classification. That calculation assigns all unclassified clicks to non-brand; under the stated partition assumptions it is an upper bound.

Will exporting to BigQuery identify the hidden searches?

No. The bulk-export schema can retain metrics marked as anonymized, but their query text is withheld. A larger export is not permission to infer the missing phrases.

Primary Google documentation

Search Console documentation checked 7 September 2026