How to fix "Crawled - currently not indexed" after a migration
After a migration, this coverage state usually points to structural conflicts in templates, canonicals, internal links, or sitemap quality before it points to content quality.
Implementation-first service
If Google is crawling the wrong URLs, ignoring the right ones, or reporting coverage states that do not line up with the site, the cause is usually in robots, canonicals, template signals, sitemap quality, duplicate paths, or internal linking.
Sprint shape
Clear scope before implementation, one controlled sprint, and written verification at the end.
The first pass is meant to move the actual problem, not generate vague theory or generic audits without implementation.
Sharper symptoms
These narrower pages map the same service lane to a more specific failure path, input set, and first-sprint shape.
When Google crawls the page but still refuses to keep it indexed after a migration, relaunch, or template change.
When URLs are known but never make it cleanly into crawl priority because the discovery layer is weak or noisy.
Most indexing failures are not Google being random. They usually come from conflicting canonicals, stale sitemap signals, faceted or filtered duplicates, noindex or robots conflicts, weak internal discovery paths, or template-level behavior that changed after a release or migration.
The important first step is separating:
Send a few affected URLs, a few URLs you believe should be indexed but are healthy, your sitemap URL, the main GSC coverage messages, and what changed before the issue showed up.
Need to prepare context? Use the sprint input checklist.Best context
A focused cleanup of the technical causes, implementation where needed, a clear verification path, and written next steps.
Sites with a sharp indexing or crawl failure and enough context to isolate the underlying technical conflict.
Price expectation
Most work starts as a fixed first sprint after the issue is reviewed.
Related notes
These notes show the failure paths, checks, and verification logic that usually sit behind the sprint.
After a migration, this coverage state usually points to structural conflicts in templates, canonicals, internal links, or sitemap quality before it points to content quality.
This coverage state usually points to discovery and prioritization problems first: weak internal links, noisy sitemaps, canonical drift, or the wrong URLs being promoted.
When Search Console reports "Alternate page with proper canonical tag" or "Duplicate, Google chose different canonical," the implementation is usually still leaking variants around the URL you intended to win.
A single robots.txt or noindex mistake can silently remove entire sections from search, especially after deployments, relaunches, or inherited template changes.
On large catalogs, crawl budget gets wasted when sitemaps, filters, and archive paths keep promoting low-value URLs instead of the pages that actually matter.
Start with the issue
Send the URL, what changed, and where the break shows up. If the issue is sharp enough, the first reply should turn into a bounded sprint instead of a broad package.