Fixing Orphan Product Pages
An orphan product is a live product page that nothing on your own site links to. It may still sit in the sitemap, the Google Shopping feed or an old email, so it can be found by search engines, but shoppers browsing your categories never reach it and search engines have little reason to think it matters.
Orphans appear quietly when collections are deleted, rules change or themes swap. This guide shows how to find every orphan by comparing three lists, how to tell which cause produced each one, and what to do with them.
What counts as an orphan
The strict definition is a page with no internal links pointing to it. In practice a shop has several shades of orphan, and the Ecommerce Crawl surfaces the ones a link-following crawler cannot reach from your home page.
| Type | How it is reachable | Why it is a problem |
|---|---|---|
| True orphan | Only by typing the URL, or from outside links | No shopper route; search engines may not find it at all |
| Sitemap-only orphan | Listed in the XML sitemap, not linked anywhere | Can be crawled, but sends a weak signal and often ends up not indexed |
| Feed-only orphan | In the Merchant Center or marketplace feed | Shoppers from ads land on a page with no route to related products |
| Script-only link | Linked only through a JavaScript "load more" or an app widget without
real <a href> links | Link-following crawlers may never see the link |
| Search-only product | Only through the site search box | Crawlers do not type into search boxes |
A product that is linked, but only from page 40 of a category, is not an orphan in the strict sense. It is a related problem, deep placement, and it is covered below because the same comparison exposes it.
How products end up orphaned
Almost nobody orphans a product on purpose. The usual causes, roughly in order of how often they turn up on small and medium shops:
- A collection or category was deleted or hidden, and some of its products were not in any other collection.
- Automated collection rules changed. A rule such as "tag equals summer" stops matching when someone renames the tag, and products drop out silently.
- A product was added but never assigned to a category, often during a bulk import or a supplier feed sync.
- The theme changed how listings load. Switching from numbered pages to infinite scroll or a "load more" button that fetches products by script can leave everything after the first batch without a crawlable link.
- Menu and landing page rebuilds removed the only link to a small range, such as a gift set or a one-off collaboration.
- Visibility settings hid products from listings while leaving their pages live, for example products marked hidden from the catalogue but still published.
- Old campaign pages were the only thing linking to a product, and they have since been unpublished.
Knowing the cause matters because the fix differs. A renamed tag needs one rule changing; a theme that hides products behind script needs a template change; a bulk import needs a check in your upload process.
The three-list comparison
No single source tells you which products are orphaned. The reliable method is to compare what exists, what you advertise, and what a crawler can actually reach.
- List A, the catalogue: every published product, from your platform export. Build the full product URL for each row from the handle or slug.
- List B, what you advertise: every product URL in your XML sitemap, and in your shopping feed if you have one.
- List C, what a crawler reaches: every product URL found by following links from the home page, which is what the Ecommerce Crawl gives you.
Paste each list into its own sheet, normalise the URLs (same protocol, same host, no trailing slash differences, no parameters) and use a lookup to mark each URL in list A as present or absent in B and C. In Google Sheets or Excel:
=IF(COUNTIF(Crawl!A:A, A2)>0, "linked", "ORPHAN")
=IF(COUNTIF(Sitemap!A:A, A2)>0, "in sitemap", "not in sitemap")
The combinations tell you what kind of problem each product has:
| In catalogue | In sitemap | Reached by crawl | Meaning |
|---|---|---|---|
| Yes | Yes | Yes | Healthy |
| Yes | Yes | No | Sitemap-only orphan: the most common case |
| Yes | No | No | True orphan: nothing points to it |
| Yes | No | Yes | Linked but missing from the sitemap; check why the sitemap excludes it |
| No | Yes | Either | Sitemap lists a product that is no longer published; clean the sitemap |
Near-orphans: products buried too deep
While you have the crawl data open, sort the linked products by click depth, the number of clicks from the home page. A product that needs eight clicks through paginated categories is technically linked but gets little attention from crawlers or shoppers. Common reasons are long categories sorted by date, where older products sink to the last pages, and categories with a small number of products per page.
Fixes for deep products overlap with orphan fixes: add them to a second, more specific category, feature them in related-product blocks, raise the number of products per listing page, or split one enormous category into sensible sub-categories. The product internal linking guide goes further into link placement on product pages themselves.
Relink, merge or retire
Not every orphan should be rescued. Treat each one on its merits:
- Current product, sells, belongs in a range: relink it. Assign it to the right category and check it appears on a crawlable listing page.
- Duplicate of another live product, such as an old import of the same item: consolidate it into the main product with a 301 redirect, after copying across any reviews your platform allows you to move.
- Discontinued with a clear successor: redirect to the successor.
- Discontinued, no successor, no traffic, no links: unpublish it so it returns 404 or 410, and remove it from the sitemap and feed.
- Test products, drafts published by mistake, staff-only items: unpublish them. These should never have been live.
The fix, step by step
Step 1
Export the full list of live products
Export every product from your platform admin as a CSV, including its status, handle or slug, and whether it is visible in the online store. Filter to products that are published and visible, then build the full public URL for each row in a new column. Include products with zero stock if they are still published, because out-of-stock products can be orphaned too. This list is your record of what should be reachable.
Step 2
Collect the URLs your sitemap and feeds expose
Open your sitemap index, follow each product sitemap file and copy every product URL into a second sheet. If you run a Google Merchant Center or marketplace feed, export its product links into the same sheet with a note of the source. Normalise every URL so it matches the format in the catalogue list, removing tracking and variant parameters. This list shows which products you are actively telling search engines and shopping platforms about.
Step 3
Crawl the shop from the home page only
Run the Ecommerce Crawl starting from the home page, following links only, so the result reflects the routes a shopper or search engine can actually take. Make sure the crawl is not seeded with your sitemap, otherwise sitemap-only orphans will look linked. Export every product URL it found, along with click depth if available, into a third sheet. Products that load only through a script or a search box will be missing, which is what you want to find.
Step 4
Compare the three lists and label each orphan
Use a lookup formula such as COUNTIF to mark each catalogue URL as found
or not found in the crawl and in the sitemap. Filter to products the crawl did not reach. For each one,
note the likely cause: no category, a broken automated rule, a hidden collection, or a listing that loads
by script. Add Search Console clicks and any known backlinks, so you can see which orphans still bring
in visitors.
Step 5
Decide whether each orphan should live or go
Go through the filtered list and give every product one outcome: relink, merge into
another product, redirect to a successor, or retire with a 404 or 410. Base
the decision on whether it is still sold, whether it duplicates another listing, and whether it has traffic
or links worth keeping. Record the decision in the sheet, so anyone repeating the check later can see
why a product was removed.
Step 6
Relink the products you are keeping
Assign
each kept product to at least one relevant category, and fix automated collection rules that stopped
matching after a tag or type was renamed. Where a theme loads listings with a button or infinite scroll,
ask your developer to also output numbered page links as normal <a href> elements.
For small ranges without a natural home, link them from a relevant category description, buying guide
or related-products block rather than a catch-all page.
Step 7
Recrawl and add an orphan check to routine work
Run the Ecommerce Crawl again from the home page and repeat the comparison. The orphan list should now contain only products you deliberately retired and are waiting to drop out. Update the sitemap and feed if your platform does not do this automatically. Then add the three-list comparison to a monthly or quarterly routine, and to the checklist for deleting collections, changing themes and running bulk product imports.
Where orphans hide on each platform
Shopify
Products only appear in listings through collections. A product with no collection is reachable through
the sitemap and, depending on the theme, through search, but not through browsing. Automated collections
based on tags are the usual source of silent drop-outs. The catch-all /collections/all page
can mask the problem, because it links to every product; if your crawl reaches products only through
that page, treat them as poorly linked.
WooCommerce
Products left in the default "Uncategorised" category, or in categories that are empty at the top level and hidden from menus, often end up orphaned. Products with catalogue visibility set to "Search results only" or "Hidden" are deliberately left out of shop listings while their pages remain live.
Custom and headless builds
Listing pages rendered only in the browser, with products fetched from an API, are the biggest risk. Check the raw HTML of a category page for product links; if they only exist after scripts run, render the listing on the server or provide paginated links.
1. If an orphan product is in my sitemap, is that enough for Google?
It is enough for Google to find and crawl the URL, but not enough to treat the page as important. Google uses internal links to understand which pages matter and how they relate to each other. A product that only exists in the sitemap has no category context and no internal links, so it often ends up in the Discovered or Crawled currently not indexed statuses. Shoppers browsing your site will never reach it either, which matters as much as the search side.
2. Why does my crawler find fewer products than my platform says I have?
The gap is usually made of orphans, products loaded only by script, and products hidden from listings but still published. It can also be caused by crawl settings, such as a page limit, a robots.txt rule blocking paginated listings, or a crawl that stopped early. Before assuming every missing product is an orphan, confirm the crawl completed, followed pagination and was allowed to fetch category pages. Then compare the lists to see which products are genuinely unreachable.
3. Does linking from the collections/all page count as fixing an orphan?
Technically the product is then linked, but the link carries little meaning. A catch-all page listing every product in one long paginated sequence gives no context about what the product is, and most products end up many clicks deep. It is better than nothing as a safety net, but each product should also sit in at least one specific, relevant category, and ideally be linked from related products or guides that match what it is.
4. Should I delete orphan products instead of relinking them?
Only if they have no reason to exist. If a product is still sold, relinking it costs little and recovers a sales route. If it is a duplicate, merge it with a redirect. If it is discontinued with no successor, no traffic and no links from other websites, retiring it is reasonable. The mistake to avoid is deleting products that still earn visits or links, which throws away value, or leaving live pages that nobody can reach.
5. Can infinite scroll cause orphan products?
Yes, and it is one of the most common hidden causes after a theme change. If further products load only when the shopper scrolls or presses a button, and there are no ordinary links to numbered pages behind the scenes, crawlers see only the first batch. Every product past that point depends on other routes, such as a second category or the sitemap. The fix is to keep crawlable paginated links alongside the scrolling behaviour, which most modern themes can support.
6. How often should I check for orphan products?
It depends on how often your catalogue changes. A shop that imports products weekly from supplier feeds should check at least monthly. A small shop that adds a few products a season can check quarterly. More important than the schedule is checking after specific events: deleting or merging collections, changing automated collection rules, switching themes, changing listing pagination, and running bulk imports. Those are the moments when orphans are created in batches rather than one at a time.
The Ecommerce Crawl maps the URLs on your store, finds faceted navigation explosion and duplicate product URLs, flags out-of-stock products, surfaces orphans and measures how efficiently your crawl is spent.
Open Ecommerce Crawl Fixes โ