Blog / Technical SEO

How to Fix Orphan Pages and Internal Links on Shopify

To fix orphan pages on Shopify, crawl the store with your sitemap as a second source, decide for each orphan whether to link it, redirect it or leave it, then add contextual links from guides, collections and product descriptions. Finish by giving every anchor phrase one destination, so Google always knows which page you mean.

Shopify makes it easy to publish pages and just as easy to forget about them. Blog posts drift out of sight, campaign collections empty out, and products end up in no collection at all.

Below is how I approach it, shaped by work on an Australian meat store where orphan pages went from 45 to 0, with the admin paths, decision rules and anchor-text checks for each step.

You'll also see how Shopify's URL structure affects which links you should add, and why some redirects silently fail.

Key takeaways

  • An orphan page has no internal links pointing to it, so it relies on the sitemap alone to be found.
  • Shopify can show the same product on a collection-based URL; link to the /products/ version and check your canonical tags.
  • Not every orphan should be linked. Some should be redirected, and a few are meant to stay unlinked.
  • Contextual links from guides and collection copy say far more about a page than menu links alone.
  • Use one anchor phrase for one destination page across the whole store.
  • Shopify only redirects URLs that are broken, so hide or delete an empty collection before redirecting it.

What orphan pages are and why Shopify stores collect them

An orphan page is a URL that exists, often in your sitemap, but no other page on your store links to it. Google's guidance is that every page you care about should have a link from at least one other page on your site.

Shopify builds a sitemap for you at yourstore.com/sitemap.xml and updates it automatically when you add products, collections, pages and blog posts. So Google can still discover orphans, but a sitemap entry with no internal links says very little about how important a page is or what it relates to.

Orphans are one row in a technical SEO audit for small business websites. On Shopify stores they're often the most fixable one, because content grows faster than navigation.

Where Shopify orphans come from

  • Blog posts that were published and never linked from products, collections or other posts. The blog index may still list them, but many clicks deep.
  • Seasonal or sale collections that were removed from the menu once the campaign ended.
  • Products that aren't in any collection, or only in a collection nothing links to.
  • Pages built for one job, such as an ad campaign, a wholesale enquiry form or a single email.
  • Old URLs left behind after a handle change without a redirect.

How Shopify URLs and duplicate paths work

Before you add links, you need to know which URL to link to. Shopify uses a fixed prefix for each content type, and you can only edit the handle at the end.

Shopify URL types and which version to link to
ContentURL patternLink to it?
Product/products/{handle}Yes, always this version
Product viewed inside a collection/collections/{collection}/products/{handle}No, use the /products/ URL
Collection/collections/{handle}Yes
Page/pages/{handle}Yes
Blog post/blogs/{blog}/{post-handle}Yes
Filtered or sorted collection/collections/{handle}?filter...No, link the clean collection URL

The collection-based product path

Many themes link products from collection grids using the collection-aware path. Shopify's developer documentation for the within filter, which builds those links, notes that it creates the same content on separate URLs and tells theme developers to consider the SEO implications.

Themes normally handle this with a canonical tag pointing back to the /products/ version, but themes and apps vary. To check yours, open a product from a collection page, view the page source and search for rel="canonical". It should show the /products/{handle} URL:

<link rel="canonical" href="https://example.com.au/products/grass-fed-scotch-fillet">

Even when the canonical is right, I link to the /products/ URL in blog posts and page copy. Every manual link then points at the version you want indexed, and your crawl reports stay clean.

Handles and redirects

You edit a handle in the Search engine listing section of a product or collection, in the URL handle field. When you change it, Shopify gives you the option to create a URL redirect from the old handle, so make sure it's selected before you save.

Shopify also advises against changing handles too often. Pick a clear, keyword-led handle once and leave it.

Step 1: Find the orphan pages

A crawler that only follows links can't find orphans, by definition. It needs a second list of URLs to compare against, usually your sitemap.

Ahrefs Site Audit

  1. Set up a project for the store with sitemap crawling turned on.
  2. When the crawl finishes, open the Links report and go to Issues.
  3. Find "Orphan page (has no incoming internal links)" and export the URLs.

Don't act on the list blindly. Ahrefs explains that sitemap-based crawls can report pages as orphans even when other pages link to them, so spot-check a handful before you start editing.

Screaming Frog

In Screaming Frog, include your XML sitemap in the crawl settings and, if you can, connect Search Console and Google Analytics. After the crawl, run Crawl Analysis so the orphan page filters populate, then export the list with its source column.

Cross-check against your Shopify admin

Put the orphan list in a spreadsheet next to a product export (Products, then Export) and your list of collections. Add columns for stock status, sessions from GA4 and clicks from Search Console over the past 12 months.

Now you can triage with data instead of guessing. Every store has its own challenges, so expect your orphans and their causes to look different from anyone else's.

Step 2: Decide what to do with each orphan

Linking every orphan isn't the goal. Some deserve links, some should be retired, and a few are orphaned on purpose.

Orphan page triage for Shopify stores
Orphan typeDecisionAction
Blog post that answers a real customer questionKeep and linkLink from 2 to 4 related posts and from its matching collection
In-stock product missing from collectionsKeep and linkAdd it to the right collection, then link it from relevant guides
Discontinued product with traffic or backlinksRetireSet to draft or delete, then redirect to the closest product or collection
Empty or finished seasonal collectionRetireHide or delete, then 301 to the closest live collection
Ad landing page or wholesale pageLeave unlinkedKeep it out of search with noindex if it shouldn't rank
Thin page overlapping a better oneMergeMove any useful copy across, then redirect
Account, cart or confirmation pagesIgnoreNot a problem

My decision rule: if a page has had clicks in Search Console in the past 12 months, or has backlinks, never remove it without a redirect.

The best internal links are the ones a shopper would actually click. On a Shopify store, I work through four link types in this order.

Guides to collections and products

Every blog post should link to the collection or products it discusses, with the first link high on the page, ideally in the first two or three paragraphs. I usually add three to seven contextual links per article, depending on length.

Here's a typical rewrite, with the link target shown in brackets:

  • Before: "Slow cooking works best with cheaper cuts. Click here to shop."
  • After: "Slow cooking works best with collagen-rich cuts like beef cheeks and oxtail [link: /collections/slow-cook-beef], which turn tender after a few hours on low heat."

The second version tells the shopper what they'll find, and tells Google what the collection is about.

Collections to guides

Collection descriptions are prime space for links. A short intro above the grid, or a buying guide below it, can link to the two or three guides that help people choose. I cover what to write there in collection page content that ranks.

Products to guides and related products

Product descriptions can link to a cooking guide, a size guide or a complementary collection. Keep it to one or two links so the page stays focused on the sale.

Titles, descriptions and reviews matter just as much for product page SEO, so I fix them in the same pass.

Menu and footer links, which you manage under Content, then Menus, make core collections reachable from every page. But they repeat everywhere with the same anchor, so they say little about how pages relate.

Use menus for structure and contextual links for meaning. Related-post and related-product blocks help too, as long as they output real <a href> links rather than script-only widgets.

Step 4: Keep anchor text consistent

Anchor text is the clickable text of a link, and it tells Google what the destination is about. The rule I follow on every store is one anchor phrase, one destination page.

If "scotch fillet" links to a product in one post and a collection in another, you're telling Google both pages are the best match for the same words. Pick one and stick to it.

Build an anchor map

Keep a simple sheet with three columns: anchor phrase, destination URL, and the pages that use it. Before adding a link, search the sheet. If the phrase is taken, link to the same page or choose different words.

Example anchor map for a meat store
Anchor phraseDestinationUsed on
grass-fed scotch fillet/products/grass-fed-scotch-fillet3 blog posts
slow-cook beef cuts/collections/slow-cook-beef4 blog posts, 1 page
how to reverse sear a steak/blogs/news/reverse-sear-steak2 blog posts, 1 product
bulk beef boxes/collections/bulk-beef5 blog posts

Variation is fine as long as every variant points to the same page. "Slow-cook beef cuts" and "beef cuts for slow cooking" can both go to the same collection: vary the wording, never the destination.

Avoid generic anchors such as "click here" or "shop now" in body copy. A good anchor still makes sense if you read it on its own.

Step 5: Redirect empty collections and dead URLs

Empty collections are dead ends. A shopper lands, sees no products and leaves, and the page stays live and indexable until you act.

Why you have to hide or delete first

Shopify only lets you redirect from URLs that are broken, meaning they return a "page not found" error. A published empty collection still loads, so a redirect from it won't fire.

Hidden collections and draft products return a 404, so hide or delete the collection first, then add the redirect. Shopify notes that restoring visibility later deletes the redirect, and you can't redirect the fixed /products or /collections paths themselves.

Create the redirect

  1. In your Shopify admin, go to Content, then Menus, and click URL redirects.
  2. Click Create URL redirect.
  3. Enter the old path in Redirect from, for example /collections/christmas-hams.
  4. Enter the closest live page in Redirect to, for example /collections/ham-and-pork.
  5. Save, then test the old URL in a private browser window.

For more than a handful, use Import on the same screen with a CSV file. Shopify provides a sample file to use as a template, laid out like this:

Redirect from,Redirect to
/collections/christmas-hams,/collections/ham-and-pork
/collections/summer-bbq-bundles,/collections/bbq-packs

Clean up theme references

A redirect fixes the URL, not the links pointing at it. Remove the collection from menus, check theme sections and sidebars that reference collections by handle, and update any blog posts that linked to it.

Otherwise your next crawl reports internal links to redirects, and you're back where you started. Always redirect to the page a shopper would expect, not the homepage.

What this looked like on Cost Cut Meats

Cost Cut Meats is an Australian online meat retailer on Shopify with 163 live pieces of content: 110 blog posts and 53 recipes. No menu can hold that much, so internal links had to do the work.

Cost Cut Meats internal linking and site health results
MeasureBeforeAfter
Orphan pages450
Internal links621750
Empty collections9All 9 redirected (301) to the closest live page
Ahrefs Site Health79100 (16 to 22 Oct 2026)

Each anchor phrase now points to one page only. Keywords are kept to Ahrefs KD under 20 with one primary keyword per page, so the anchor map and the keyword map line up: one phrase, one page, one target.

Across the wider project, Google clicks went from 117 a month in June 2026 to 3,788 in October 2026, and average position improved from 16.9 to 7.3. That came from the whole programme, content included, so I don't credit internal links alone. What the linking work did was make sure every one of those pages could be found.

Step 6: Measure and maintain

Internal linking isn't a one-off job. Every new post, product and collection is a potential orphan.

  • Re-crawl monthly and confirm the orphan count is still zero.
  • In Search Console, open Links and check Top linked pages under Internal links. Your key collections should sit near the top.
  • Check for internal links to redirects and 404s after every collection or handle change.
  • Track clicks and impressions for newly linked pages over the following weeks, not days.

A checklist for every new page

  1. Link the new page from at least two relevant existing pages.
  2. Link out from it to its collection or product, high on the page.
  3. Check the anchor map before choosing the anchor text.
  4. Add products to a collection, and posts to a related-content block or tag.
  5. Confirm the URL appears in sitemap.xml, then request indexing in URL Inspection.

Theme and app clean-up often overlaps with speed work, so it's worth checking Core Web Vitals on your key templates in the same pass.

The bottom line

Orphan pages on Shopify are almost always a process problem, not a platform bug. Content gets published faster than anyone links to it.

Find them with a sitemap-aware crawl, triage each one, link with descriptive anchors that point to one page each, and redirect what's dead.

If you'd like this built into a monthly routine, internal linking is part of my SEO strategy and content management service.

FAQs

1. What is an orphan page on Shopify?

It's a product, collection, page or blog post that no other page on your store links to. It may still be in your sitemap, but shoppers can't reach it by browsing, and Google gets little context about it.

2. How do I find orphan pages on Shopify?

Run a crawler that compares your internal links with your sitemap, such as Ahrefs Site Audit or Screaming Frog. Export the orphan list and check a few URLs by hand, because sitemap-based crawls can produce false positives.

3. Do Shopify menu links count as internal links?

Yes. Menu and footer links make pages reachable and are right for core collections, but they repeat on every page with the same anchor. Contextual links inside content say more about what a page is about and how it relates to others.

4. Should I link to /collections/x/products/y or /products/y?

Link to /products/y in your content. It's the version you want indexed, and it avoids sending internal links to a duplicate path. Check that your theme's canonical tag on the collection path points to the same URL.

5. Should I link to out-of-stock products?

For a short stock gap, keep the link. If the product is gone for good, link to the collection instead and redirect the old product URL to the closest alternative.

6. How many internal links should a Shopify blog post have?

There's no fixed number. I usually add three to seven contextual links per article depending on length, with the first one high on the page, and every link pointing somewhere a reader would genuinely want to go.

7. Can I redirect a collection that still exists on Shopify?

No. Shopify only redirects URLs that return a "page not found" error. Hide or delete the collection first, then create the redirect under Content, then Menus, then URL redirects.

James

SEO Content Manager & Strategist working with eCommerce, SaaS, service and local businesses, and many more, on SEO, content, conversion and AI search.

More about James

Before you publish

Everything here is set in config.js. Items still open: