·8 min read
Ecommerce internal linking that survives catalog changes
An online store’s product range changes almost every week. Products are discontinued, categories get split, seasons change. Internal linking done as a one-off campaign falls apart at exactly the same pace. Only linking built on rules in templates lasts, where every new product gets its links the moment it is published.

Why one-off linking fails on a catalog
Internal links do two jobs at once. They are the main route by which Google discovers and recrawls your URLs, and they also pass authority.
The pages you link to most internally are the pages you are telling Google are the most important. Both jobs are structural. Neither of them gets solved by a temp who adds forty links to product descriptions during a quiet week.
The failure has a simple cause. A manually inserted link points to a URL. The product at that URL sells out, gets replaced or moves to a different category. Nobody is responsible for the link, so it stays and now leads through a redirect, to a 404 or to a sold-out product. Multiply that by every manually inserted link and every catalog change since then, and the “internal linking project” from two years ago is today technical debt nobody can even list.
The alternative is to treat internal linking the same way as prices or stock display, meaning as template logic. The rule says “every product page links to its category, to similar products with the same attribute and to one relevant guide”. The rule runs for 50 products as well as for 50,000, and when the catalog changes, the links change with it. That is the difference between linking as a campaign and linking as architecture.
Rule or one-off? The decision is simple
| Situation | Approach | Why |
|---|---|---|
| Applies to a whole page type (all products, all categories) | A rule in the template | Grows with the catalog and needs no manual maintenance |
| A handful of strategic pages (main guides, categories that make money) | Hand-picked links, reviewed once a quarter | At this scale, editorial judgment pays off |
| Hundreds of individual insertions directly in the text | Do not do it. Convert it into a rule or remove it | Nobody is responsible for it, and it falls apart with every catalog change |

A rule set that covers most online stores
Six rules do most of the work. Each one lives in the template, has a defined source and destination, and can be verified with a crawl.
- Breadcrumbs everywhere, with structured data. From product to category and to the homepage, on every page, with BreadcrumbList structured data. This is still commonly missing or broken in a surprisingly large share of the templates I see.
- Category to subcategory, in both directions. The parent category links to all subcategories, and subcategories link back and to each other. Every level of the tree is then reachable from the neighboring ones.
- Products link to siblings by attribute. “More from this brand” and “similar in this price range” are generated from product data, not picked by hand. The rule decides which attributes are used, and the template generates the links from the product data.
- Indexable filter pages get links, excluded ones do not. If you have decided that a facet deserves to be indexed (you will find the decision framework in the article on faceted navigation), it needs internal links to be found and to rank. And the opposite rule matters just as much. Templates must not generate crawlable links to combinations you have excluded. Google’s guidance on faceted navigation is unusually specific here. The
rel="nofollow"attribute on these links only works if every single link pointing to that URL carries it, internal and external. On a templated site, that in practice means removing the link is more reliable than marking it. Google also says that nofollow and canonical are less effective for filters in the long run than a disallow in robots.txt or filters in the URL fragment. - Guides link to the pages that make money based on a mapping, not on whatever the author happens to think of. Every buying guide and every blog article carries links to its mapped categories and products. They are defined in a topic-to-category table that the template reads, so the link does not depend on who wrote the text. That table belongs to the content structure, not to individual texts.
- Discontinued products are handled by one set rule. If there is a replacement, redirect to it. If there is no replacement but the category genuinely matches the same intent, link or redirect to it. Keep in mind that redirecting many products to one unrelated category may be treated by Google as a soft 404, so use it only where the category really matches the query behind the old URL. Otherwise, return a 410. What must not exist is the fourth option most online stores actually run, thousands of live, linked and permanently “unavailable” pages that pile up year after year.
With rule four, I keep seeing the opposite mistake. An online store puts noindex on its filter combinations and then links to each of them from the sidebar of every category. The noindex works, the crawl budget waste continues, and everyone is confused about why the “facet fix” changed nothing at all in the crawl stats. The linking rule and the indexation rule are one decision, not two.

Descriptive anchor text beats clever anchor text
Anchor text tells Google what the target page is about, so “black leather ankle boots” works better as an anchor than “show more”. Everyone agrees on that. With online stores, though, there is one catch. Template-generated links inevitably produce repeated anchors, and that is fine.
Product and category names are natural anchors. It pays to design category anchors so that they include a qualifying attribute (“women’s trail running shoes”, not “shoes”), and to avoid having the same anchor point to two different URLs. That builds cannibalization right into your templates.
What to avoid
- Do not put linking modules that render only on the client side into production without checking what Google sees. If the “related products” block only renders through JavaScript, verify that it is in the rendered HTML. Otherwise your rule set exists only for users.
- Do not link sitewide to noindexed URLs or to non-canonical variants. Google keeps crawling them, and for non-canonical versions it lowers the frequency over time, but every such link is extra crawling.
- Do not turn the footer into a link dump. Fifty sitewide footer links dilute more than they help. The footer deserves a handful of truly sitewide destinations.
- Do not measure the project by the number of links added. Links are the means. The result is crawl depth, the number of orphan pages and the rankings of the linked pages.
- Do not launch a big linking push before your indexation rules are finished. Links amplify the architecture as it is, including its mistakes.
- Do not pick related products at random. When a block generates links by random selection, Google sees different links on every crawl and the signal never settles. The selection should be deterministic, by attribute.
- Do not leave sold-out products without a rule. A page that stays live for a year with “unavailable”, linked from the category, collects impressions without conversions. Discontinued products need a rule with a deadline.
- Do not have two forms of the same filter URL. When the template links to filters with parameters in a different order than the sitemap, even indexable filters end up with two URLs. There must be one canonical URL form, in the template and in the sitemap.
What to measure for internal linking?
Every rule above can be verified with a crawl, and that is exactly why this is architecture, not opinion.
- Number of incoming internal links compared with revenue. Combine the incoming link counts from the crawl with revenue per URL. The pages that make the most money should not be the pages with the fewest internal links. If they are, that mismatch is your priority list.
- Number of orphan pages. URLs that are in the sitemap or in Search Console but that the crawl does not find. The trend should go down, ideally to zero for indexable page types.
- Click depth of the pages that make money. Products and priority categories reachable within three to four clicks from the homepage. When they sit deeper, both users and bots reach them less easily. This applies beyond Google too. AI assistant crawlers also discover content through links, so a page hidden deep and without incoming links probably has a smaller chance of getting into their answers. Measuring visibility in AI assistants is, however, a separate discipline with its own tools.
- Crawl frequency of newly published products. If the rules work, new URLs inherit links the moment they are published. The time to first crawl of new products should get visibly shorter.
You can tell a well-done project by one thing. A year later, nobody remembers it, because there is nothing to fix. Manual linking reminds you of itself in the same time, with the hundred-and-fortieth link pointing to a 404.
Does your internal linking architecture scale with your catalog?
Ecommerce SEO turns your internal linking into rules your developers can implement, with before-and-after data verified by a crawl.