# Internal Linking: What It Is and How to Use It in a Store

> What internal linking is, how Google uses it to discover pages and gauge their importance, which links it cannot follow and how to audit it in your store.

URL: https://clione.ai/glossary/internal-linking/
Lang: en

In an online store, internal linking is everything that takes you from one page to another without leaving the site: the menu, the [category page](/glossary/category-page/) that links to each product, the [breadcrumbs](/glossary/breadcrumbs/), the related products and the links inside a description or a guide. For the shopper it is how they get around. For a search engine it is something more: **the map it uses to discover your pages and decide which ones weigh more**. A [product page](/glossary/product-page/) that no link leads to exists for whoever has the URL, and for almost nobody else.

## How it works

Google knows some pages because it has already visited them. **The rest it discovers when it extracts a link from a known page to a new one**, or when you send it a list of URLs in an [XML sitemap](/glossary/xml-sitemap/).[^google-how-search-works] Beyond discovery, links also serve as a signal for judging how relevant pages are.[^google-links]

For a store, Google spells out three things.[^google-site-structure]

- **Importance is distributed through links.** The more links a page receives within a site, the more relative importance it has compared with the others. That is why it recommends linking a best-selling product from the homepage or from other content, such as articles or newsletters.
- **The hierarchy runs from the menu to the product page**: links from the menu to categories, from categories to subcategories and from subcategories to all the product pages. If a category does not link directly to all its products, **[Googlebot](/glossary/googlebot/) may not find all of them by crawling alone**. When you cannot link everything, the alternative is a sitemap or a [Google Merchant Center](/glossary/google-merchant-center/) _feed_.
- **URL structure does not count as hierarchy.** Google, in general, does not look at the folders in a URL to understand a site's structure: it analyzes the links between pages.

Its minimum rule is simple: **every page you care about has to receive at least one link from another page on your site**. There is no ideal number of links per page, and Google adds that if they seem like too many to you, they probably are.[^google-links]

### What counts as a link

Google only reliably follows `<a>` elements with an `href` attribute. These are links it can follow and links it cannot:[^google-links]

```html
<!-- Yes -->
<a href="https://store.example/backpacks">Backpacks</a>
<a href="/backpacks/camera">Camera backpacks</a>

<!-- No -->
<a routerLink="backpacks/camera">Camera backpacks</a>
<span href="/backpacks/camera">Camera backpacks</span>
<a onclick="go('/backpacks/camera')">Camera backpacks</a>
```

A link that JavaScript inserts counts if it ends up as a normal `<a href>`: Googlebot renders the page and looks for links again in the resulting HTML.[^google-js-seo] But Google also reminds you that **not all [bots](/glossary/web-crawler/) can run JavaScript**,[^google-js-seo] and for those, a link that is not in the source HTML does not exist.

### The link text

A link's visible text tells people and Google something about the page it points to. Google wants it descriptive, reasonably short and related to the destination, with no generic phrases like "click here" or "read more," and it suggests a test: **read only the link text, out of context, and see whether it makes sense**. On a linked image, the link text is its `alt` attribute, the [alt text](/glossary/alt-text/). And it warns against the opposite excess: stuffing links with keywords is padding.[^google-links]

## In a store

A **fictional example**: the links that lead to a camera backpack's product page on a Shopify store, and who can follow each one.

| Link                             | Where it is                                  | In the source HTML                          | Link text                     |
| -------------------------------- | -------------------------------------------- | ------------------------------------------- | ----------------------------- |
| Menu › Photography › Backpacks   | On every page                                | Yes, if the theme writes it with `<a href>` | The name of each category     |
| "Camera backpacks" category      | The product list                             | Yes, in a standard theme                    | The product name              |
| Breadcrumbs                      | The product page itself, upward              | Yes                                         | Home, Photography, Backpacks  |
| Related products                 | The block at the foot of other product pages | No: it arrives later, with JavaScript       | The product name              |
| "How to choose a backpack" guide | A link inside the text                       | Yes                                         | "backpacks with a rain cover" |

The fourth row is the one that surprises. In Shopify themes, the related products block **is not filled in when the page is generated**: the theme has to request it with JavaScript from the recommendations API, and Shopify recommends planning for an empty state or not showing the section, because recommendations load asynchronously.[^shopify-recommendations] Those links help the shopper, and Google can see them when it renders, but **a product reachable only from that block is not well linked**: what holds it up is the category.


Thinking that anything that takes you to another page when you tap it is a link. A product card that navigates with `onclick`, a "See more" button or pagination that only works with JavaScript take the person to the destination, but Google cannot reliably follow them: it needs an `<a>` with `href`.[^google-links] For the shopper there is no difference; for crawling, **that product page is as isolated as if there were no link at all**.


## How to check it

1. **Get from the homepage to a product page using only links**, without the internal search, and count the clicks. If there is no path, Google depends on the sitemap to find it.[^google-site-structure]
2. **Repeat the route with JavaScript turned off** (in Chrome, from the developer tools). What you cannot navigate that way, a [bot](/glossary/web-crawler/) that does not run JavaScript cannot either.[^google-js-seo]
3. **Open the source code** (Ctrl+U) of a category and search for a product's name: it has to be inside an `<a href>`.[^google-links]
4. **Read only the link texts** on a product page and a category. If any does not say where it goes, rewrite it.[^google-links]
5. **Cross your sitemap with the linked pages.** A desktop [crawler](/glossary/web-crawler/) gives you the list of URLs it reaches by following links; the sitemap's product pages that do not show up in it receive no internal link.

## Related concept: XML sitemap

The sitemap and internal linking serve the same purpose at first, getting the search engine to discover your URLs, which is why they get confused. **The sitemap is a list; internal linking is a structure.** The sitemap gives Google the addresses, but does not tell it which ones matter most or what each is about. Links do: the number of links a page receives gives it its weight within the site, and each link's text describes the destination.[^google-site-structure][^google-links] Google treats the sitemap as **the alternative for what you cannot link**, not as a substitute for links.[^google-site-structure]

To go further, the [reading path for this topic](/learn/crawling-and-indexing/) orders the rest of the terms, up to [indexing](/glossary/indexing/), and the guide to [what an AI crawler sees in your store](/guides/what-an-ai-crawler-sees/) checks it page by page.
