LUCENTCOMMERCEGET A FREE STORE AUDITFREE AUDIT

SEO · CONTENT · AEO · 1 JULY 2025 · 7 MIN READ

Internal linking for ecommerce, done deliberately

Your navigation is not an internal linking strategy, and an app will not fix it. The links that matter are the ones a person wrote into a sentence.

A search result and the page behind it

Decide which twenty pages you want to rank, then link to each of them from the pages that already have authority, in body copy, with anchor text that matches the phrase you are targeting. Everything else about ecommerce internal linking is plumbing: the navigation menu links to everything and therefore says nothing, breadcrumbs describe structure rather than priority, and product recommendation blocks are a merchandising tool that often does not put a crawlable link on the page at all. The work is a list of twenty destinations and the sentences that point at them, and it is hand-done, per catalogue. No app knows which of your collections deserves the traffic.

IN SHORT

  • A Shopify navigation menu supports a maximum of three nested levels, which is the entire ceiling on what your nav can express about site structure.
  • Sitewide links — nav, footer, breadcrumbs — are structural. They make pages reachable; they do not tell a search engine which page matters most.
  • In-copy links from a strong page to a specific collection, with anchor text matching the target phrase, are the only internal links that reliably move anything.
  • Related-product blocks loaded through the Ajax Product Recommendations API are not internal links as far as a crawler is concerned, because the markup is not in the server-rendered HTML.
  • The Ajax recommendations endpoint returns between 1 and 10 products, defaults to 10, and accepts an intent of either `related` or `complementary`.
  • Do this for twenty pages properly rather than two hundred badly, and skip the internal linking app entirely.

Four systems create links on a Shopify store, and only one of them is a decision

Before planning anything, it is worth separating where the links on your store come from, because they are not equivalent and most internal linking advice treats them as if they were.

Navigation menus. Configured in the admin, rendered from the linklist object, and capped at three nested levels — the documentation is explicit that a menu supports "a maximum of 3 levels". Every page carries them, which is exactly why they carry so little weight. A link that appears on all 4,000 URLs on your site distinguishes nothing from anything.

Collection membership. A product belongs to collections; the collection grid links to the product. This is the layer that makes your catalogue reachable at all, and the main thing to get right is that no product is in exactly zero collections, which happens more often than people expect after a bulk import.

Recommendation blocks. "You may also like", "Pairs well with". Merchandising, discussed below, and not the linking layer you think it is.

Links somebody wrote into a sentence. A paragraph on a hub collection pointing at a narrower one. A blog post pointing at the collection it is really about. These are the only links on the store that reflect a judgement about what matters, and they are the ones that are usually missing.

Recommendation blocks are merchandising, not internal linking

This is the correction worth making first, because it changes what you expect from the section your theme already ships.

Shopify exposes product recommendations through an Ajax endpoint: GET /{locale}/recommendations/products.json for data, or /recommendations/products with a section_id to render a section server-side. It takes a product_id, an optional limit that the documentation says "can range from 1 to 10, and the default is 10", and an optional intent of related or complementaryrelated uses relationship-based strategies, complementary uses co-purchase data and is the one you want under a buy button. The Search & Discovery app can override what comes back, which is the supported way to force a pairing the algorithm has not worked out yet.

The catch is the word Ajax. The block is fetched after the page loads, so the links inside it are not in the HTML the server returned. Treat that section as what it is — a conversion device that raises average order value — and not as the mechanism by which your accessories collection gains authority. If you want a crawlable link to that collection, put one in the page copy.

Which is not an argument for removing it. Complementary recommendations under a buy button earn their place on commercial grounds alone. It is an argument for not counting them twice.

The twenty-page list

Here is the whole method, and it fits in a spreadsheet.

Write down the twenty pages you want to rank — almost always collections, for the reasons in our piece on collection pages: category-level phrases carry the demand and a collection outlives the products inside it. Next to each, the phrase you want it to rank for. Then, for each destination, name three pages that already have authority and a plausible reason to mention it: the parent collection, a related collection, a blog post on the subject.

Now write the sentences. Not "click here", not a bare product name — the phrase the destination is targeting, inside a sentence that a human reading the page would find useful. If you cannot write a sentence on the source page that naturally mentions the destination, that is a signal the link does not belong there, and forcing it in is how a site ends up with a footer full of keyword links that fool nobody.

Twenty destinations times three sources is sixty links. That is an afternoon, it is the whole job for most stores under a few thousand products, and it is measurably more than an app that automatically links every occurrence of every product name will ever do for you.

Where the links go, and where they do not

Three patterns do most of the work, and two habits do most of the damage.

  • Hub collection down to facet collections, in the intro copy or a card row above the grid — not only in the filter sidebar. "Waterproof walking boots" and "wide fit walking boots" are collections a parent page should mention in prose.
  • Blog post out to the collection it is about, high in the body. A guide to choosing between two materials should link to both collections in its first few paragraphs, not in a call-to-action at the bottom that 8% of readers see.
  • Sibling collections across to each other, where the relationship is real. Two or three, chosen; not an auto-generated block of twelve.
  • Do not link the same phrase to the same destination forty times across a site. After the first link on a page, further links to the same URL add nothing and make the copy worse.
  • Do not build a "related searches" block of thirty links at the bottom of every collection. It is the 2014 footer, relocated, and it dilutes every genuine link on the page.

Breadcrumbs, orphans, and the plumbing that actually matters

The structural layer is not where the wins are, but it is where the faults are.

Breadcrumbs. Worth having, mainly because they make the hierarchy legible to a shopper who landed from search and to a crawler working out what sits under what. Mark them up as BreadcrumbList and — the part that gets missed — make sure the visible trail and the markup agree. A trail that stops at the parent while the schema includes the current page is a disagreement somebody eventually notices.

Orphans. Pages reachable only from the sitemap, or only from a filter control. Run your catalogue against your collections and find the products in nothing; check whether the facet collections you built last quarter are linked from anywhere other than the menu you removed them from.

Depth. If a product needs five clicks from the homepage, the pages in between are doing a bad job of linking. Three is a reasonable target for anything you care about, and the fix is usually a card row on a hub page, not another level of nav — the three-level cap means the nav cannot solve it anyway.

None of this is glamorous and all of it is cheaper than the alternative, which is discovering in month nine that a third of your catalogue was never linked from a page a crawler visits.

Why this stalls, and what fixes it

Teams rarely disagree with any of the above. They stall on production. Sixty in-copy links means editing sixty pages, and on a theme where a collection page is a title and a grid, adding a paragraph with two links in it is a developer ticket. Sixty developer tickets do not get raised.

That is a tooling problem rather than an SEO problem, and it has a direct fix: composable blocks a merchandiser arranges without touching code, so an intro paragraph with links, or a row of cards pointing at four sibling collections, costs ten minutes rather than a sprint. That is what a [section library](/services/build/shopify-section-library) is for, and internal linking is one of the clearest returns on building one.

The honest version of the advice: if your team cannot edit collection copy today, fix that first. The link plan is worthless while it stays in a spreadsheet.

Questions this raises

How should an ecommerce site handle internal linking?

Pick the twenty pages you want to rank — usually collections — and for each one add links from three pages that already have authority, in body copy, with anchor text matching the phrase you are targeting. Keep navigation, breadcrumbs and collection membership as the structural layer that makes everything reachable, and treat recommendation blocks as merchandising. Sixty deliberate links beat an automated system that links everything to everything.

Do product recommendation blocks count as internal links?

Usually not. Shopify serves recommendations through an Ajax endpoint, so the block is fetched after the page loads and its links are not in the HTML the server returned. Keep the block for its conversion value and add a real in-copy link if you want the destination to benefit.

How many products can Shopify recommend per block?

The Ajax Product Recommendations API documents a `limit` that ranges from 1 to 10, with a default of 10, and an `intent` parameter accepting `related` or `complementary`. Complementary recommendations are generated from co-purchase behaviour, which is what you want alongside a buy button; related uses broader relationship strategies.

How many levels can a Shopify navigation menu have?

Three. The Liquid documentation states a menu supports a maximum of three nested levels. That is the ceiling on what your nav can express, which is one reason a deep catalogue needs hub pages that link downward in their own content rather than an ever-larger mega menu.

Is anchor text still important for internal links?

Yes, and it is the part most stores get wrong for free. An internal link is one of the few places you control the anchor text completely. Use the phrase the destination is targeting, written into a sentence that reads normally — not "click here", and not the product SKU your theme inserted.

Are internal linking apps worth it?

For most stores, no. They automate the part that needed judgement — which page deserves the traffic — and produce volume instead, which is what you get when every mention of a term becomes a link. A hand-written plan covering your twenty most valuable pages is smaller, better and does not add a script to every page.

NEXT STEP

Free store audit

A senior Shopify engineer reviews your storefront, theme performance and checkout, then sends a prioritised list of fixes.