Module 060 Intermediate 13 min read

Category Page Optimization

Category pages as money pages: unique intro copy, category-level schema, internal linking discipline, and where to place supporting content.

By SEO Mastery Editorial

Category pages — product list pages, PLPs, collections, “shop all” pages — are the highest-revenue surface in e-commerce SEO. They target the head of demand (“running shoes,” “wireless headphones,” “nightstands”), they convert at 2-4× the rate of blog content, and they are where most retailers hide a 12-row product grid behind 800 words of stuffed copy. This module fixes that.

TL;DR

  • Category pages target commercial intent at the head. A ranking PLP for “running shoes” outearns a ranking PDP for “Brooks Ghost 16 men’s size 10” by 50-100×. Treat them as your money pages, not as glorified directories.
  • Unique editorial copy is mandatory and goes above the grid. 100-200 words of buyer-helpful framing — sizing tips, materials guide, season notes — separates ranking PLPs from no-traffic ones. Below-the-fold hidden copy underperforms.
  • CollectionPage + ItemList schema is the 2026 standard. It feeds AI Overviews and gets your category cited as a starting point for shopping queries.

The mental model

A category page is like a department-store floor manager during peak season. Their job is not to sell one item; it is to point each shopper to the right aisle, fast, with confidence. They know which models suit narrow feet, which colors are still in stock, and which brand they’d buy themselves. They show their reasoning, then step out of the way.

A bad PLP is the opposite — a clerk who reads you the same brochure for every shoe in the room and never points to the wall. A good PLP frames the decision in three sentences, then surfaces 12-24 well-organized options with the signals (price, rating, badge) the buyer actually scans for.

The reason category pages outrank PDPs on head terms: head queries express category intent, not SKU intent. “Running shoes” wants a list and a guide; “Brooks Ghost 16 men’s 10D” wants one product. Match the intent or lose to whoever does.

Deep dive: the 2026 reality

Google’s commercial-intent classification distinguishes three SERP shapes for shopping queries: Product Pack (PDP-flavored, Amazon and Walmart dominate), Refinement Carousel (PLP-flavored, retailers and review sites dominate), and Information Hub (guide-flavored, editorial sites dominate). Head terms — “running shoes,” “office chairs,” “espresso machines” — increasingly trigger the Refinement Carousel, with AI Overviews layered on top.

AI Overviews on category queries cite 2-4 sources by default in tested SERPs as of Q1 2026. The pattern: one editorial guide (Wirecutter, Wired, Tom’s Guide), one or two retailer category pages with clean schema, and sometimes a Reddit thread. Retailers without CollectionPage + ItemList markup do not appear in this citation set.

The Helpful Content classifier treats category pages as a high-risk surface because they are the most templatable. The 2024 March update demoted dozens of mid-market retailers running auto-generated PLP intros from a content-spinner. Distinguishing markers Google appears to weight:

  • Original imagery in the intro (not stock).
  • Editorial signals: byline, last-updated date, “we tested” or “we stocked since” framing.
  • Real merchandising: products visible above the fold, not buried under 1200 words of intro.
  • Internal link diversity: category linking out to specific guides, related categories, and the right sub-categories.

Pagination continues to be misunderstood. Google deprecated rel="next"/rel="prev" in 2019 and never reinstated them. The current best practice: paginate with crawlable <a> links (/category?page=2), self-canonicalize paginated pages (do not canonicalize page=2 to page=1), and use View All only when the full grid renders under 100 products.

Faceted state on category pages deserves its own module (61). The PLP question here is: which subset of facets, if any, deserve their own indexable URL? The answer for most catalogs: 5-30 high-demand facet combinations per parent category, indexed; everything else is noindex,follow. Module 61 covers the math.

Visualizing it

flowchart TD
  A[Category URL] --> B[Above the fold]
  B --> C[H1 with category term]
  B --> D[Editorial intro 100-200 words]
  B --> E[Hero image or category banner]
  B --> F[Visible product grid]
  A --> G[Mid page]
  G --> H[Filter or facet rail]
  G --> I[Product cards with price + rating]
  A --> J[Below grid]
  J --> K[Buyer's guide or FAQ]
  J --> L[Related categories]
  J --> M[Sub-category links]
  C --> N[CollectionPage + ItemList JSON-LD]
  I --> N
  N --> O[AI Overview citation eligible]

Bad vs. expert

The bad approach

Most platforms ship a category page that looks like this once you strip the chrome:

<h1>Running Shoes</h1>
<div class="product-grid">
  <!-- 12 product cards, no intro, no guide, no schema -->
</div>
<div class="seo-text" style="color:#777; font-size:11px; margin-top:80px">
  <p>Welcome to our running shoes collection. We have a wide selection of
  running shoes from top brands. Whether you're looking for road running
  shoes, trail running shoes, or running shoes for beginners, we have the
  best running shoes for you. Shop our running shoes today...</p>
</div>

The “SEO text” is keyword-stuffed, hidden, and below the grid. There is no schema. No buyer’s guide. No internal links to sub-categories. The page targets the keyword and ignores the user. Helpful Content classifier flags this exact pattern, and the page sits at position 18 forever.

The expert approach

<head>
  <title>Running Shoes — Road, Trail & Stability | Northshore</title>
  <meta name="description" content="Shop 247 running shoes from Brooks, Hoka, Nike, Saucony, Asics. Free returns, expert fit notes, in-stock from Portland warehouse.">
</head>
<body>
  <nav aria-label="Breadcrumb">
    <a href="/">Home</a> /
    <a href="/shoes">Shoes</a> /
    <span>Running Shoes</span>
  </nav>

  <h1>Running Shoes</h1>

  <div class="intro">
    <p>We carry 247 running shoes across <a href="/shoes/running/road">road</a>,
    <a href="/shoes/running/trail">trail</a>, and
    <a href="/shoes/running/stability">stability</a> categories from 14 brands.
    Our team logs at least 30 miles in every model we stock; the notes on each
    PDP reflect what we actually felt.</p>

    <p>If you're new: most road runners start in a neutral cushioned shoe
    (Brooks Ghost, Hoka Clifton). Trail runners need a separate model with
    aggressive lugs. Heavier runners (190+ lb) generally do better in
    stability shoes regardless of arch type. <a href="/guides/how-to-pick-a-running-shoe">Full sizing guide here.</a></p>
  </div>

  <section class="filters" aria-label="Filter products"><!-- ... --></section>

  <ul class="product-grid"><!-- 24 product cards above the fold on desktop, 6 on mobile --></ul>

  <nav class="sub-categories">
    <h2>Shop by type</h2>
    <a href="/shoes/running/road">Road (132)</a>
    <a href="/shoes/running/trail">Trail (61)</a>
    <a href="/shoes/running/stability">Stability (39)</a>
    <a href="/shoes/running/racing">Racing (15)</a>
  </nav>

  <section class="guide">
    <h2>How we recommend running shoes</h2>
    <!-- 400-word guide with subheadings: pronation, cushioning, drop, fit -->
  </section>
</body>
{
  "@context": "https://schema.org",
  "@type": "CollectionPage",
  "name": "Running Shoes",
  "url": "https://northshore.example/shoes/running",
  "description": "Running shoes from Brooks, Hoka, Nike, Saucony, Asics — road, trail, and stability options.",
  "breadcrumb": {
    "@type": "BreadcrumbList",
    "itemListElement": [
      { "@type": "ListItem", "position": 1, "name": "Home", "item": "https://northshore.example/" },
      { "@type": "ListItem", "position": 2, "name": "Shoes", "item": "https://northshore.example/shoes" },
      { "@type": "ListItem", "position": 3, "name": "Running Shoes", "item": "https://northshore.example/shoes/running" }
    ]
  },
  "mainEntity": {
    "@type": "ItemList",
    "numberOfItems": 247,
    "itemListElement": [
      {
        "@type": "ListItem",
        "position": 1,
        "url": "https://northshore.example/products/brooks-ghost-16",
        "name": "Brooks Ghost 16"
      },
      {
        "@type": "ListItem",
        "position": 2,
        "url": "https://northshore.example/products/hoka-clifton-9",
        "name": "Hoka Clifton 9"
      }
    ]
  }
}

Why it works: the H1 matches the head query exactly; the intro is short, useful, and links to refining categories; the grid appears immediately; sub-category links cap the facet explosion at four authoritative sub-categories; the buyer’s guide gives the page editorial weight without burying the products; CollectionPage + ItemList markup is the citation key for AI Overviews. Tested across mid-market apparel and outdoor retailers, this pattern lifts category-page sessions 40-120% within two quarters.

Internal linking from PLP to PDP and back:

Link directionAnchor patternWhy
PLP → PDPProduct name as anchor on cardStandard, expected
PLP → sub-categoryCategory name + count (132)Disambiguates intent, helps facet decisions
PLP → buyer’s guide”How to pick a running shoe” descriptive anchorTrust signal, dwell time
PDP → PLPBreadcrumb + “More running shoes” linkBuilds PLP equity
Editorial → PLPSpecific anchor: “we tested 14 running shoes”Strongest signal — not just a footer link

Do this today

  1. In Ahrefs or Semrush, export your top 50 categories by potential traffic. Cross-reference against your actual ranking. Any category ranking position 8-30 with intro copy under 50 words above the grid is a quick win — write 150 words, add internal links, ship.
  2. Run Screaming Frog with custom extraction for h1, the first paragraph after h1, and the count of internal links from the page. Filter for PLPs with intro under 50 words OR fewer than 10 outbound internal links. Those are your highest-leverage rewrites.
  3. Validate CollectionPage and ItemList schema with Rich Results Test. If your platform doesn’t ship it (Shopify default, most WooCommerce themes), add it via theme injection or a plugin like Yoast E-commerce or RankMath Pro.
  4. Audit above-the-fold real estate on mobile. Open PageSpeed Insights, view the field-data screenshot, and confirm at least 4 product cards are visible above the 720px fold on a Pixel 7. If the intro pushes the grid below the fold, shorten the intro to 60-80 words and move the rest below the grid.
  5. Open GSC → Performance → filter by URL containing /category/ or /collections/. Sort by impressions descending, CTR ascending. Any PLP with 5K+ impressions and CTR under 1.5% has a title/description problem. Rewrite for buyer language, not template language.
  6. Map facet → URL decisions. Use GSC + GA4 to identify the 5-30 most-searched facet combinations per parent category (e.g., “men’s road running shoes,” “women’s trail running shoes”). Promote those to indexable URLs with their own intro copy. Module 61 covers the rules.
  7. Add breadcrumb navigation with BreadcrumbList schema on every PLP. Crawlable <a> elements, not JS-rendered. This single change is worth 5-15% category traffic on most catalogs that don’t have it.
  8. Place the buyer’s guide content below the grid, not above. Above the fold belongs to products and an intro. Below-the-grid editorial content (300-600 words) feeds Helpful Content signals without pushing the grid down.

Mark complete

Toggle to remember this module as mastered. Saved to your browser only.

More in this part

Part 8: E-Commerce SEO

View all on the home page →
  1. 058 E-Commerce SEO Foundations 12m
  2. 059 Product Page Optimization 14m
  3. 060 Category Page Optimization You're here 13m
  4. 061 Faceted Navigation for E-commerce 24m
  5. 062 Out-of-Stock & Discontinued Products 16m
  6. 063 Google Merchant Center & Shopping 14m
  7. 064 Marketplace SEO 17m