ezomfy
All posts
June 28, 20266 min read

400 products, 24 indexed: the pagination problem

Infinite scroll and load-more buttons can hide most of your catalogue from Google. How to check yours in two minutes, and the canonical mistake that follows.

A

Ashraful

Shopify Select Partner

A close-up view of a laptop displaying a search engine page. — Photo by cottonbro studio on Pexels

Short answer: if you have 400 products and only the first 24 rank, your collection pagination is hiding the rest from Google. Load-more buttons and infinite scroll are pleasant for customers and invisible to crawlers, which do not scroll and do not click. Fix it by keeping real page links in the HTML even when the visible experience is a button, and by making each paginated page canonical to itself rather than to page one.

If you have a collection with 400 products and only the first 24 are ranking, this is usually why.

Pagination sounds like a design detail. It is actually the mechanism that decides whether Google ever sees most of your catalogue, and it goes wrong in a specific, common way that nobody notices because the store looks fine to a human.

What is going wrong?

Your collection page shows 24 products, then a "load more" button or an infinite scroll that fetches the next batch as you scroll.

That is pleasant for a customer. For a search engine it can mean that products 25 through 400 do not exist, because Google's crawler does not scroll and does not click. If the only route to product 300 is a JavaScript interaction, that product may never be crawled, never indexed, and never appear in search.

You have 400 products and a catalogue that behaves, from Google's point of view, like it has 24.

How do you check yours in two minutes?

No code required.

Look for real links. Open your collection page and scroll to the bottom. If you see numbered page links, or a "next" link, hover one and check the address bar shows something like ?page=2. That is a real URL and Google can follow it.

If you only see a "Load more" button with no address, or the page just keeps extending as you scroll, that is the problem shape.

Ask Google directly. Search site:yourstore.com/collections/your-collection and see roughly how many pages come back. If you have 400 products and Google shows a handful of pages, something is stopping it.

Check Search Console. Pages report, look at Discovered but not indexed and Crawled but not indexed. A pile of product URLs sitting there is a crawling problem, not a content problem.

What correct looks like

The pattern that works keeps real, crawlable links even when the visible experience is a button.

{%- paginate collection.products by 24 -%}

  {%- for product in collection.products -%}
    {%- render 'product-card', product: product -%}
  {%- endfor -%}

  {%- if paginate.pages > 1 -%}
    <nav class="pagination" aria-label="Pagination">
      {%- if paginate.previous -%}
        <a href="{{ paginate.previous.url }}" rel="prev">Previous</a>
      {%- endif -%}

      {%- for part in paginate.parts -%}
        {%- if part.is_link -%}
          <a href="{{ part.url }}">{{ part.title }}</a>
        {%- else -%}
          <span aria-current="page">{{ part.title }}</span>
        {%- endif -%}
      {%- endfor -%}

      {%- if paginate.next -%}
        <a href="{{ paginate.next.url }}" rel="next">Next</a>
      {%- endif -%}
    </nav>
  {%- endif -%}

{%- endpaginate -%}

Those are real anchors with real URLs. Google follows them and reaches every product.

You can still have your load-more button. Build it as an enhancement over these links: the links exist in the HTML, and JavaScript intercepts the click to load in place. Customers get the smooth experience, crawlers get the paths. If the JavaScript fails, the links still work, which is a bonus.

The canonical mistake that follows

The second common error, and it is the one that quietly deletes pages 2 onwards from the index.

Someone sets the canonical tag on every paginated page to point at page one:

<!-- wrong -->
<link rel="canonical" href="{{ collection.url }}">

That tells Google "pages 2 through 17 are duplicates of page 1, ignore them." Google obliges. You built the crawlable links and then instructed Google to disregard where they lead.

Each page should be canonical to itself:

<link rel="canonical" href="{{ canonical_url }}">

Shopify's canonical_url already includes the page parameter and handles this correctly. Themes break it by overriding with something hand-written.

While you are there, page 2 onwards should not carry the same title tag and meta description as page 1. Appending the page number is enough and stops them competing:

<title>
  {{ collection.title }}
  {%- if paginate.current_page > 1 %}, page {{ paginate.current_page }}{% endif -%}
</title>

How many products should be on each page?

There is a trade-off and no universally right answer.

Fewer per page means faster loading and more pages for Google to crawl through, which on a large catalogue can mean the deepest products are several clicks from anywhere.

More per page means fewer clicks to depth but a heavier page, and 100 product images on one page is its own performance problem.

Practical range: 24 to 48 for most stores. Shopify's maximum is 50.

What matters more than the number is click depth. Every product should be reachable within about three clicks of the homepage. If your deepest product is on page 17, it is effectively invisible regardless of how correct your pagination markup is. That is a navigation and collection-structure problem, and the answer is usually more, tighter collections rather than fewer huge ones.

The things worth checking today

  1. Do your collection pages have real, hoverable page links, or only a button?
  2. Does each paginated page canonical to itself, or to page one?
  3. Is your deepest product within three clicks of the homepage?
  4. Does Search Console show product URLs stuck in Discovered but not indexed?

Any one of those going the wrong way is worth a developer's afternoon, and it affects your whole catalogue rather than a single page.


We fix collection crawlability as part of Shopify SEO and theme work, and it is one of the first things our audit checks, because a store with 400 products and 24 indexed is losing more traffic than any amount of blog writing will replace.

The free store audit checks your collection pagination, canonicals, and indexation, and reports back by email. Or book a 30 minute call and we will look at your collections together. Related: structuring content with metaobjects and metafields and the four fixes that actually move Shopify speed.

Frequently asked questions

Does infinite scroll hurt SEO?

It can. Googlebot does not scroll and does not click, so if the only route to product 300 is a JavaScript interaction, that product may never be crawled or indexed. You can keep the smooth experience by building it over real page links that exist in the HTML.

How do I check if my collection pages are crawlable?

Scroll to the bottom of a collection and hover the pagination. If you see numbered links with a visible URL, crawlers can follow them. If there is only a Load more button with no address, that is the problem shape. Then check Search Console's Pages report for product URLs stuck in Discovered, currently not indexed.

Should paginated pages canonical to page one?

No, and this is the second common mistake. Canonicalising page 2 onwards to page 1 tells Google those pages are duplicates and to ignore them. You built the links and then instructed Google to disregard where they lead. Each page should be canonical to itself.

How many products per page is best?

24 to 48 for most stores; Shopify's maximum is 50. What matters more is click depth: every product should be reachable within about three clicks of the homepage. A product on page 17 is effectively invisible regardless of how correct your markup is.

Why are my products in Discovered, currently not indexed?

Google found the URL, usually from your sitemap, and has not spent crawl budget fetching it. Broken pagination is one cause, because a product linked from nowhere gets no priority. Site authority is the other.

A

About the author

Ashraful

Shopify Select Partner, Top Rated Plus on Upwork. 700+ Shopify projects shipped over 7+ years: themes, apps, migrations, speed, Hydrogen. Solo shop, no agency middlemen.

Read the full story

Working on a Shopify project?

That's what I do every day. Pick whichever feels lower-friction.