E-commerce SEO: From Category to PDP, the Full Playbook
The architectural decisions that separate sites that rank from sites that don't
Most ecommerce sites lose more organic traffic to their own architecture than to competitors. A faceted navigation that generates 800,000 near-duplicate URLs will tank crawl efficiency regardless of how good your product pages are. A category page with no content beyond a product grid will never rank for the category query, no matter how many backlinks point at it. An out-of-stock strategy that serves 404s kills seasonal traffic every winter.
The ecommerce SEO playbook is mostly a set of architectural decisions — made early and revisited rarely. Content optimization matters too, but it's the marginal 20% after the architecture is right. This pillar covers the decisions that define the 80%.
The ecommerce SEO decision tree
Before touching individual pages, settle the decisions that cascade across the whole site:
- Category page strategy: Are your PLPs expected to rank for the category query, or are they pure navigation? This changes how much content goes on them.
- Product URL strategy: Flat (
/product-slug), nested (/category/product-slug), or SKU-based (/p/12345)? Trade-offs in each. - Variant strategy: One URL per product with variants in-page, or one URL per variant with canonicals? Affects indexation volume by 10-50×.
- Faceted nav strategy: Which facet combinations are worth indexing, which get canonicaled, which get
noindexed, which get blocked from crawling entirely? - Out-of-stock strategy: 404, 410, 301, or keep the page with a notice?
- Pagination strategy: Classic pagination, infinite scroll with view-all, or load-more with URL updates?
- International strategy: ccTLDs, subdirectories, subdomains? What's served by geo-IP vs explicit user choice?
Each of these drives concrete implementation and has a right answer for your catalog size, market, and brand. The wrong answer is reversible but painful — usually 3-6 months to undo.
Category pages (PLPs): the most underinvested opportunity
Product listing pages are the highest-leverage URLs in most ecommerce sites. They target commercial queries with significant volume ("running shoes," "wireless earbuds," "office chairs") and they're the natural recipient of category-level backlinks. Yet most are implemented as thin product grids with 40 words of intro and nothing else.
The 2026 ranker evaluates a PLP the same way it evaluates any page: does it answer the query well? A SERP for "running shoes" in 2026 is dominated by editorial content — buying guides, comparison tables, brand roundups — with product-listing sites mixed in. Your PLP competes for that ranking slot and needs to earn it.
What a ranking PLP has that a non-ranking PLP doesn't:
- A genuine introduction — 200-400 words that orient the user. What's the category, what are the buying considerations, what differentiates the options. Not 40 words of SEO filler.
- Editorial structure — H2/H3 sections that cluster products by use case, by price tier, or by specific attribute. "Best for long runs" as an H2 beats "Page 1 of 47."
- Internal linking to related categories — horizontal links across the category tree, not just vertical links to parent/children.
- Product information in the grid — price, stock, rating, key spec — not just thumbnail + name.
- FAQ section at the bottom — the 4-6 questions people ask about the category. Real ones from People Also Ask, not fabricated.
The trade-off: more content on PLPs increases initial render time and can push the above-the-fold product grid below the viewport. Fix with progressive loading, editorial content in expandable sections, or a separation between the "landing" version of the category (content-rich, linked from homepage) and the "browse" version (product-grid focused, linked from user navigation).
Product pages (PDPs): variants, schema, and canonical hell
PDPs are the URLs that capture specific-product commercial intent ("nike pegasus 41," "sony wh-1000xm5 black"). They're conceptually simple but architecturally tricky because of variants.
The variant decision (most consequential on the page):
- One URL per product, variants in-page. User picks color/size from a dropdown; URL doesn't change. SEO: single canonical, no duplicate issues, but harder to target specific variant queries.
- One URL per variant (
?color=redor/product-red). User lands on the variant URL from search. SEO: ranks for specific variant queries, but you must canonical variants to a primary or you generate duplicate content. - Hybrid: variant URLs for materially different variants (different photos, different spec), canonicaled to parent for cosmetic variants (color only).
Hybrid usually wins for catalogs over 5,000 products. It matches how users think: "nike pegasus 41" is one thing they search; "nike pegasus 41 black size 10" is not.
Product schema (JSON-LD with Schema.org Product type) is non-negotiable. At minimum:
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Product name",
"image": ["..."],
"description": "...",
"sku": "...",
"brand": { "@type": "Brand", "name": "..." },
"offers": {
"@type": "Offer",
"price": "99.99",
"priceCurrency": "EUR",
"availability": "https://schema.org/InStock",
"url": "canonical-url"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.6",
"reviewCount": "127"
}
}
Get availability right — Google explicitly cross-references schema availability with visible stock status. Lying triggers manual penalties.
Unique descriptions per PDP are table-stakes. Using manufacturer descriptions across all retailers creates duplicate content at scale — you and 50 other retailers are all duplicates of Nike's press release. Original description wins, even a short one. Templated (fill-in-the-blanks) descriptions are marginally better than manufacturer copy but still create near-duplicates across your catalog.
Faceted navigation: the #1 ecommerce SEO trap
Faceted navigation is the feature that expands your catalog into a combinatorial explosion of URLs: /shoes?color=red&size=10&brand=nike&price=50-100. Four facets with five options each generates 625 URL combinations per category. Ten facets generates millions.
Most of these should not exist as indexable URLs. The question is which should.
The decision tree:
- Is there material search volume for the filtered query? "Red nike running shoes" — yes, index it. "Red size 10 price 50-100" — no, don't.
- Does the filtered page have unique content beyond the filter itself? If the only difference from the parent is "products matching X," it's not adding indexable value.
- Can the filtered page be usefully bookmarked and shared? If yes, at least keep it crawlable. If no, cut it.
Implementation patterns in order of aggressiveness:
- Index selectively — facet combinations with search volume get crawled and indexed. Everything else gets
noindex,follow(let links flow, don't index the page). - Canonical to parent — filtered URL
rel="canonical"to the unfiltered category. Signals don't stack on the filter URL. Good default for middle-tier facets. - Robots.txt disallow — for parameter patterns that have no SEO value and are purely UI (session IDs,
?view=listvs?view=grid). Keeps the URLs from being crawled at all. - Nofollow internal links to facets — last-resort, rarely useful.
The mistake is applying one pattern to everything. You want selective indexing of valuable combinations, canonicals on most, and robots.txt blocking only for pure UI parameters.
Pagination: the quiet architectural choice
rel="prev" / rel="next" — Google deprecated using them for pagination in 2019. The modern options:
- Classic pagination (
?page=2,?page=3...) — self-canonical per page,noindex,followon pages 2+ if the individual pages add no SEO value, or index them if they do (large catalogs where deep pages have unique content). - Infinite scroll without URL updates — terrible for SEO. Googlebot can't paginate past the initial load, so products past the first page are never crawled from the category.
- Infinite scroll with URL updates — the JavaScript updates the URL as users scroll. Best UX, but requires disciplined implementation: each paginated state must be reachable via direct URL, and the initial HTML load for
?page=5must render that page's products server-side. - View-all page — one long page with all products. Works for small catalogs (<500 items per category). Kills performance on large catalogs.
- Load-more button — a mix of pagination and infinite scroll. Acceptable if the button triggers a URL update; otherwise same problems as infinite scroll.
For catalogs over 1,000 products per category, classic pagination with clean URL updates (either via load-more or standard ?page= links) is the defensible default.
Out-of-stock handling: 4 strategies, 4 trade-offs
When a product goes out of stock:
| Strategy | SEO impact | UX | When to use |
|---|---|---|---|
| Keep the URL, show "out of stock" | Preserves rankings and backlinks. Schema marked unavailable. | User sees the page but can't buy. | Permanent products with intermittent stock issues. |
| Redirect 301 to category | Transfers some link equity to the category. Loses the specific rankings. | User sees category, has to search. | Discontinued products with strong backlinks. |
| Return 410 Gone | Google quickly drops the URL from the index. | User sees an error / redirect. | Permanently discontinued products. |
| Return 404 | Same as 410 but slower for Google to reflect. | Same as 410. | Never the right choice if 410 is available. |
The default, for retail sites with churning stock, is "keep the URL with out-of-stock notice + unavailable schema + related product suggestions." This preserves rankings during stock gaps and keeps backlinks flowing to a valid URL.
The exception is seasonal or limited-edition products where "you can't buy this" is a confusing experience. For those, 301 to the parent category works better than pretending the product still exists.
International and multi-currency
Three architectural decisions for international:
- ccTLD vs subdirectory vs subdomain —
example.fr,example.com/fr/,fr.example.com. ccTLD: strongest geo signal, highest operational cost (separate infrastructure per market). Subdirectory: cheapest, strongest authority consolidation, weakest geo signal. Subdomain: middle ground, often the worst of both. - Language vs region targeting — French language for France, Belgium, Canada, Switzerland? One URL or four? Use hreflang annotations either way, but URL strategy affects indexation volume dramatically.
- Currency handling — prices shown in user's currency via JavaScript, or separate URLs per currency? The former is simpler; the latter creates near-duplicates that must be canonicaled.
Most catalog-sized sites settle on: subdirectories for locales (/en-us/, /en-gb/, /es-es/), hreflang annotations in an XML sitemap (not inline — doesn't scale past 5-6 locales), currency shown by JavaScript based on user location, and shared product catalog with localized descriptions only where economic (top-selling products).
The ecommerce audit priority stack
When auditing an ecommerce site, work the priority stack in order:
- Crawl budget — is Googlebot wasting capacity on useless faceted URLs?
- Indexation — of the URLs Google indexes, which shouldn't be there (facets, parameter noise, paginated junk)?
- PLP content depth — are category pages earning the category-query rankings they could?
- PDP schema + uniqueness — is product schema valid? Are descriptions unique?
- Out-of-stock hygiene — are discontinued products being handled correctly?
- International hreflang — for multi-region sites, are cross-locale references complete and bidirectional?
Most ecommerce audits I see fix #4 and #5 while ignoring #1 and #2. That's backwards. Crawl efficiency gates everything downstream.
Frequently asked questions
Should I use a subfolder or subdomain for my blog?
Subfolder (example.com/blog/). Keeps the authority consolidated. Subdomain blog posts help the subdomain, not the ecommerce store. Exception: if legal or operational reasons require separation (different CMS, different team ownership, different hosting), subdomain is acceptable.
Do product reviews help SEO?
Yes, on two levels. (1) Schema-marked-up reviews enable aggregate-rating rich results, lifting SERP CTR. (2) User-generated review content adds unique text to the PDP, strengthening thin-content avoidance. Don't fake reviews — Google has trained quality systems to detect synthetic review patterns.
How do I handle products with multiple SKUs for size and color?
Usually: one URL per product, variants in-page via dropdowns. Exception: variants where SERP queries differ materially ("red running shoes" vs "black running shoes") may warrant separate variant URLs canonicaled to a parent. Never expose all size × color combinations as separate indexable URLs.
Is it worth optimizing for image search?
For ecommerce with photogenic products, yes — image search drives real commercial traffic. Good alt text, proper image dimensions, WebP/AVIF formats, and image schema enable it. The image SEO optimization checklist covers the full setup. Don't optimize image SEO before the main site SEO is in order; it's a marginal layer.
Should my category pages have AI-generated content?
Human-reviewed AI assistance, yes. Pure AI-generated category descriptions that read identically across your site are pattern-detected by quality systems. The value comes from human editorial judgment about what to include — which use cases, which buying considerations, which comparisons matter for this category.
What to do next
Run Screaming Frog against your site with "Respect noindex" off. Export the URL list by status. If more than 30% of the crawled URLs are faceted or parameter-generated, your first audit finding is crawl efficiency — not anything else.
Supporting articles for this cluster: faceted navigation strategies, product schema with variants, out-of-stock SEO, and international ecommerce architecture. Start with whichever pain point hits your site hardest.
Related articles
Out-of-Stock Product Pages: 4 Strategies Compared
Most ecommerce sites handle out-of-stock products inconsistently, destroying seasonal rankings. The four viable strategies (keep with notice, 301 to category, 410 Gone, 404) each fit specific scenarios. Here's the decision tree and the reindexation implications.
Category Filters: UX vs SEO Trade-offs
Category filters are the UX feature with the most SEO footprint. Every filter selection is a potential URL. Most shouldn't be indexed, but the ones with real search intent should. The trade-off between UX flexibility and SEO cleanliness is worth deliberate design.
Product Schema: Variants, Availability, Ratings
Product schema is non-negotiable for ecommerce. Stars, prices, and availability in the SERP lift CTR 15-30%. But implementation mistakes — schema claiming features the page doesn't show, variant handling, availability lag — trigger manual penalties. Here's the implementation that works.