A Stockholm software company usually has no idea how many URLs it publishes. The marketing site has forty. The documentation has four thousand, most of them generated. Nobody decided this, and nobody is measuring which of them a crawler has ever seen.

Indexing is the least glamorous part of search work and the part that most often decides the outcome. A page that is not in the index cannot rank at any position, no matter how well it is written. Yet indexing is treated as a background process that presumably takes care of itself — right up to the week someone notices that the new pricing page has been live for two months and returns nothing on a site: query.

Inventory · The URLs you did not author

Your estate publishes more pages than your team writes

Count what a mid-sized product company actually serves. A marketing site of thirty to sixty hand-written pages. A documentation site where every API method, every configuration key and every release note is a URL, frequently duplicated across two or three versioned trees. A changelog. A careers section where each open role has its own address, often on a subdomain belonging to the applicant-tracking vendor. A status page with a permanent URL per historical incident. An investor or press section.

1,000
URLs per day, per account
10,000
URLs per bulk batch
3
levels of sitemap nesting
1,000
sitemaps per job

The hand-written pages are the ones that get discussed, and they are a rounding error in the total. The generated ones dominate, they change without a person touching them, and they are produced by a build pipeline that has no opinion about search at all. Versioned documentation is the sharpest example: publish three supported versions and you have tripled the address space with near-identical text, and unless the canonical tags are right you have asked a crawler to work out which of three copies matters.

First task, before any tooling. Get a list of every hostname the company answers on. Marketing, docs, careers, status, preview environments, the old domain from before the rename. The list is nearly always longer than expected, and two entries on it usually turn out to be serving content nobody knew was public.
States · Four things people call indexed

Discovery, crawling, indexing, serving

Most confusion in this area comes from one word doing four jobs. A URL passes through distinct states, and it can stop at any of them, permanently, without producing an error anywhere you would normally look.

StateWhat has happenedWhat it does not meanWhere you see it
DiscoveredThe address is known to existThat anything has been fetchedSitemap and submission logs
CrawledA bot requested the URL and got a responseThat the response was usablePer-URL visit log, server logs
IndexedThe content was stored and is eligibleThat it will appear for any querySearch Console coverage
ServingThe page appears in results for somethingThat the position is worth havingImpressions in the analytics views

The gaps between these states are where the work is. Discovered-but-never-crawled is usually a linking problem: the URL exists in a sitemap and nowhere else, so nothing signals that it matters. Crawled-but-not-indexed is usually a content or duplication problem — the page was fetched, evaluated and judged not worth storing separately, which is a decision, not a failure.

Submitting a URL is not the same as being indexed. No submission mechanism — not a sitemap, not an indexing API, not a paid tool — obliges a search engine to index anything. Submission moves a URL into the discovered state faster than crawling would find it. Everything after that remains the search engine's decision, and any product that claims otherwise is lying to you.
Budget · What actually gets spent

Crawl budget is a consequence, not an allowance

Crawl budget is often described as if a quota were handed out per site each morning. It is closer to a load-balancing outcome: how much a crawler is willing to fetch from your infrastructure, shaped by how fast you respond and how much of what it fetched last time turned out to be worth having.

That framing makes the practical question obvious. You do not get more budget by asking. You get more useful crawling by wasting less of what is already being spent, and there are a small number of reliable ways an engineering estate wastes it.

  • Preview and branch deployments left public. Every pull request gets a hostname, every hostname is crawlable, and a year of merged branches sits there duplicating the production site.
  • Parameter and fragment explosions. Documentation search pages, sortable tables and anchor-driven navigation can generate thousands of distinct addresses from one document.
  • Redirect chains from three migrations ago. Each hop is a fetch. A four-hop chain spends four requests to deliver one page, and internal links usually still point at the first hop.
  • Soft errors that return 200. A JavaScript route that renders an empty shell for a missing page is a successful response as far as the crawler is concerned, and gets fetched again and again.

None of these are exotic failures. They are the normal by-products of a fast-moving deployment culture, and they are invisible from the marketing side of the company because they live in infrastructure nobody thought of as a publishing surface.

Cheapest fix available. Block preview environments at the host level rather than with a meta tag. A tag still requires the page to be fetched before it can be obeyed; a header or an authentication wall stops the request. On an estate with per-branch deploys this alone can remove most of the wasted crawling.
Asymmetry · The half-built second language

Why the Swedish pages are the ones that never get crawled

On a site where English is the working language, the English pages have everything a crawler uses to decide something is important. They are linked from the documentation, from the careers pages, from the footer of every subdomain, and from whatever external coverage the company has picked up. The Swedish pages, added later, typically have one entry point from a language switcher.

The result is a specific, repeatable pattern: the Swedish translations sit in the sitemap, appear in the discovered state, and are crawled rarely or never. The team concludes that Swedish content does not work for them, and stops writing it. The actual cause was that nothing on the site pointed at those pages other than a switcher widget that many crawlers weight lightly.

Symptom

Swedish page never crawled

Sits in the sitemap, no visit recorded in the log after weeks.

  • Check inbound internal links
  • Not a translation-quality issue
Symptom

Crawled, then dropped

Fetched once, never stored, no coverage entry afterwards.

  • Often a thin or duplicated page
  • Check the canonical target
Symptom

Docs outrank the product page

An API reference page takes commercial queries the marketing site wanted.

  • Usually a linking imbalance
  • Rarely worth fighting directly
Symptom

Old domain still indexed

Pre-rename hostname serving live copies rather than redirecting.

  • Check the redirect actually fires
  • Watch for chains through www

The fix in every one of these cases is structural. Link the Swedish pages from Swedish pages, put them in the navigation rather than only in a switcher, and give them a reason to exist that is not a word-for-word copy of the English. If they are a copy, being crawled and dropped is the correct outcome, and no amount of submission will change it.

Tooling · What the Indexing Hub does

The Indexing Hub, and its actual limits

The Indexing Hub is the part of the panel that deals with this layer. It does three things: it submits URLs, it parses sitemaps, and it records what happened afterwards. The third of those is the one worth paying for, because it is the part that turns indexing from a belief into a measurement.

Indexing Hub · Submission

URL tracker and bulk submission

For estates where the URL count is measured in thousands rather than dozens.

included with the panel
  • A daily budget of 1,000 URLs per account. This is the platform's own ceiling, and it forces the question of which thousand actually matter.
  • Bulk submission up to 10,000 URLs per batch. Batches queue against the daily budget rather than bypassing it.
  • Delivery through the IndexNow API. Submissions are passed to GoogleBot and BingBot through the protocol both support.
  • Live counters for the batch. Submitted, found and failed are tracked separately, so a batch that silently half-worked is visible.
1,000
URLs per day
10,000
URLs per batch
2
bots addressed
Indexing Hub · Sitemaps

Sitemap submission and recursive parsing

For generated estates where the sitemap is itself an index of sitemaps.

included with the panel
  • Upload a file or point at a URL. Either route feeds the same parser, which matters when the sitemap is generated at build time.
  • Recursive parsing three levels deep. An index of indexes of sitemaps is resolved rather than treated as a single document.
  • Up to 1,000 sitemaps in one job. Enough for a documentation tree that splits by version and by section.
  • Two concurrent jobs, twenty queued. The queue is the reason to schedule large parses deliberately rather than firing them all at once.
3
levels of nesting
1,000
sitemaps per job
2 / 20
concurrent / queued

Both of these are plumbing. Useful plumbing, and considerably faster than pasting addresses into a form one at a time, but plumbing. The part that changes how a team works is the log.

Evidence · The per-URL record

A log entry is worth more than a submission receipt

For each URL the Hub keeps a record of what happened to it: which bot visited, with a timestamp, what status came back, and the error detail when there was one. Alongside that, live counters track how many URLs in a batch were submitted, found and failed.

This turns a category of argument into a lookup. When someone says a page is not indexed, there is now a factual first question with a factual answer: has a bot ever fetched it, and what did it get? The three possible answers point in completely different directions, and none of them require guessing.

  • No visit recorded at all. A discovery and linking problem. Submission may help; internal links will help more.
  • Visited, non-200 status. An infrastructure problem with a specific error to hand to whoever owns the deployment.
  • Visited, clean 200, still not indexed. A content or duplication judgement. Nothing technical left to fix; the page needs a reason to exist.
  • Visited repeatedly, always the same empty shell. A rendering problem — the bot is being served a page your browser never shows you.

That third case is the one worth sitting with, because it is where most indexing effort is wasted. A page fetched cleanly and left out of the index has already been assessed. Resubmitting it changes nothing. If you have three versioned copies of the same API reference and only one is indexed, the system is behaving correctly and the fix is canonicalisation, not persistence.

Speed is the only thing submission buys. IndexNow shortens the gap between publishing and discovery, which matters for a changelog entry or a funding announcement. It does not improve the odds of a page being kept, and a batch of 10,000 thin URLs submitted quickly is still 10,000 thin URLs.
Routine · Making it repeatable

A working order of operations

Given a finite daily budget and an estate of several thousand addresses, the sequence matters more than the volume. The order below is deliberately boring, and it front-loads everything that does not require submitting anything.

StepWhat you doWhy it comes here
1List every hostname and who verified itYou cannot measure properties you have not connected
2Close preview environments to crawlersRemoves waste before you spend anything
3Parse the sitemaps and compare against the real URL countThe difference is usually the whole story
4Fix redirect chains and soft errors found in the logCheap, and it changes crawl behaviour
5Submit the commercially relevant pages onlyThe daily budget forces a choice; make it consciously
6Read the visit log a week laterThis is the measurement the rest of the work was for

Step five is where most teams go wrong by submitting everything they have. A daily ceiling of 1,000 URLs against a documentation tree of 4,000 means four days of submissions, most of them spent on pages that will never receive a commercial query. Rank the list first. Our notes on the measurement tooling cover the reporting side of the same estate.

First

Pages with a commercial job

Pricing, product, comparison and the landing pages a campaign points at.

  • Small list, high value
  • Submit on the day they ship
Second

Anything that changed materially

Rewritten pages, new release notes, a changed URL after a restructure.

  • Change, not republish date
  • Include the old URL's target
Third

Swedish counterparts worth having

Only the ones with their own substance, not mirrored English text.

  • Link them internally first
  • Then submit
Not at all

Generated reference pages

Per-method API pages, incident archives, expired job listings.

  • Let crawling find them
  • Spend the budget elsewhere
Sequencing with campaign work. If automated on-site changes or new landing pages are in flight, indexing work is what makes them visible in weeks rather than months. Run the technical pass first; a campaign pointed at pages a crawler cannot reach is a campaign spending money on nothing.
Automation · Where it fits

When to hand the loop over

Indexing work has a natural shape: an intense audit, then a low-grade recurring task. The audit is a person's job. The recurring part — watching for new URLs, submitting them, noticing when a batch fails — is exactly the sort of thing that gets skipped in a busy quarter and is better automated.

The campaign tiers sit alongside the Hub rather than replacing it. AutoSEO at 149 USD per month per domain runs keyword discovery, automatic backlink building from a partner network of over 230,000 websites, and on-site suggestions, with the full analytics views included. FullSEO at 500 USD per month per domain adds manual keyword selection with automatic fallback, directed backlink placement against a domain-rating target, a human review mode for on-site changes, and a team of specialists, developers and writers behind the automation. Add-on placements are priced per slot: Wikipedia at 10 USD in blocks of 0, 1, 5 or 10, PBN at 1 USD in blocks of 0, 20, 100 or 500.

149 USD
AutoSEO, per domain
500 USD
FullSEO, per domain
4–8
weeks to first movement

Stream, the assistant in the My SEO area, is the practical bridge between the two. It accepts URL lists in batches, so a set of newly published documentation pages can go in as a list rather than a form-filling exercise, and it keeps newly placed backlinks, generated reports and to-dos in one chronological feed. A router model decides per question which data blocks to load — between zero and three of them by relevance — so an indexing question does not drag campaign data into the answer. You can read more about how the unified panel is put together, or look at the two campaign tiers side by side.

Getting the evidence out. Exports come as CSV or JSON up to 10,000 rows, or PDF up to 250 rows. For an indexing audit take the JSON: the per-URL log is only useful when you can join it against your own list of what you meant to publish.
Questions · From technical teams

Frequently asked questions

We submitted the page a week ago and it still is not indexed. What now?

Check the visit log before doing anything else. If no bot has fetched it, the problem is discovery and internal linking. If a bot fetched it and got a clean response, the page has been assessed and left out, which is a content judgement — resubmitting will not change it.

Should we submit our entire documentation tree?

Usually not. With a ceiling of 1,000 URLs per day, submitting 4,000 generated pages spends four days on addresses that will never take a commercial query. Submit the pages you would be upset to lose, and let normal crawling find the rest.

Our preview deployments are indexed. How much does that hurt?

Mainly through waste and duplication: crawler capacity spent on copies, and several near-identical candidates for the same content. Block them at the host level rather than with a meta tag, since a tag has to be fetched before it can be obeyed. Then let the copies fall out naturally.

Does IndexNow work for Google, or only Bing?

Submissions through the Hub are directed at both GoogleBot and BingBot. What either engine does with the notification is its own decision. Treat IndexNow as a faster route to discovery, never as an indexing guarantee.

How deep can the sitemap parser follow an index of indexes?

Three levels, with up to 1,000 sitemaps in a single job. Two jobs run at once and up to twenty wait in the queue, so large documentation estates are worth scheduling rather than submitting all at once.

Indexing rewards inventory and evidence more than it rewards effort. Knowing which hostnames you publish, which URLs a bot has actually fetched, and what it received when it did, answers most of the questions that otherwise turn into a fortnight of speculation. The daily and per-batch ceilings are not obstacles so much as a forcing function: they make you decide which pages you actually care about.

If you want to see the current state of your own estate, the first useful step is connecting the properties and running a sitemap parse against them. You can start with a first domain in the panel and read the visit log before deciding whether anything needs submitting at all. Further pieces on technical work are collected in the English blog archive, and the platform's own the product site go into more depth on the Hub itself.