Linkagent

Internal Linking for Ecommerce: Beyond the Mega Menu

Ecommerce internal linking that works: category-to-product flows, blog-to-category links, faceted navigation traps, and out-of-stock handling.

Nedim Mehić

Nedim Mehić

August 9, 2026 · 6 min read

Internal Linking for Ecommerce: Beyond the Mega Menu

Ecommerce internal linking fails in a predictable way: the mega menu and faceted navigation generate tens of thousands of links, while the contextual, in-prose links that actually move rankings barely exist. Category pages get no links from content, products get no links from each other's copy, and the blog (often the site's only source of external backlinks) links to nothing that sells. Fixing those flows is worth more than any menu redesign, because boilerplate links are heavily discounted while contextual links carry the weight.

Why the mega menu isn't an internal linking strategy

A mega menu puts 300 links on every page. It feels like massive internal linking; in ranking terms it's close to background noise. Google's reasonable-surfer weighting values links by the likelihood a user clicks them, and sitewide boilerplate (header, footer, sidebar) sits at the bottom of that distribution. Identical links with identical anchors on every page also carry no page-specific relevance signal: the menu says nothing about which content considers which category important.

This is why any honest audit of an ecommerce link graph has to separate boilerplate from prose. When LinkAgent crawls a store it deliberately excludes navigation, header, footer, and sidebar links and builds the graph from in-text links only, and on most ecommerce sites, that graph is nearly empty. Hundreds of category and product URLs, linked exclusively by templates, functionally orphaned in the contextual graph. That emptiness is the opportunity. Ecommerce linking is a structural problem as much as a content one, and it sits inside your broader site structure decisions; but the five flows below are where the contextual links come from.

Flow 1: Category → product (beyond the grid)

The product grid links every product in the category, but those are templated listing links with the product title as anchor, the same on page 2 of pagination as everywhere else. Two upgrades:

Write real category descriptions that link. A 150–300 word category intro (above or below the grid) that genuinely helps a buyer choose can contextually link to 1–2 flagship products and to adjacent categories:

"Most road cyclists start with a carbon road bike in the mid-range before deciding whether electronic shifting is worth it; if you ride mixed surfaces, our gravel bikes trade some speed for tire clearance." (anchors linking to /products/aeris-cr1-carbon and /collections/gravel-bikes).

Keep pagination crawlable and shallow. Deep pagination pushes products to click depth 6+; use larger page sizes or "view all" where performance allows, so products stay within three or four clicks of home.

Flow 2: Product → product (cross-links in copy, not just widgets)

"Related products" carousels are templated and usually rendered client-side: better than nothing for users, weak as link signals. The stronger version is cross-links inside product copy where a real relationship exists:

"The CR1 ships with rim brakes; if you want hydraulic stops, the CR1 Disc is the same frame with a disc-specific fork." (anchor "CR1 Disc", target /products/aeris-cr1-disc).

Natural product-copy cross-links: the accessory a product requires ("compatible with our thru-axle trainer adapter", linking to the adapter's product page), the step-up model, the replacement part, the bundle. These sentences also convert; you're linking at the exact moment of a comparison question. Budget them like all body links: one or two per description; a 300-word product page doesn't support five.

Flow 3: Blog → category (the big untapped one)

This is the highest-leverage fix on almost every store. Content teams publish buying guides, how-tos, and lookbooks; those posts earn the backlinks and social traffic that product URLs never get, and then link to nothing but other posts.

Category pages are the perfect target: they're your money pages for non-branded queries ("gravel bikes," "waterproof trail running shoes"), and nobody external will ever link to them. Contextual links from your content are frequently the only in-prose links a category URL will ever receive.

Before: "For commuting in the rain, fenders and a rack matter more than frame material; most commuter bikes come ready for both."

After: "For commuting in the rain, fenders and a rack matter more than frame material; most commuter bikes come ready for both." (anchor "commuter bikes", target /collections/commuter-bikes).

The sentence already contained the anchor; the link just wraps it. Run this systematically: for every category, find every post whose copy mentions the category's topic and link the naturally occurring phrase. Vary anchors across sources ("commuter bikes," "a commuter bike ready for racks," "bikes built for commuting"); no single phrase should dominate the category's inbound anchor profile. Organizing content deliberately around commercial categories (each cluster of posts feeding its category page) is the ecommerce version of topic clusters, and it's what turns a blog from a traffic silo into a distribution system.

Flow 4: The faceted navigation trap

Facets (color, size, brand, price filters) generate URLs combinatorially: /collections/road-bikes?color=red&size=56&brand=aeris and thousands of siblings. Left uncontrolled, they burn crawl budget, duplicate content across near-identical pages, and scatter internal link equity across URLs you never want ranked.

The standard containment, briefly:

  • Decide which facet combinations deserve to exist as indexable pages. Usually: single high-demand facets with search volume ("red road bikes" maybe; "red 56cm Aeris road bikes under $2,000" never).
  • For everything else: canonical to the unfiltered category, and keep parameterized URLs out of your sitemap. Where crawl waste is severe, block crawl paths via robots.txt; but remember a page blocked from crawling can't pass signals at all, so don't block facets you canonical.
  • Never point contextual links at non-indexable facet URLs. Every in-prose link should target the canonical category or a deliberately indexable facet page. A blog post linking to ?sort=price_asc is a wasted link.

The internal-linking rule that falls out: your contextual graph should touch only URLs you want ranked. Facets are a navigation feature, not link targets. (For the mechanics of how link equity and relevance flow through that graph, see our complete guide to internal linking.)

Flow 5: Out-of-stock and discontinued products

Products die constantly, and every dead product takes its inbound links with it, or worse, leaves them pointing at a 404 or an endless "out of stock" page.

  • Temporarily out of stock: keep the page live and indexed, state availability clearly, offer alternatives and a restock notification. Keep its inbound links; the page still holds its equity for the restock.
  • Discontinued, direct successor exists: 301 to the successor. Inbound internal links should be updated to the successor, not left riding the redirect forever; redirect chains accumulate as catalogs churn.
  • Discontinued, no successor: 301 to the closest category (parent category as fallback), and update or remove the contextual links pointing at it. A body-copy link to a dead product is a dead-end for readers and a leak in the graph.

The operational problem is finding all the contextual links pointing at dead products across hundreds of posts and descriptions. This is exactly what scheduled re-crawls are for: a crawler that rebuilds your in-text link graph monthly or weekly surfaces every prose link whose target has vanished or been redirected, so catalog churn doesn't quietly rot your content's links.

The 80/20 for stores

If you do one thing: give every money category 5–10 contextual inbound links from blog posts and guides that already mention its topic, anchored on the phrases already in those sentences. It attacks the largest gap (blog→category), targets the pages with the most ranking upside, and requires zero new content.

Making it operational

The catch with all five flows is scale. A 2,000-SKU store with 300 posts has millions of possible page pairs, and the catalog changes weekly. Manual passes can establish the pattern; they can't maintain it. The maintainable version needs the same loop as any internal linking strategy (audit, prioritize, implement, maintain) with the implementation automated: crawl the store, build topic vectors for posts, categories, and products, score pairs on similarity and target link need, and queue placements where the anchor already exists in the sentence, under sane budgets (about 1 link per 250 words, capped inbound links per target, no anchor phrase dominating a profile, templated sentences excluded).

That pipeline is what an internal linking tool built for this automates end to end: crawl, scoring, review queue, scheduled re-crawls that pick up new products and posts, with a human approving every link before it ships. Start with the blog→category flow, measure category positions in Search Console over the following weeks, and let the results argue for the rest.

Related reading

Put this on autopilot

Linkagent finds and ships internal links for you. Scan your site free, no account needed.

Free scan, no account needed. Takes about 20 seconds.