---
title: "Build category pages that rank for the searches your shoppers start with"
description: "Set category page titles, copy, links, pagination, and filter handling so each category ranks for its head term and shows the right products."
canonical: "https://scalewithsearch.com/articles/ecommerce-category-page-seo"
date: "2026-03-20"
modified: "2026-09-25"
---
## Site navigation

- [Scale With Search](https://scalewithsearch.com/)
- Real estate
  - Real estate
    - [Real estate](https://scalewithsearch.com/for/real-estate)
- Work
  - Start here
    - [Send your brief](https://scalewithsearch.com/work#send-your-brief)
    - [Prepare your six-question brief](https://scalewithsearch.com/work#prepare-your-six-question-brief)
  - Build
    - [Site build, content library with SEO, signal desk](https://scalewithsearch.com/work)
- For your business
  - Trades and home services
    - [Auto body and collision shops](https://scalewithsearch.com/for/auto-body-and-collision-shops)
    - [Foundation and home repair contractors](https://scalewithsearch.com/for/foundation-and-home-repair)
    - [Garage door and fencing contractors](https://scalewithsearch.com/for/garage-door-and-fencing-contractors)
    - [HVAC contractors](https://scalewithsearch.com/for/hvac-contractors)
    - [Janitorial and commercial cleaning companies](https://scalewithsearch.com/for/janitorial-and-commercial-cleaning)
    - [Locksmiths](https://scalewithsearch.com/for/locksmiths)
    - [Moving companies](https://scalewithsearch.com/for/moving-companies)
    - [Pest control companies](https://scalewithsearch.com/for/pest-control-companies)
    - [Plumbing and electrical contractors](https://scalewithsearch.com/for/plumbing-and-electrical-contractors)
    - [Restoration and water or fire damage companies](https://scalewithsearch.com/for/restoration-and-water-fire-damage)
    - [Roofing companies](https://scalewithsearch.com/for/roofing-companies)
    - [Towing companies](https://scalewithsearch.com/for/towing-companies)
    - [Tree services and landscaping companies](https://scalewithsearch.com/for/tree-services-and-landscaping)
    - [Solar installers](https://scalewithsearch.com/for/solar-installation)
    - [General contractors](https://scalewithsearch.com/for/general-contractors-and-construction)
    - [Paving, concrete, and flooring contractors](https://scalewithsearch.com/for/paving)
  - Practices and professional services
    - [Bookkeeping and tax practices](https://scalewithsearch.com/for/bookkeeping-and-tax-practices)
    - [Dental practices](https://scalewithsearch.com/for/dental-practices)
    - [Family and criminal defense law firms](https://scalewithsearch.com/for/family-and-criminal-defense-law-firms)
    - [Med spas and aesthetics practices](https://scalewithsearch.com/for/med-spas-and-aesthetics)
    - [Personal injury law firms](https://scalewithsearch.com/for/personal-injury-law-firms)
    - [Veterinary clinics](https://scalewithsearch.com/for/veterinary-clinics)
    - [Gyms and fitness studios](https://scalewithsearch.com/for/fitness)
    - [Therapy and outpatient health practices](https://scalewithsearch.com/for/therapy-and-outpatient-health)
    - [Medical billing companies](https://scalewithsearch.com/for/medical-billing)
    - [Insurance agencies](https://scalewithsearch.com/for/insurance-agencies)
    - [Financial advisors](https://scalewithsearch.com/for/financial-advisors)
    - [Property management companies](https://scalewithsearch.com/for/property-management)
    - [Recruiting and staffing agencies](https://scalewithsearch.com/for/recruiting-and-staffing)
    - [Architects and interior designers](https://scalewithsearch.com/for/architects-and-interior-designers)
    - [Logistics and supply chain companies](https://scalewithsearch.com/for/logistics-and-supply-chain)
  - Agencies, MSPs, and manufacturing
    - [IT and managed service providers](https://scalewithsearch.com/for/it-and-managed-service-providers)
    - [Machine shops and precision manufacturers](https://scalewithsearch.com/for/machine-shops-and-precision-manufacturing)
    - [Marketing agencies and freelancers](https://scalewithsearch.com/for/marketing-agencies-and-freelancers)
    - [SEO agencies and consultants](https://scalewithsearch.com/for/seo-agencies-and-consultants)
    - [Small manufacturers and fabricators](https://scalewithsearch.com/for/small-manufacturers-and-fabricators)
  - Restaurants, shops, studios, and nonprofits
    - [Restaurants and hospitality businesses](https://scalewithsearch.com/for/restaurants-and-hospitality)
    - [Retail stores and ecommerce sellers](https://scalewithsearch.com/for/retail-and-ecommerce)
    - [Photographers, event planners, and travel agents](https://scalewithsearch.com/for/photographers)
    - [Churches and nonprofits](https://scalewithsearch.com/for/churches-and-nonprofits)
  - [All industries](https://scalewithsearch.com/for/)
- Learn
  - For your office
    - [Office job guides](https://scalewithsearch.com/guides/)
    - [Browser calculators](https://scalewithsearch.com/tools/)
  - Start here
    - [How it works](https://scalewithsearch.com/how-it-works)
    - [Free Starter Kit](https://scalewithsearch.com/kit/business-memory-starter-kit.zip)
    - [Synthetic specimen](https://scalewithsearch.com/specimen/working-session-specimen.zip)
  - Guides
    - [The Complete Guide to Business Memory for AI Agents](https://scalewithsearch.com/articles/business-memory-for-ai-agents-guide)
    - [The Complete Small-Business Guide to AI Agent Governance](https://scalewithsearch.com/articles/ai-agent-governance-guide-small-business)
    - [The Complete Guide to Leaving Vendor AI Memory](https://scalewithsearch.com/articles/leaving-vendor-ai-memory-guide)
  - Articles by cluster
    - [Business memory](https://scalewithsearch.com/articles/business-memory-for-ai-agents-guide)
    - [Agent governance](https://scalewithsearch.com/articles/ai-agent-governance-guide-small-business)
    - [Migration and ownership](https://scalewithsearch.com/articles/leaving-vendor-ai-memory-guide)
  - For machines
    - [llms.txt](https://scalewithsearch.com/llms.txt)
    - [llms-full.txt](https://scalewithsearch.com/llms-full.txt)
    - [Machine view](https://scalewithsearch.com/?view=machine)
- Company
  - Evidence
    - [Proof](https://scalewithsearch.com/proof)
  - Company
    - [About](https://scalewithsearch.com/about)

# Build category pages that rank for the searches your shoppers start with.

A shopper types "women's waterproof hiking boots." The search does not name a product. It names a group of products. The page that answers it is a category page. On many stores, that page is a product grid with a heading, a filter panel, and nothing else.

Category pages usually target the broadest commercial searches a store can win. Product pages target model names and exact attributes. Category pages target the terms shoppers use before they know which model they want. When the category template is weak, the store loses those searches to marketplaces and competitors, even when its products are better.

This article shows you how to set up a category page with one search target and a crawlable product list. It also shows the links that connect the page to the rest of the catalog.

## Give each category one search target

Start with a map. List every category and subcategory, and assign each one the search phrase it answers. Use your keyword research tool for volumes, and check the live results for each phrase.

Two checks decide the target. First, the results must show category-style pages: lists of products from several brands or models. If the results show single products or articles, the phrase belongs to a different page type. Second, no other page on your site should target the same phrase. Two categories that compete for one phrase split their signals. For the detection method, read [keyword cannibalization detection](/articles/keyword-cannibalization-detection).

Some categories have no search demand of their own. A category called "New for spring" helps navigation but answers no query. Keep it for shoppers, and do not spend optimization effort on it.

## Write the title, H1, and introduction

Put the target phrase in the title tag and the H1. Keep the title readable: the phrase, one qualifier that matters to the shopper, and the store name. An example title is "Women's Waterproof Hiking Boots | [Store name]." The H1 can be shorter: "Women's waterproof hiking boots."

Add a short introduction above the product grid. Two to four sentences are enough. State what the category contains and how it differs from its neighbors. Name the choices the shopper faces. An example: "Waterproof boots with a membrane liner, in mid and high cuts. For trail runners, see trail shoes. Filter by width if you need wide or narrow fits."

Do not push the products below the fold with a long block of text. Shoppers came for the grid. If the category needs more explanation, such as a sizing note or a materials comparison, place it below the grid.

## Make the product list crawlable

Google must be able to find every product through links. Check three things.

First, each product in the grid is a plain link with an `href` to the product URL. A click handler without an `href` is not a link that Google follows.

Second, the grid is present in the HTML that Google renders. If the grid loads from an API after page load, test the page with the Search Console URL Inspection tool. Confirm that the rendered HTML contains the products.

Third, every product is reachable from some category page within a few clicks. A product that appears only in site search or in a filter result may never be found. For how link depth works across a whole site, read [internal linking architecture for developers](/articles/internal-linking-architecture-developers).

## Handle pagination the way Google documents it

Large categories span several pages. Google's ecommerce documentation on pagination sets the rules. Give each page in the sequence its own URL, for example `?page=2`. Link the pages to each other with plain links. Give each page its own canonical URL. Do not point page 2 and later pages at page 1 as their canonical. That canonical hides the products on those pages.

Google stopped using `rel="prev"` and `rel="next"` as an indexing signal in 2019. You can keep the tags for other consumers, but they do not replace crawlable links.

If you use infinite scroll or a "load more" button, keep a paginated URL behind each batch. Google's documentation notes that its crawlers do not usually trigger JavaScript that needs a user action. It suggests sitemaps or Google Merchant Center feeds so that Google finds all products (checked September 2026).

## Keep filters from creating duplicate categories

Filters for size, color, brand, and price create new URLs on most platforms. A category with 12 colors and 40 sizes can produce hundreds of filter combinations. Most of them are near-duplicates of the category page.

Decide which filter pages deserve to be indexable landing pages. Keep the rest out of the index and out of the crawl. The full method is in [faceted navigation for ecommerce SEO](/articles/ecommerce-seo-faceted-navigation). For the category page, the rule is short. The unfiltered category URL is the canonical page for its target phrase. A sort parameter such as `?sort=price-asc` changes the order, not the content, so its canonical points to the unfiltered URL.

## Link the category into the catalog

A category page is a hub. Link it in four directions:

- up, to its parent category, through breadcrumbs;
- down, to its subcategories, in a visible list above or beside the grid;
- across, to closely related categories, where a shopper might go next;
- out, to buying guides and how-to articles that help shoppers choose within the category.

Add `BreadcrumbList` markup that matches the visible breadcrumb trail. Google documents breadcrumb markup as eligible for a breadcrumb display in desktop results (checked September 2026). The markup details are in [ecommerce schema markup](/articles/ecommerce-schema-markup).

Link each product back to its main category from the product page. That link confirms the hierarchy and gives shoppers a path back to the grid. The product side of this is in [ecommerce product page optimization](/articles/ecommerce-seo-product-page-optimization).

## Deal with thin and empty categories

A category with one or two products gives shoppers little choice and gives search engines little reason to rank it. Merge it into its parent, or keep it for navigation and mark it `noindex` until it grows.

A category that becomes empty needs a decision. If the products return soon, keep the page live and say so. If the category is gone for good, redirect it with a 301 to the closest remaining category. A page that says "no products found" and returns status 200 looks like a soft 404 to Google.

## Worked example: one category template pass

The inputs are hypothetical. A store sells hiking boots in 40 sizes and 12 colors, for men and women, in waterproof and non-waterproof models. It has 6 categories and about 300 products.

**Step 1: map targets.** The owner lists the 6 categories. Four have clear search phrases, such as "women's waterproof hiking boots." One, "Trail favorites," has no search demand, so it stays as a navigation page. One, "Wide hiking boots," competes with a filter page for the same phrase. The owner makes the category the canonical page for "wide hiking boots" and keeps the width filter as a filter.

**Step 2: fix the template.** The developer changes the title pattern to "[Target phrase] | [Store name]" and makes the H1 the target phrase. The template gets an introduction field above the grid and a longer text field below it. The developer confirms that each product tile is a plain link and that the rendered HTML contains the grid.

**Step 3: fix pagination.** The largest category has 90 products at 24 per page, so it spans 4 pages. The developer removes the canonical tags that pointed pages 2 to 4 at page 1, and gives each page a self-referencing canonical.

**Step 4: fix filters.** The developer points the canonical of every sort URL at the unfiltered category. The color and size filters get the faceted navigation rules.

**Step 5: link and mark up.** The template gets breadcrumbs with `BreadcrumbList` markup and a subcategory list. A "Related" block links to two sibling categories and one buying guide.

**Step 6: measure.** The owner records, for each category, the Search Console impressions, clicks, and average position for its target phrase before the release. Four and eight weeks after the release, the owner compares the same numbers. The example stops at the measurement; the result depends on the store and its competitors.

## Check the template before and after release

Before release, test one category of each size in the URL Inspection tool and in Google's Rich Results Test. Confirm the rendered grid, the canonical URL, and the breadcrumb markup.

After release, watch three reports in Search Console. The Performance report, filtered to category URLs, shows impressions and clicks for the target phrases. The Page indexing report shows whether paginated pages and category pages are indexed, and whether filter URLs are excluded as intended. The Crawl stats report shows whether Googlebot now spends less time on filter URLs.

Fix the template, not each page. A category template change reaches every category at once. That reach is why this work usually returns more per hour than a hand edit of each category.

----

```text
                  .|########||.                                       .|########||.                                       .|########||.
               |##||.      .||##|.                                 |##||.      .||##|.                                 |##||.      .||##|.
             |#|.              .|#|.                             |#|.              .|#|.                             |#|.              .|#|.
           |#|                    |#|                          |#|                    |#|                          |#|                    |#|
         .#|                        |#.                      .#|                        |#.                      .#|                        |#.
        .#.                          .#|                    .#.                          .#|                    .#.                          .#|
       |#.                            .#|                  |#.                            .#|                  |#.                            .#|
      |#             ......             #|                |#             ......             #|                |#             ......             #|
     .#           ||#########|           #|              .#           ||#########|           #|              .#           ||#########|           #|
    .#.         |######||######|.        .#.            .#.         |######||######|.        .#.            .#.         |######||######|.        .#.
    #.        .##|###|##|#|######|        .#            #.        .##|###|##|#|######|        .#            #.        .##|###|##|#|######|        .#
   ||        |##|#||||||||||||#||#|        ||          ||        |##|#||||||||||||#||#|        ||          ||        |##|#||||||||||||#||#|        ||
   #        |#||||||||||||||||||||#|        #.         #        |#||||||||||||||||||||#|        #.         #        |#||||||||||||||||||||#|        #.
  ||       |#||||||||||||||||||||||#|       ||        ||       |#||||||||||||||||||||||#|       ||        ||       |#||||||||||||||||||||||#|       ||
  #       .#||||||||||||||||||||||||#|       #        #       .#||||||||||||||||||||||||#|       #        #       .#||||||||||||||||||||||||#|       #
 ||   ....|||#||||||##|#|||#|#||##||||....|. ||      ||   ....|||#||||||##|#|||#|#||##||||....|. ||      ||   ....|||#||||||##|#|||#|#||##||||....|. ||
 #.  .  ....|#  ....#|||   ||| .#|||  ....#. .#      #.  .  ....|#  ....#|||   ||| .#|||  ....#. .#      #.  .  ....|#  ....#|||   ||| .#|||  ....#. .#
 #   .  ||||#| .#####||  . .#| .#|||  ||||#   #.     #   .  ||||#| .#####||  . .#| .#|||  ||||#   #.     #   .  ||||#| .#####||  . .#| .#|||  ||||#   #.
.|   |||||  #. |#|||||. ||  #. |#||. .|||||   ||    .|   |||||  #. |#|||||. ||  #. |#||. .|||||   ||    .|   |||||  #. |#|||||. ||  #. |#||. .|||||   ||
||   |....  #. ....|#.      |. ...|. ....||   ||    ||   |....  #. ....|#.      |. ...|. ....||   ||    ||   |....  #. ....|#.      |. ...|. ....||   ||
#.  .||||||##||||||##||####|||||||#||||||#|   .#    #.  .||||||##||||||##||####|||||||#||||||#|   .#    #.  .||||||##||||||##||####|||||||#||||||#|   .#
#    .||####|###########################|.     #    #    .||####|###########################|.     #    #    .||####|###########################|.     #
#      .#||||||.#.|| # |. ..# #| #|||||#|      #    #      .#||||||.#.|| # |. ..# #| #|||||#|      #    #      .#||||||.#.|| # |. ..# #| #|||||#|      #
#      .#|||||| ..  |# ## |#| ...#|#|||#|      #    #      .#|||||| ..  |# ## |#| ...#|#|||#|      #    #      .#|||||| ..  |# ## |#| ...#|#|||#|      #
#      .#|||#|# .# .#| #| ##|.#..#|||||#|      #    #      .#|||#|# .# .#| #| ##|.#..#|||||#|      #    #      .#|||#|# .# .#| #| ##|.#..#|||||#|      #
#      .#||||||############|######|||||#|      #    #      .#||||||############|######|||||#|      #    #      .#||||||############|######|||||#|      #
#   |...||#||||||#||||#|#||||||#|||||#||| |.|  #    #   |...||#||||||#||||#|#||||||#|||||#||| |.|  #    #   |...||#||||||#||||#|#||||||#|||||#||| |.|  #
#. .. ||||# .|||##|.  |#| .|| || .|||#. #|  # .#    #. .. ||||# .|||##|.  |#| .|| || .|||#. #|  # .#    #. .. ||||# .|||##|.  |#| .|| || .|||#. #|  # .#
|| |  ...||  ...##| |  #| .|. |. #####  .. .| ||    || |  ...||  ...##| |  #| .|. |. #####  .. .| ||    || |  ...||  ...##| |  #| .|. |. #####  .. .| ||
|| ||||| || ||||#|  .  |. |. |#. ||||| |#| || ||    || ||||| || ||||#|  .  |. |. |#. ||||| |#| || ||    || ||||| || ||||#|  .  |. |. |#. ||||| |#| || ||
.# |.....#|....|#.||||.|||##.|#|....||.#||.#. #.    .# |.....#|....|#.||||.|||##.|#|....||.#||.#. #.    .# |.....#|....|#.||||.|||##.|#|....||.#||.#. #.
 #.|||||||#############################| ||| .#      #.|||||||#############################| ||| .#      #.|||||||#############################| ||| .#
 ||       ##||#||#||||||#||#||#||#||##.      ||      ||       ##||#||#||||||#||#||#||#||##.      ||      ||       ##||#||#||||||#||#||#||#||##.      ||
  #       .#|||||||||#||#|||||||||||#|       #        #       .#|||||||||#||#|||||||||||#|       #        #       .#|||||||||#||#|||||||||||#|       #
  ||       |#||||||||||||||||||||||#|       ||        ||       |#||||||||||||||||||||||#|       ||        ||       |#||||||||||||||||||||||#|       ||
  .#        |#||||||||||||||||||||#|        #.        .#        |#||||||||||||||||||||#|        #.        .#        |#||||||||||||||||||||#|        #.
   ||        |#||||||||||||||||||#|        ||          ||        |#||||||||||||||||||#|        ||          ||        |#||||||||||||||||||#|        ||
    #.        .######|#|#########|        .#            #.        .######|#|#########|        .#            #.        .######|#|#########|        .#
    .#.         |#####||||#####|         .#.            .#.         |#####||||#####|         .#.            .#.         |#####||||#####|         .#.
     |#           ||########||           #.              |#           ||########||           #.              |#           ||########||           #.
      |#             ......             #|                |#             ......             #|                |#             ......             #|
       |#.                            .#|                  |#.                            .#|                  |#.                            .#|
        |#.                          .#.                    |#.                          .#.                    |#.                          .#.
         .#|                        |#.                      .#|                        |#.                      .#|                        |#.
           |#|                    |#|                          |#|                    |#|                          |#|                    |#|
            .|#|.              .|#|.                            .|#|.              .|#|.                            .|#|.              .|#|.
               |##||.      .||##|                                  |##||.      .||##|                                  |##||.      .||##|
                 .||########||.                                      .||########||.                                      .||########||.

Scale With Search  2026  [scalewithsearch.com](https://scalewithsearch.com)
```
