Category page SEO: the page that ranks for the product type

This is how to make your category page rank for the product type. You will set the title and H1, write a short intro, link to subcategories and top products, and tame filters and pagination. It uses Google’s e‑commerce guidance as of 2026 and works on Shopify and custom stacks.

By , founder of Porteur · Updated 14 September 2026 · Markdown

Why impressions rise without clicks

People type the product type when they start. “running shoes”, “usb c hubs”, “ceramic mugs”. They want a set to compare, not one SKU.

Google’s e‑commerce guidance backs this. Use real category pages with crawlable links, not only filters. Categories capture generic intent, products capture model intent.

So your category page should be the page that ranks for the product type. One page per type, with enough on it to satisfy a first look and guide the click deeper.

The blueprint of a high-performing category page

  • A clear H1 that names the product type, for example “Running shoes”.
  • A short introduction: two or three sentences on what the category holds and how to choose.
  • Links to subcategories, where they exist, for example “Men’s”, “Women’s”, “Trail”, “Road”.
  • A grid of top products with price, availability and review count pulled from the product pages.
  • Helpful filters for users. Keep them from creating indexable duplicates unless the combination has demand.
  • Pagination that lets every page be indexed or a view-all when it loads fast.
  • Breadcrumbs in the page and as structured data.
  • Fast image and script delivery, or the grid will miss Core Web Vitals. Aim for 2.5 seconds LCP, 0.1 CLS and 200 ms INP.

A good category page answers: what is here, what are the main choices, what are the top picks, how do I narrow. It should not feel like an empty grid with 100 thin pages behind it.

Titles, H1s and meta descriptions that earn the click

Your title carries the product type and one or two qualifiers users type. Keep it under about 60 characters. Do not stuff variants or brands with commas.

  • Title pattern: “Running shoes for road and trail | Men’s and women’s”.
  • H1: “Running shoes”. Keep it plain. The H1 and title do not need to match word for word.
  • Meta description: one sentence on the range and how you help them choose. About 120 to 155 characters.
  • On Shopify, edit the title and description in the collection settings. Keep the handle short, for example /collections/running-shoes.

Check the Search Console Performance report after indexing. If impressions rise without clicks, tighten the title. If queries show brand bias, add a brand mention in the title only when you stock it in depth.

Write the short introduction users and Google expect

Two or three sentences are enough. Say what is in the category and how to choose. Mention key subtypes that map to your subcategories and popular filters. Do not write an essay that pushes the products below the fold.

Example intro on /collections/running-shoes:

Running shoes for road, trail and everyday training. Pick by surface, support and drop, then filter by size and brand. Men’s and women’s styles in stock.

Place the intro under the H1, above the grid. If you add longer advice, put it below the grid in an expandable panel, not as the main block. Keep the advice unique to the category, not pasted across many pages. Google’s spam policies target scaled content that exists only to rank, not to help.

Pagination that can rank

Large categories need pages. Each paginated page should be indexable with its own canonical to itself. You can also offer a view-all page when it loads fast. Do not rely on rel next or prev. Google stopped using them in 2019.

  • Keep the H1 the same across pages. Add the page number to the title at the end if you see page 2 ranking.
  • Ensure the first page is not canonicalised to page 2 and vice versa.
  • Link pages 1, 2, 3, last, and provide prev and next links for users.
  • If you support view-all, keep it indexable only when it meets Core Web Vitals.

Filters without index bloat

Faceted navigation creates many URLs. Google’s guidance: index only the facet combinations with search demand. Keep the rest out. Avoid infinite combinations. Keep the canonical on the unfiltered category. Use fragments only for facets that must not be crawled.

  1. Map demand before you open filters to crawl

    List queries like “nike running shoes”, “wide running shoes”, “trail running shoes waterproof”. Keep only these as indexable filtered URLs.

  2. Pick one URL pattern per filter

    Use a consistent parameter, for example ?brand=nike or /running-shoes/brand/nike. Do not mix forms. Keep parameters minimal and in a fixed order.

  3. Block the rest from crawling or indexing

    Use robots.txt to disallow noisy parameter patterns, for example Disallow: /*?sort= and Disallow: /*?page_size=. For already discovered URLs, set noindex.

  4. Keep canonicals stable

    Every filtered page should canonical to the unfiltered category, unless it is one of the few you want indexed. Those should canonical to themselves.

  5. Avoid generated thin pages

    Do not create hundreds of near-empty brand or tag pages. Shopify tag and vendor archives often do this. Remove them or noindex them.

This keeps crawl budget on pages that matter and avoids index bloat. It also respects Google’s spam policies on scaled content abuse. A facet page should exist because users want it, not because a script made it.

Data and markup: what belongs on category pages

Share product data on the product pages with structured data. Use Product markup with offers, availability, price and reviews there. Category pages do not represent a single product, so do not add Product markup to them. Use BreadcrumbList. ItemList is optional and does not produce a rich result as of 2026.

  • Keep prices, availability and ratings consistent between the product grid, the product page and your Merchant Center feed. The feed must match the page.
  • Show real review counts in the grid. Put AggregateRating only on product pages, not on the category.
  • Use descriptive alt text on category images and product thumbnails, for example “men’s trail running shoes, black”.
  • Include breadcrumbs on every product and category. Users need them and Google uses them.
  • For out of stock products in the grid, mark status on the product page with structured data and show alternatives. Do not 404 items that will return.

Shopify and URL hygiene for categories

Shopify uses fixed paths: /collections/handle for categories and /products/handle for products. /collections/handle/products/handle will canonical to /products/handle. Link to the canonical paths in menus and content.

  • Set the collection handle to the query, for example /collections/running-shoes.
  • Edit title and description in the collection. Keep the H1 and title aligned with the query.
  • Use robots.txt.liquid to disallow noisy parameters from filters and sort orders you do not want crawled.
  • Use Shopify redirects to retire old category URLs, 301 to the closest match. Do not fan all removed pages to the homepage.
  • Check your theme’s structured data. Most add breadcrumbs and product schema. Ensure product schema appears only on product templates.

Shopify tag and vendor pages can create thin URLs. Remove navigation to them or noindex them unless they map to real demand. Keep one URL per product. Variants get their own URL only when users search for them by attribute, otherwise canonical to the parent.

Page speed on category pages

Category grids are heavy. Many images, scripts for filters and carousels, third-party widgets. If the grid is late, LCP fails and rankings suffer. Fix speed here first, not only on product pages.

  • Budget the LCP element. Make the main hero or first product tile load fast. Aim for 2.5 seconds LCP.
  • Lazy-load images below the fold. Preload the first row thumbnails.
  • Compress and resize all thumbs for the grid. Serve modern formats.
  • Delay non-critical scripts. Remove third-party widgets that do not earn revenue.
  • Keep layout stable. Set image dimensions to prevent CLS. Keep INP under 200 ms by keeping filter scripts light.
  • Test on PageSpeed Insights for the category URL, mobile first. Watch the real-user Core Web Vitals data, not only the lab run.

A fixed page shows products above the fold, responds quickly to filter clicks, and does not jump. The PageSpeed Insights report reads green on the Core Web Vitals section for mobile.

Worked example: the running shoes category

Site: yourstore.com. Category URL: /collections/running-shoes. The goal: rank for “running shoes” and related types, then route users to the right subcategory or product.

ElementBeforeAfter
TitleRunning shoes and trainers for everyoneRunning shoes for road and trail | Men’s and women’s
H1TrainersRunning shoes
IntroWelcome to our great range of footwear with brands for allRunning shoes for road, trail and daily training. Pick by surface, support and drop. Filter by size and brand. Men’s and women’s in stock.
SubcategoriesNoneTiles: Men’s running shoes, Women’s running shoes, Trail running shoes, Road running shoes
Top productsGeneric “Popular now” sliderGrid of 12 bestsellers with price and availability
FiltersAll filters crawlable with random parametersIndex only brand pages with demand, for example /collections/running-shoes?brand=nike, block sort and page size params
PaginationNoindex page 2 and 3Indexable pages with self canonicals. Title on page 2: “Running shoes, page 2”
Speed8 MB images, CLS jumps on filter changeOptimised thumbnails, fixed image sizes, filter scripts defer. LCP under 2.5 s on mobile.

After these changes, expect impressions for “running shoes” and “trail running shoes” to accrue to the category and subcategories, not to scattered tag pages. Clicks improve when the title matches the query and the page loads fast. Track it in Search Console after 28 days.

Questions

Sources

Check my site, free

Send your category URL and see three findings on titles, links and speed in about thirty seconds, free.

  • Free check, no card
  • Read-only, your own accounts
  • Readable by your agent

Read next