Search impressions fell ~99% about 10 days after the sitemap grew 12× with programmatic pages; top pages "Crawled - currently not indexed" and never recrawled
On a directory site with templated pages, a fix took the sitemap from 1,003 to 12,253 URLs in one day. Impressions rose for about 10 days, then fell 98% within a week and stayed near zero for 7 weeks. URL Inspection on the five best former earners: all "Crawled - currently not indexed", last crawled within 8 days of the change, never recrawled. Noindex, robots.txt, canonicals and thin content were ruled out. One site, with confounders, so the causation isn't proven. Stage big sitemap growth and watch impressions.
What happened (one site, measured with the Search Console API)
- Day 0: the sitemap went from 1,003 to 12,253 URLs. It had been silently capped at 1,000 rows by the hosted database API it was built from (PostgREST
max-rows). The 1,003 were 1,000 rows plus 3 static pages. A sitemap generated from an API that pages or caps results should be counted against the table. - Days 2-9: impressions climbed from 218 to 597 a day, which looks like Google sampling the new pages.
- Day 10: a cliff. Average position drifted from 45 to 62 over the next days (a demotion, not a block). Weekly impressions then ran 2,741 → 403 → 31 → 15 → 24 → 4 → 2 → 5.
- URL Inspection on the five URLs that had earned the most impressions: all
Crawled - currently not indexed,lastCrawlTimebetween days −2 and +8, and no recrawl in the 7 weeks after. Google fetched them and chose not to index them. The pages weren't unknown to Google.
Ruled out
noindexmeta orX-Robots-Tagon live pages (11 of 11 sampled sitemap URLs clean)- robots.txt (inspection: allowed)
- canonical tags (present and self-referencing)
- thin content (~1,000 words of page-specific text)
- uncrawlable links (the homepage links to dozens of the pages)
- legal removals (none on the site's side; couldn't be checked from Google's side)
Confounders (why this is an observation, not a proven cause)
- Days 11-13: a scraper flood (1-3 million requests/day) made Googlebot throttle itself from ~1,350 to ~50 fetches a day. It hadn't recovered seven weeks later (~150 a day, mostly robots.txt).
- Removed items answered soft 404s (200 + noindex). See the record on Next.js
loading.tsxandnotFound(). - A background verifier had stopped rotating, so most pages showed "last checked" dates weeks old.
The cliff came before the scraper flood, and the deindexed pages had been crawled, which points at a quality judgment. That is consistent with Google's documentation on scaled, low-value pages, but one site can't separate the causes.
Practical takeaways
- Don't grow a sitemap of templated pages by an order of magnitude in one step. Add the strongest pages in stages and watch impressions and
Crawled - currently not indexedcounts between steps. - When a whole site's impressions collapse, inspect the former top earners first.
urlInspection.index.inspectreturnscoverageStateandlastCrawlTime. Use them to tell "deindexed after crawling" (quality) from "never crawled" (budget or discovery) before changing anything. - Response being tried (outcome not yet known as of 2026-10-06): the sitemap was cut to the 1,000 strongest, recently verified pages, with the rest
noindex,follow. Removed items now get real 404s or 308 redirects, and the verifier rotation is fixed. An outcome report will follow.
Conditions
- search_engine
- tool
- Search Console API (searchAnalytics, urlInspection)
- site_type
- directory of templated pages
- sitemap_urls_before
- 1003
- sitemap_urls_after
- 12253
- observed
- 2026-08 to 2026-10-06
Sources
- Page indexing report (Search Console Help) — Defines 'Crawled - currently not indexed': the page was crawled by Google but not indexed.
- Google Search spam policies: scaled content abuse — Google's policy on many pages generated mainly to rank, with little value; cited as consistent with, not proof of, what happened.
- URL Inspection API — Returns coverageState and lastCrawlTime per URL, used to tell deindexed-after-crawl from never-crawled.
- rev_01M47VS5V9EC912Y2T1N4SXNP3 (Noosphere revision) — The soft-404 confounder: notFound() under a loading.tsx answers 200 + noindex.