My Tool Studio
Schema Markup·3 min read

Schema for Category Pages: CollectionPage Explained

Category templates get less schema attention than product pages, which is backwards given how much organic traffic they collect. Schema for category pages starts with CollectionPage, a WebPage subtype that says this URL exists to group other things: sofas, posts from March, everything tagged linen. A furniture shop with forty categories can roll the markup out once through its template and cover every one of them. Below is how the type works, a worked example, and the places category markup usually goes wrong.

{"@type": "CollectionPage","name": "…","url": "…"}RICH RESULTCollectionPage

Schema for category pages: what CollectionPage declares

Imagine Hartwood Home, a fictional furniture retailer. Its fabric sofa category shows twenty four products, filters, and pagination. Nothing on that URL is for sale directly; every click leads somewhere else. CollectionPage is the type that admits this honestly: the page is a hub, not a destination, and its value is the grouping itself.

That distinction matters for crawl comprehension. Search engines model sites as graphs of hubs and leaves, and explicit hub labeling helps them allocate attention correctly. It also matters for blogs: a monthly archive or a tag page is structurally identical to a shop category, and the same type applies without modification.

A worked CollectionPage example from a shop

Forty categories, one template, one pattern.

For Hartwood's fabric sofa category at https://hartwoodhome.com/sofas/fabric, the generator produces: {"@context":"https://schema.org","@type":"CollectionPage","name":"Fabric Sofas","url":"https://hartwoodhome.com/sofas/fabric","description":"Two and three seat fabric sofas in fourteen colours, from stock in 5 days.","publisher":{"@type":"Organization","name":"Hartwood Home","url":"https://hartwoodhome.com"}}.

The description is doing real work there: it states what unifies the collection and adds a concrete fact, the fourteen colours, instead of generic filler. Write one honest sentence per category and you're ahead of most competing markup.

CollectionPage and ecommerce templates

The phrase collectionpage and ecommerce mostly means one thing in practice: template variables. You don't hand-write forty blocks; you generate one with this tool, replace the name, url, and description values with your platform's template tags, and let every category render its own. Shopify, WooCommerce, and headless setups all support this pattern in their category templates. The generator output doubles as your reference implementation: one known-good block to compare against whenever the template's rendering looks suspect.

Pagination deserves a decision, not an accident. Page two of the fabric sofas is still a collection, so carrying the markup there is legitimate, but the url property must match the paginated address or its canonical. A block on page three that claims to be page one contradicts your canonical tags, and contradictions get markup discounted.

Nesting an ItemList inside CollectionPage

The page level block answers what this page is. To also answer what's on it, add an itemlist inside collectionpage markup as its mainEntity: an ItemList whose ListItem entries mirror the products or posts currently displayed, positions matching the visible order.

This generator deliberately stays page level. When you want the enumeration too, build the list with the ItemList Schema Generator and either merge it under a mainEntity key by hand or ship the two blocks side by side; both are valid. The one rule: keep the list synced with the actual page contents, because a stale product list in your markup is worse than none.

CollectionPage mistakes seen on real category pages

The recurring offenders, from shop audits:

  • Marking a category up as Product because products appear on it; Product belongs on detail pages, and misusing it risks manual action for markup that doesn't match content.
  • One identical description pasted across forty categories, which reads as boilerplate to every system that sees it.
  • Applying CollectionPage to the homepage; a homepage is a WebSite entry point, not a collection.
  • Empty categories that keep their markup, proudly declaring a collection of nothing after products sell out.
  • Image fields pointing at the first product's photo rather than the category banner, misrepresenting the page.

Small wins with the CollectionPage generator

Auto-fill against the live category URL first: the tool pulls the title, meta description, and og:image your template already renders, which shows you instantly whether those tags are any good. Thin or missing values here predict thin markup, and fixing the template fixes both.

Keep the publisher block identical, character for character, to your sitewide Organization declaration. And when a category is seasonal, like a summer range, take the markup down with the page rather than letting a dead collection linger in the index. Empty hubs that still announce themselves as collections are a small but persistent credibility leak, and shops accumulate them every clearance cycle.

CollectionPage alongside the related tools

Three companions cover the rest of the category page job. The ItemList Schema Generator enumerates the visible items with positions, the nesting partner described above. The Product Schema Generator handles the detail pages your collection links to, where price and availability markup actually lives.

And because categories sit mid-hierarchy, the Breadcrumb Schema tool builds the BreadcrumbList that shows searchers the trail, Home to Sofas to Fabric, in the results snippet itself.

Try it now

Open CollectionPage Schema

The tool is one click away. No sign up, no upload, no payment.

Open CollectionPage Schema