Forty-seven words of template copy sit under a collection that holds 312 products, and Search Console still only reports the brand name plus shop. The URL returns 200. The H1 is the CMS label. Filters have already minted more indexable addresses than the merchandiser ever meant to publish.
That is a category page. It is not ranking as one.
Ecommerce SEO on a collection is not a longer product description and it is not a blog post parked above the grid. It is unique copy, filters, canonicals and internal links working as one job. Until those four agree, the parent stays a list and Google treats it like one.
Thin copy is why the collection never leaves page four
A category that only repeats the manufacturer line, the same intro used on two sibling collections, or a sentence the theme injected in 2019, has nothing for a query to attach to. Crawlers still fetch the HTML. They do not have a reason to pick this URL over a product, a tag, or the homepage.
Open the live source. If the first meaningful paragraph could sit on any other collection without anyone noticing, the page is not a ranking document. It is a product dump with a heading.
Count the indexable URLs that share that heading. Faceted paths, sort orders and session parameters often outnumber the real collection by tens to one. The parent then competes with its own children for the same weak snippet.
The merchandiser’s next useful check is not another product upload. It is whether this URL is the one we want associated with the head query, or whether we have already given Google eighty noisier versions of the same grid.
Unique copy that only this category can own
Unique copy on a category is not 800 words of filler above the fold. It is the few blocks that could not live on a sibling collection, a product, or a buying guide.
Write for the query the collection can actually win. That is usually a head term plus a modifier the products already satisfy: material, use, size band, or the way a PH buyer names the set. Do not write a history of the category. Do not restate shipping policy. Do not paste the same care paragraph onto every parent.
Place a short lead under the H1 that names the set and the job it does. Put supporting copy below the grid or in a second block the template already allows, so the merchandiser is not fighting the first screen. Link out only to children, related parents, and a guide that earns the click.
If the catalogue has no query map, stop drafting. We run keyword research services against the live collection, Search Console and the actual product titles before anyone writes a paragraph. Otherwise the merchandiser spends a week owning a phrase the category will never rank for, while a filter page already collects the impressions.
One collection, one primary query, a small set of supporting phrases that the products prove. That is enough unique copy. More words without a different job just dilutes the H1.
Filters, faceted URLs and what we allow to index
Filters are merchandising. They are not free landing pages.
Colour, size, price band and in-stock toggles help a shopper finish a session. They also generate crawlable URLs if the template writes a new path or a new query string for every combination. Those URLs inherit thin copy, the same H1, and a product subset that changes daily.
Decide, in writing, which facets deserve an indexable URL. A material or a use-case that matches a real search and has a stable product set can earn unique copy and a self-canonical. A sort order, a price slider and a random two-facet stack should noindex, or never be linked in a crawlable way.
The merchandiser owns that list. Engineering does not guess it from the filter UI. If “red, size 9, under 2k, in stock” can be reached from a followable link, assume it will be crawled.
Robots meta, parameter handling and canonicals have to match that list. A filter we want to rank needs unique copy and a clean URL. A filter we do not want to rank must not look like a second category.
Canonicals that stop self-competition
Canonicals on ecommerce category pages fail in three boring ways. They point at themselves while duplicates still index. They point at the homepage. They point at a filtered URL because the template wrote the tag from the request, not from the parent.
View source on the parent, on `?sort=price`, on page 2, and on one popular facet. If four different canonicals appear, the collection is already split.
The parent category should canonical to itself. Pagination should either canonical to itself with a clear paginated series, or follow the pattern we have already agreed with crawl in mind. Filtered URLs that must not rank should canonical to the parent or carry noindex. Do not mix those two on the same template.
Self-canonical plus indexable duplicates is not a canonical strategy. It is a hint Google is free to ignore. The HTML still has to be the URL we want in the index.
This is crawl and index work, not copy. When the catalogue is already leaking thousands of facet URLs, we put it through technical seo services philippines so robots, canonicals and parameter rules agree before more unique copy goes on a parent that is still competing with its own filters.
Internal links that give the category a job
A category with no internal links from products, related parents and the main nav is a dead end with a nice grid.
Products should link up to the parent they belong in, with the category name in the anchor, not “back to shop”. Related collections should link across when the shopper’s next useful step is a sibling, not a deeper facet. The header and footer should not be the only paths.
Count in-links to the parent from indexable product URLs. If the number is a handful of breadcrumbs and a menu item, the collection has no vote. Bestsellers and new arrivals are the cheapest links to add because those templates already exist.
Do not bury the parent behind a view-all that never renders for crawlers. Do not nofollow the breadcrumb. Do not let a tag cloud siphon the same anchors to thin tag pages.
Internal links are how we tell Google the category is the document for the head query. Unique copy without those links is a paragraph on an orphan.
Titles, H1s and the CMS label nobody searched
The CMS label is not a title. “Women / Footwear / Formal” is a tree. It is not the query.
The title tag and the H1 should name the set the way a buyer searches it, then the brand if there is room. Keep them aligned. A title that targets “office shoes for women” with an H1 that still says “Formal” is two documents arguing on one URL.
Do not stuff every modifier into the title. Do not write a different promise in the meta description. The snippet should match the unique copy and the products on the grid. If the collection is empty, seasonal, or a leftover, fix the merchandising before we touch the title.
Pagination titles need a pattern that does not look like a new category. Filtered titles, if those URLs are allowed to index, need a real difference. If they do not, they should not have a unique title because they should not be in the index.
Structured data on a collection
Markup will not save thin copy. It will also not replace a clean canonical. It can, on a real category, make the collection understandable as a list of products rather than a random HTML grid.
We do not dump Product markup for every SKU onto the parent and hope. We mark the collection as a list, keep product entities consistent with what is on the screen, and we check the live HTML against Google ecommerce structured data before anything ships. That spec is the test. A plugin default is not.
If the grid is filtered, the markup must match the products the user and the crawler actually see. Markup for 312 items on a facet that shows 11 is a mismatch. Search Console will eventually say so.
Breadcrumb markup should match the visible breadcrumb. Offer and availability belong on product URLs, not as a fiction on the parent. If the theme writes both CollectionPage and a wall of Product nodes, we strip until the collection has one job.
Pagination and sort parameters we refuse to index
Page 2 is not a new category. Sort by price is not a new category. A grid that reloads with a different order still has the same unique copy problem if those URLs index.
Crawlable pagination needs a consistent pattern: rel signals if we use them, self-canonicals or parent canonicals as agreed, and titles that do not look like head terms. Infinite scroll that never exposes a crawlable page 2 means products on later views may never be found except through their own URLs. That can be fine. It is a decision, not a default.
Sort and view parameters should be blocked from the index unless there is a rare, documented reason. The merchandiser should be able to name that reason in one sentence. “The template does it” is not a reason.
Log the parameter list. Match it to robots, to canonicals, and to the in-links we actually publish. A noindex that is still linked from every product tile will keep getting crawled. Crawl budget on a large catalogue is not theoretical once filters and sorts are followable.
Search Console checks before we write another word
Pull the exact category URL. Look at queries, not just the average position vanity. If impressions are brand-only, the document has no topical attachment yet.
Inspect the URL. Confirm Google’s selected canonical. If it is not the parent we meant, stop writing copy. Fix the signal.
Check coverage for the folder or the parameter. Indexed filter URLs with the same title as the parent are the leak. Excluded by canonical but still appearing in search is the other leak.
Compare the parent to the top product in that collection. If the product outranks the category for the head term, the category is not the document. Sometimes that is correct. A single hero SKU can deserve the query. The merchandiser should decide that on purpose, then stop asking the parent to rank for a phrase the product already owns.
Export the internal link count if the property gives it. Weak in-links plus thin copy is the usual pair. We do not need another tool to see it.
The next useful cut on this catalogue
Pick one parent. Not the whole tree.
Confirm the head query, the canonical, and the filter list that is allowed to index. Write unique copy only for that parent. Add internal links from the products that already sell. Remove crawlable sorts. Align title and H1. Then wait on the data for that URL, not for the domain.
If the catalogue is already a mesh of facets, duplicated H1s and template intros, the next useful step is a scoped audit of that tree: which collections can rank, which should noindex, and which need engineering before copy. Ask for that audit when the merchandiser can name the category, the leak, and the query. That is enough to start.