Search Console is the best source for one job: what Google showed, and what people clicked. Teams stretch it into a complete SEO report because it is free, official, and sitting there. That stretch is where the bad decisions start.
It cannot tell you if the landing page loaded. It cannot tell you if the form submitted. It cannot tell you what happened 17 months ago. It cannot show you more than 1,000 rows in the interface you actually open. It cannot answer an agent. If that is your whole stack, you are flying on a SERP ledger and calling it analytics.
The other failure mode is the reverse: GA4 or a cookieless tool with no Search Console warehouse. You see sessions. You do not see impressions, position, or the queries Google is willing to name. You optimise a page that never had demand.
What Search Console will not measure
| Question | Search Console | On-site analytics |
|---|---|---|
| How often did we appear? | Impressions | No |
| Did someone click the result? | Clicks | Indirectly, as a landing |
| Where did we sit? | Position (already impression-weighted) | No |
| Did the page render? | No | Pageview |
| Did they come back the same day? | No | Daily visitor hash / sessions |
| Did they hit a goal? | No | Goals and events |
| Which referrer, UTM, device in your UI? | Device / country on the SERP, not your site | Your site |
CTR in Search Console is clicks ÷ impressions. It is not a quality score for the page. A 2% CTR at position 1.4 on a transactional query is a snippet problem. A 2% CTR at position 18 is the SERP working as designed. Averaging those CTRs across queries is how a report says "CTR is fine" while the money query is dead.
Position is the same trap. The number on a row is already an impressions-weighted mean for that slice. Average it across a month of days and you treat a Tuesday with 10 impressions like a Monday with 100,000. SiteLine re-weights. Spreadsheets usually do not.
The product limits people forget they are looking at
Google's interface is a look:
- ~16 months, then each day is gone. Year-over-year in December needs last December. Google may already have dropped it. See the 16-month limit and the free Search Console data expiry calculator.
- 1,000 rows in the UI and the CSV you download. The long tail of queries is not in that file. See the 1,000-row limit.
- Fresh rows before Google finalizes them, and then revisions. Tools that re-fetch the last 7 days exist because first publish is not final.
- Anonymised queries. Rare queries are withheld. Query totals run below site totals. That is Google, not your import.
- No agent API in the product UI. If your workflow is "ask Claude what happened," Search Console itself will not answer.
SiteLine's import exists because of those limits, not because GSC is a bad dataset. webmasters.readonly, 16-month backfill, keep while subscribed, 25,000 rows per day per report, site totals stored separately so nobody sums the query table and publishes it as traffic.
What "enough" actually looks like
Enough is two products that share a date picker and a URL:
- Search Console site totals for the headline (Web search type unless you have a reason).
- Page and query breakdowns for diagnosis, labelled as "shown rows," never as the site.
- Cookieless on-site analytics for the same URLs: pageviews, visitors, events, goals.
- A rule that GSC is ~two days behind analytics, so you do not panic on Wednesday morning.
That pairing is the point of Search Console plus on-site analytics and combining GSC with cookieless analytics. SiteLine's tracker is cookieless — daily visitor hash, no analytics cookie — so you are not waiting on a consent banner to learn whether the click landed. Install: /docs/script. Privacy: /docs/privacy.
MCP sits on top so an agent can query both ledgers with the same caveats a careful analyst uses: data_through for lag, notes that breakdowns do not sum to totals, position never averaged. MCP for Search Console.
The report you should stop sending
A monthly SEO PDF that is only GSC clicks, a blended "average position," and a CTR copied from the UI's date range is not a report. It hides:
- Pages that kept clicks and lost conversions
- Queries Google anonymised (your query sum looks like a decline)
- Search types you accidentally mixed (Discover has no position; a null is not a zero)
- The 1,000-row export that quietly dropped the tail
Agencies that have to send something anyway should read agency Search Console reporting. The short version: site totals for headlines, impression-weighted position, CTR from sums, query tables footnoted, on-site goals next to the same URLs.
Unlimited sites, three plans ($4.99 / $19.99 / $99.99), event quotas not property quotas. /docs/billing. /register.
Search Console is necessary. It is not sufficient. On-site analytics is necessary. It is not sufficient. The work is the join, and the discipline not to average the join away.
FAQ
If I only have time for one tool, which one?
If you ship pages for Google, start with Search Console — you cannot diagnose a snippet from sessions. Then add on-site the same week, or you will celebrate clicks that bounce. SiteLine is the pair, not a pick-one.
Why can't Search Console show conversions?
It never sees your site. A click is recorded on Google's results page. Everything after the HTTP request to you is your problem, which is why cookieless analytics sits beside GSC in SiteLine rather than inside Google's UI.
Is Discover traffic "Search Console enough"?
Discover is a Search Console search type with clicks and impressions and no queries and no position. It is enough to know volume. It is not enough to know why. Pair it with on-site landing pages; do not invent a query list Google did not send.