Collection Page Schema Generator — Clarify Category Pages
Generate clean CollectionPage JSON‑LD and pair it with ItemList to enumerate items and positions. Improve understanding of listing pages.
Why many collection pages underperform
Pain points we solve
- Search engines can’t tell a category page from a detail page without cues.
- Lists aren’t represented with ItemList and positions.
- Links use relative URLs or point to pages without proper schema.
- Manual JSON‑LD is inconsistent across category templates.
How SwiftSchema helps
Solution
The CollectionPage generator declares the page as a listing page with `name` and `url`. Pair it with ItemList to enumerate items using ordered ListItems with absolute URLs and positions.
This improves clarity of page role and helps your internal linking and crawl paths.
How it works
How it works
- Choose CollectionPage in the generator below.
- Enter the collection title (`name`) and absolute `url`.
- Add an ItemList that enumerates visible items and positions using absolute URLs.
- Optionally add `description`, `inLanguage`, and `isPartOf` for site context.
- Copy JSON or Script, paste on the category page, and validate in the Rich Results Test.
Pair with ItemList. Validate. Ship.
What is CollectionPage structured data?
CollectionPage marks up category, listing, or hub pages that curate multiple related items (products, articles, recipes, etc.). It tells search engines “this is a directory of things,” which helps differentiate category pages from detail pages. When combined with ItemList, CollectionPage signals not just the existence of the list but also its structure and order. This clarity improves crawling, reduces duplicate-content confusion, and can influence how collections appear in SERPs (though, like ItemList, it doesn’t guarantee a carousel).
Required and recommended properties
- name— the collection title (“Spring Jackets”, “SEO Guides”).
- url— canonical URL of the collection page.
- description— short summary of what the collection covers.
- inLanguage— BCP 47 code if you serve multiple languages.
- isPartOf— reference your WebSite or parent section (e.g.,/shop).
- hasPart— optionally reference major sub-collections (e.g., Men’s vs Women’s).
- mainEntity— rare for collections, but you can reference ItemList or key items for additional context.
Pairing CollectionPage with ItemList
- Use CollectionPage to describe the page itself, then embed an ItemList to enumerate the visible items.
- Each ListItem should link to a detail page with its own schema (Product, Article, Recipe, etc.).
- If your collection is paginated, include the current page’s items and update the ItemList when the page changes. Maintain consistent positionvalues across paginated pages.
- Provide itemListOrder(ascending/descending/unordered) to communicate sorting logic (price low-high, newest first).
Content prep checklist
- Write a keyword-rich intro for the collection explaining what users can expect (“Shop curated spring jackets with waterproof fabrics.”).
- Ensure each item tile links to a canonical detail page with correct schema.
- Decide on sorting criteria and surface it in the UI (e.g., “Sort by price”).
- Include filters or facets as needed, but avoid representing facet results as separate CollectionPages unless they have unique content.
- Plan for pagination, infinite scroll, and localization. Make sure each scenario has a canonical URL and a stable list of items.
Implementation workflow
- Add CollectionPage JSON‑LD with name,url,description,inLanguage, andisPartOf.
- Generate ItemList for the items on that page. Use the same data source powering your grid/list UI.
- Embed both in the page template. If using Next.js, you can output them together in the same JSON‑LD script.
- Validate via Rich Results Test or Schema Markup Validator to ensure there are no missing brackets or invalid URLs.
- Monitor Search Console for structured data errors (Breadcrumb, ItemList) to catch issues early.
Handling pagination and dynamic lists
- Include rel=next/prev links and ensure canonical tags point to the first page or the self page, depending on your SEO strategy.
- For dynamic lists (e.g., “Top Stories”), update JSON‑LD whenever the list changes. Consider caching the data to avoid stale schema.
- Use numberOfItemsto indicate the total item count even if not all are visible on page (e.g., “Showing 1-24 of 180”).
- If you load more items via infinite scroll, update the ItemList in the DOM or provide incremental JSON‑LD updates. At minimum, ensure the initial load includes the first set of items.
Differentiating CollectionPage from ItemPage
- Use CollectionPage for category-level routes (/blog/schema-guides) and ItemPage for detail routes (/blog/schema-guides/product).
- When a page acts both as a collection and a hub for a main entity (e.g., “SEO Hub” describing the topic plus listing resources), consider combining CollectionPage with AboutPage or WebPage as appropriate.
- Keep breadcrumb/schema consistent so search engines can trace the hierarchy: Home → Category → CollectionPage → ItemPage.
Troubleshooting checklist
- Missing ItemList: ensure every collection includes ItemList. Without it, Google may treat the page as a generic WebPage.
- Duplicate URLs: if the same item appears multiple times (featured + standard list), only include it once in the ItemList or use distinct anchors.
- Relative URLs: convert to absolute URLs to avoid ambiguity.
- Facet crawl issues: block shallow filter combinations via robots.txt or canonical tags; only add schema to combinations that have unique, index-worthy content.
- Auto-generated copy: ensure your introductions and headings aren’t thin or repetitive; schema won’t compensate for low-quality content.
Maintenance tips
- Set a quarterly reminder to spot-check top collection pages for schema drift, broken links, or outdated descriptions.
- When adding new collection types (seasonal campaigns, sale pages), include schema from day one rather than retrofitting later.
- Track owners per collection (merchandising vs content teams) so they know to update schema when they change the layout or inventory source.
- Automate schema generation where possible—once the data source is trustworthy, feeding it into both UI and JSON‑LD keeps everything aligned.
Common Errors & Fixes
- No ItemList: add an ItemList with ListItem entries and positions for visible items.
- Thin content: ensure the collection page offers descriptive text, not just a grid of cards. Schema needs context.
- Inconsistent URLs: use canonical absolute URLs for each item and keep them in sync with the grid.
- Missing site context: include isPartOfreferencing your WebSite so category pages stay tied to the brand entity.
- Pagination confusion: keep positions sequential across pages and ensure canonical tags/pagination markup are correct.
Required properties
nameurl
Recommended properties
descriptioninLanguageisPartOf.nameisPartOf.url
{
"@context": "https://schema.org",
"@type": "CollectionPage",
"name": "Spring Jackets",
"url": "https://www.example.com/jackets/spring"
}