Shopify Collection Page SEO: Titles, Copy, Filters, Canonicals and Schema
This Shopify collection page SEO guide follows one example collection, dog chews, through the checks we run on a store, in order: the search each collection should own, the fields Google reads, the copy around the grid, the extra URLs Shopify creates, canonical tags, pagination, internal links, structured data and Search Console.
Shopify’s settings and limits come from its Help Center, its developer docs and the source of Dawn, Shopify’s free reference theme (version 16.0.0, read in October 2026), and Google’s rules link to Google Search Central. We focus on Shopify because it ran 127 of the 150 advertiser sites we could load in our October 2026 sweep of the Meta Ad Library. Most of those advertisers are product brands; the sweep also kept a marketplace, a home goods retailer, an online grocer, some link and landing-page services and a few review sites.
Decide which searches each collection should answer
Give each phrase shoppers type one page. Collections answer category searches, product pages answer searches for one item, and guides answer questions. Two collections aimed at the same phrase split the links and copy between them.
| Kind of search | Example | Page that should answer it |
|---|---|---|
| Category | dog chews | A collection: /collections/dog-chews |
| Narrower category with enough products | puppy chews | Its own collection, linked from the parent |
| One product | beef cheek chew 6 inch | The product page |
| A detail few people search for | dog chews 12 pack | A filter on the collection, kept out of the index |
| A question | are bully sticks safe for puppies | A guide that links to the collection |
If a product tag has its own search demand, build an automated collection whose condition matches that tag. It gets a title, description, handle and menu place that a tag URL never has. Merge or retire collections that overlap, and follow Google’s ecommerce URL guidance: avoid linking to, or at least indexing, pages without useful content, and put a noindex robots meta tag on a category with no items.
Write the page title, heading and URL handle
In the Shopify admin, go to Products, then Collections, open the collection, and click the Edit icon in the Search engine listing section. It holds three fields: Page title, Meta description and URL handle (Shopify’s collection settings help). The collection’s own title is separate; Dawn’s Collection banner section prints it as the H1.
| Field | Where it shows | How to write it |
|---|---|---|
| Collection title | The H1 on the page in Dawn | The plain phrase shoppers use, such as “Dog Chews”, in place of a campaign name like “The Chew Edit”. |
| Page title | The title link in Google’s results | The phrase first, then what sets the range apart, then the brand: “Dog Chews for Puppies, Adults and Seniors | Brand”. |
| Meta description | The snippet, when Google uses it | One or two sentences on what the range includes and who it suits, plus a useful fact such as shipping or returns. A different one for each collection. |
| URL handle | /collections/handle | Short and hyphenated, such as dog-chews. Set it once. |
Shopify says a title over 70 characters or a description over 320 might be cut off in search results. Google sets no fixed limit and shortens title links to fit the screen, so lead with the words that matter and skip lists of keyword variations. Google builds most snippets from the page’s own text, so the intro copy matters as much as the meta description.
Shopify also warns, “don’t edit the handle too often or the collection might not display in search engine results.” If a handle must change, select the option to create a redirect from the old URL before you save.
Place the collection description above and below the grid
Each collection has one Description field. Dawn prints it under the H1, above the product grid, when the banner’s Description setting is on; other themes vary, so check yours on a phone. Above the grid, two to four sentences are enough: who the range is for and how the options differ. Longer buying help belongs below the grid, and the theme editor can show different copy there for each collection:
- Create a collection metafield. In Settings, then Metafields and metaobjects, add a Collections definition with the Multi-line text or Rich text type.
- Add a section below the grid. In the theme editor, open the collection template and add a Rich text section after the product grid.
- Connect the metafield. Select the section’s Text block, click the connect dynamic source icon on its Text setting and pick your metafield.
- Write it per collection. Start with the collections that already get impressions in Search Console.
Cover how sizes, flavors, materials or bundles differ, the questions your support inbox gets before people buy, shipping and returns facts, and links to sibling collections and guides. Repeating the phrase in sentence after sentence is keyword stuffing under Google’s spam policies, which also say accordions and tabs are fine. If the copy sits behind a “read more” control, make sure the text is in the page’s HTML when it loads.
Control tag, filter and sort URLs
One collection can load at many URLs. A product tag adds a path segment and several tags join with a plus sign (tag filtering), storefront filters add parameters such as ?filter.v.option.size=large (storefront filtering), and sorting adds ?sort_by=. Google’s faceted navigation guide says this kind of setup “can generate infinite URL spaces” and that “oftentimes there’s no good reason to allow crawling of filtered items.”
| URL type | Example | Shopify’s default robots.txt | What to do |
|---|---|---|---|
| The collection | /collections/dog-chews | Crawlable | Index it. This is the page that should rank. |
| One tag | /collections/dog-chews/beef | Crawlable | Make it a real collection if people search for it. Otherwise add a noindex tag. |
| Two or more tags | /collections/dog-chews/beef+large | Blocked | Leave it blocked and unlinked. |
| One filter | ?filter.v.option.size=large | Crawlable | Don’t link to it, and check that its canonical names the collection. |
| Two or more filters | ?filter.v.option.size=large&filter.v.availability=1 | Blocked | Leave it blocked. |
| Sort order | ?sort_by=price-ascending | Blocked | Leave it blocked. |
| Vendor and type pages | /collections/vendors?q=Brand | Crawlable | Stop linking to it, and build a real collection if the name is searched. |
The robots.txt column reflects the file Shopify generated in October 2026. A robots.txt.liquid template can change it, so open yourstore.com/robots.txt and compare. Vendor and type pages come from theme links built with Shopify’s vendor URL filters and are not collections in your admin, so they have no title or description to edit.
Two Google rules decide between noindex and robots.txt. On a URL that robots.txt blocks, “the crawler will never see the noindex rule”. And a block does not remove a page, because Google “may still index URLs that are disallowed in robots.txt without their content.” So noindex the URLs Shopify leaves open, such as single-tag pages, and keep the blocked types blocked and unlinked. To noindex tag pages, save a copy of layout/theme.liquid and add this line inside the head, following the pattern Shopify gives for hiding pages from search engines:
{% if template contains 'collection' and current_tags %}<meta name="robots" content="noindex">{% endif %}
For empty collections, use this line instead. Shopify’s collection object counts filtered-out products in all_products_count, so a filtered view is not mistaken for an empty collection:
{% if template contains 'collection' and collection.all_products_count == 0 %}<meta name="robots" content="noindex">{% endif %}
How the theme draws filters matters as well. Google generally crawls the links it finds in the href of an a element, and its crawlers don’t click buttons. Dawn draws filter values as checkboxes and the sort order as a drop-down, so an unfiltered collection carries no links to filter URLs (facets.liquid). Some themes and filter apps draw every filter value as a link, which opens every combination to crawling. Search the page source for href values containing “filter.” to see which kind you have. If Search Console shows Google crawling many filter URLs, add a robots.txt rule for the filter parameter with Shopify’s Liquid objects, after saving a copy of the current file as Shopify’s guide advises.
Check the canonical tag on each URL type
Shopify themes print the canonical tag as <link rel="canonical" href="{{ canonical_url }}"> (theme SEO docs). Shopify describes that object only as “the canonical URL for the current page” and does not say what it returns for tag, filter, page and variant URLs, and themes and apps can replace the tag. Open each URL below, view the source and search for “canonical”.
| Open this URL | The canonical should name | Google’s rule |
|---|---|---|
| /collections/dog-chews | /collections/dog-chews | A self-referencing canonical on the canonical page. |
| /collections/dog-chews?page=2 | /collections/dog-chews?page=2 | “Don’t use the first page of a paginated sequence as the canonical page.” |
| /collections/dog-chews?filter.v.option.size=large | /collections/dog-chews | The faceted navigation guide points filtered URLs to the unfiltered version. |
| /collections/dog-chews/products/beef-cheek | /products/beef-cheek | Use one URL for a product in internal links, the sitemap and the canonical tag. |
| /products/beef-cheek?variant=123 | /products/beef-cheek | With optional variant parameters, the URL without the parameter is the canonical. |
If your product cards link to /collections/…/products/… URLs, the theme uses the within filter, and Shopify’s Liquid reference cautions that the two versions “have the same content on separate URLs.” Remove | within: collection from the card link so the grid links straight to /products/ URLs, as Dawn’s cards already do.
Then check what Google chose. URL Inspection shows your declared canonical next to Google’s, and the Page indexing report lists statuses such as “Duplicate, Google chose different canonical than user” and “Indexed, though blocked by robots.txt”. A canonical tag is a hint, and Google’s canonicalization guide ranks redirects and canonical tags as strong signals and sitemaps as weak, so internal links to the wrong URL work against it.
Pagination and the product grid
Google’s pagination guidance: link each page to the next with an a href link, give each page its own URL such as ?page=2 and its own canonical, and never use # fragments for page numbers. Titles can repeat across the series. “Load more” buttons and infinite scroll need real paginated URLs behind them.
Shopify’s paginate tag takes 1 to 250 items per page, and Shopify caps pagination at 25,000 objects (platform limits). Dawn’s product grid shows 8 to 36 products per page, 16 by default, and its pagination snippet links each page number with an a href. Dawn’s layout file, theme.liquid, adds “Page 2” and so on to the title of later pages. What to check in your grid:
- Next-page links: on page 1, search the source for an href ending in ?page=2. If more products load only from a button or on scroll, confirm real ?page= links exist behind it.
- The link to page 1: Google asks you to include or leave out ?page=1 consistently. Check which URL your pagination uses and which canonical it prints.
- Product links: each card links to the product with the product name as the link text. Google asks for meaningful link text over phrases like “click here”.
- Variant parameters: in filtered collections, Shopify’s product object adds the most relevant variant’s parameter to product URLs. That is fine if the product page’s canonical drops it.
- Image alt text: Dawn’s cards use each product’s featured image alt text, which you set on the product: click the image, then Edit alt text.
- Sort and sitemap: the Default sort in the Collection items section decides which products sit on page 1. Shopify’s sitemap lists every product, which helps Google find those deeper in the list.
Internal links that point to your collections
Google judges how important a page is from the links between pages and generally doesn’t use URL structure to work out how a site is organized. The collections you want found need links from the pages Google crawls most.
- Main menu: add each collection you want indexed under Content, then Menus, then Add menu item (Shopify’s steps). Shopify’s help also suggests menu links that filter a collection by tag; if a tag deserves a menu link, make it a real collection first.
- Parent to child: link sub-collections from the parent’s intro, using each one’s name as the link text.
- Product to collection: link each product back to its main collection with a breadcrumb or a line such as “More dog chews”.
- Guides and homepage: link buying guides to the collection using its name as the link text, and link your best-selling collections from the homepage, as Google’s ecommerce guidance suggests for important pages.
Structured data for collection pages
| Markup | On a collection page? | What Google says |
|---|---|---|
| Product and Offer | Not recommended. Keep it on product pages. | “We recommend focusing on adding markup to product pages instead of pages that list products or a category of products.” (merchant listings) |
| Review and AggregateRating | No rating for the collection as a whole | “Provide review information about a specific item, not about a category or a list of items.” (review snippets) |
| BreadcrumbList | Yes, when the page shows a breadcrumb trail | Shows where the page sits in the site; the breadcrumb rich result is available on desktop (breadcrumbs). |
| Organization | Once, sitewide | Dawn prints it from its header section on every page. |
| ItemList | Not needed for US results | The product carousel built from ItemList is a beta for product searches in European Economic Area countries and South Africa only (carousels beta), so it does nothing in US results today. |
Review, SEO and filter apps often add their own markup. Test a live collection page in Google’s Rich Results Test and remove product-level or duplicate markup from the collection template.
Measure collection pages in Search Console
- Filter the Performance report. Add a page filter for URLs containing /collections/ and note which queries each collection earns.
- Compare against the phrase you chose. If a collection earns impressions for a phrase you gave to another page, fix the links and copy so each phrase points to one page.
- Read the Page indexing report. Confirm tag, filter, sort and ?page URLs sit under the status you intended.
- Repeat after theme updates and new apps. Both can change canonical tags, filter links and markup.
Search Console covers search clicks only. If the same collections take paid traffic, our guide to the Meta Pixel and Conversions API on Shopify covers counting those orders once. To hand the collection work over, see our Shopify SEO agency service: collection and product pages, duplicate URL fixes and product data, with weekly numbers in plain English.
Shopify collection page SEO questions
How long should a Shopify collection description be?
Google sets no length. Keep the part above the grid to two to four sentences so products stay near the top on a phone, and put longer buying help below the grid.
Should I noindex Shopify tag pages?
Yes, unless people search for that tag, in which case build a real collection for it and link to that. Keep single-tag pages crawlable so Google can read the noindex tag. Pages that combine tags with a plus sign are already blocked in Shopify’s robots.txt, so leave them blocked and unlinked.
Should page 2 of a collection canonicalize to page 1?
No. Google says not to use the first page of a paginated sequence as the canonical page. Each page should name itself.
Can I remove /collections/ from Shopify URLs?
No. Shopify lists /products, /collections and /collections/all as fixed paths. Google says it generally doesn’t use URL structure to work out how a site is organized, so the links pointing to a collection matter more than its path.
Should filtered pages like “large dog chews” be indexed?
Only when people search for that combination and you have enough products to fill the page. Build it as its own collection with its own copy, and keep the filter URL out of the index.