My Tool Studio
Schema Markup·4 min read

Schema for Category Pages: CollectionPage Explained

Category templates get less structured data attention than product pages, which is backwards given how much organic traffic they collect. Markup for a category page 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

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 says so honestly: the page is a hub, not a destination, and its value is the grouping itself.

Google shows no rich result for CollectionPage, so the gain is a clearer description of your site structure. It applies to blogs just as well: a monthly archive or a tag page is shaped exactly like a shop category, and the same type fits without changes.

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 core of the output reads: {"@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.","mainEntity":{"@type":"ItemList","numberOfItems":24,"itemListElement":[{"@type":"ListItem","position":1,"url":"https://hartwoodhome.com/sofas/fabric/arden-3-seat","name":"Arden 3 Seat"}]}}, with the list continuing through every product shown.

The description is doing real work: it states what unifies the collection and adds a concrete fact, the fourteen colours, instead of filler. The block can also carry a publisher and an isPartOf link to your WebSite through an @id such as https://hartwoodhome.com/#website, which connects to the WebSite markup on your homepage.

The ItemList inside CollectionPage

The page-level fields answer what this page is. The ItemList in mainEntity answers what's on it: one ListItem per product or post, with positions matching the visible order. The CollectionPage Schema Generator builds both in one block.

Paste the category URL and press Auto-fill from URL. The tool first looks for an ItemList already in the page's JSON-LD; if there is none, it reads the links inside product cards and article headings, keeps same-site links and drops cart, account, login, search, tag and pagination links. Remove anything that's a menu or footer link rather than an item, fix names, reorder with the arrows and press Add item for anything missed. Items without a URL are left out, since a ListItem in a collection needs a link.

Templates and paginated categories

On a large shop you don't hand-write forty blocks. Generate one here, replace the name, url, description and item values with your platform's template tags, and let every category render its own. The generated output then serves as a known-good reference to compare against whenever the template's output looks wrong. The Ecommerce category and Blog archive example buttons show both shapes complete.

Pagination needs a decision, not an accident. Page two of the fabric sofas is still a collection, so it can carry its own block, but its url must be the page two address or its canonical, and its list should hold only the items shown on page two, starting again at position 1. A block on page three that claims to be page one contradicts your canonical tags. Filtered or sorted versions that canonicalize to the main category don't need a block of their own.

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 markup that doesn't match the page can lead to a manual action.
  • One identical description pasted across forty categories.
  • Applying CollectionPage to the homepage, which is better described with WebSite and WebPage markup.
  • Empty categories that keep their markup after products sell out, declaring a collection of nothing.
  • An ItemList that no longer matches the products on the page, or that pads numberOfItems with items from other pages.

Small wins with the CollectionPage generator

Run auto-fill against the live category URL first: the title, meta description and image it pulls show you whether your template's tags are any good. Thin or missing values here predict thin markup, and fixing the template fixes both.

Keep the publisher identical, character for character, to your sitewide Organization markup. When a category is seasonal, like a summer range, take the markup down with the page rather than leaving a dead collection in the index. After publishing a paginated page, check it with Test live URL to make sure the right items are listed.

CollectionPage alongside the related tools

The Product Schema Generator handles the detail pages your collection links to, where price and availability markup actually lives. If the items are a type Google shows in carousels, such as recipes or courses, the ItemList Schema Generator covers the summary and all-in-one layouts that carousels need.

Because categories sit in the middle of your hierarchy, the Breadcrumb Schema Generator builds the BreadcrumbList that describes the trail, Home to Sofas to Fabric, which Google can show in desktop results.

Try it now

Open CollectionPage Schema Generator

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

Open CollectionPage Schema Generator