Ecommerce SEO has unique challenges that standard SEO checklists miss. Product pages churn constantly, category pages generate thousands of filter combinations, and duplicate content appears at scale through variants, sorting options, and syndicated descriptions. This checklist addresses each layer systematically.
Site Architecture
Category Hierarchy
A clean category structure is the foundation. Follow these rules:
- Maximum 3 clicks from homepage to any product -- Deeper pages get less crawl priority and PageRank
- Flat hierarchy -- Homepage > Category > Subcategory > Product. Avoid 4+ levels.
- Keyword-mapped categories -- Each category URL should target a specific search intent
example.com/
/shoes/ # "shoes" - broad category
/shoes/running/ # "running shoes" - subcategory
/shoes/running/trail-running/ # "trail running shoes" - sub-subcategory
/shoes/running/nike-pegasus-41 # Product page
URL Structure
- Use hyphens, not underscores:
/running-shoes/not/running_shoes/ - Include the product name:
/shoes/nike-pegasus-41not/shoes/product-12345 - Keep URLs under 75 characters when possible
- Remove session IDs, tracking parameters, and sort parameters from canonical URLs
Product Page Optimization
Title Tags
Primary Keyword + Brand + Differentiator | Store Name
Nike Pegasus 41 Running Shoes - Men's Lightweight | ExampleStore
Target 50-60 characters. Include the product name, brand, and one key attribute.
Unique Product Descriptions
The number one ecommerce SEO mistake is using manufacturer descriptions. If 500 retailers use the same description, none of them rank.
- Write at least 150-300 words of unique content per product
- Include use cases, comparisons, and specific benefits
- Add user-generated content (reviews) for additional unique text
Product Schema Markup
Every product page needs this minimum structured data:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Nike Pegasus 41",
"image": "https://example.com/images/pegasus-41.jpg",
"description": "Lightweight neutral running shoe with React foam",
"brand": { "@type": "Brand", "name": "Nike" },
"sku": "NK-PG41-M-10",
"offers": {
"@type": "Offer",
"price": 129.99,
"priceCurrency": "USD",
"availability": "https://schema.org/InStock",
"url": "https://example.com/shoes/nike-pegasus-41"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": 4.6,
"reviewCount": 234
}
}
</script>
Category Page Optimization
Category pages often drive more organic traffic than individual product pages. Treat them as landing pages:
- Add 150-300 words of unique copy above or below the product grid
- Include target keywords in H1, URL, and first paragraph
- Internal link to subcategories and related categories from the body text
- Display review stars in product cards for visual CTR improvement in SERPs
Pagination
Use rel="next" and rel="prev" for paginated category pages. Ensure:
- Page 1 is the canonical for the category (not
/category?page=1) - Each paginated page has a unique meta description
- "View All" pages, if they exist, are either canonical or noindexed
Crawl Budget Management
Ecommerce sites waste crawl budget on:
| Crawl Waste | Solution |
|---|---|
| Faceted navigation URLs | Canonicalize or noindex filter combinations |
| Sort parameter URLs | Block in robots.txt: Disallow: /*?sort= |
| Internal search result pages | Noindex: <meta name="robots" content="noindex"> |
| Out-of-stock product pages | 200 with "out of stock" messaging, not 404 (preserve SEO equity) |
| Session ID URLs | Strip session IDs server-side |
| Paginated filter combos | Canonicalize to the unfiltered category page |
# robots.txt for ecommerce crawl management
User-agent: *
Disallow: /cart/
Disallow: /checkout/
Disallow: /account/
Disallow: /*?sort=
Disallow: /*?page=*&sort=
Disallow: /search?
Technical Checklist
- All product pages return 200 status (no soft 404s)
- Canonical tags point to the correct version (no www/non-www conflicts)
- XML sitemap includes only indexable product and category pages
- Image alt text includes product name and key attributes
- Mobile page speed under 3 seconds (critical for ecommerce conversion)
- HTTPS across the entire purchase flow
- Breadcrumb navigation with BreadcrumbList schema
- No orphaned product pages (every product linked from at least one category)
- Hreflang implemented correctly for multi-region stores
- Structured data validates in Google Rich Results Test
Out-of-Stock and Discontinued Products
Out of Stock (Temporary)
Keep the page live. Update the availability in schema to OutOfStock. Add a "notify me when available" form. This preserves rankings and backlinks.
Discontinued (Permanent)
- If a replacement exists: 301 redirect to the replacement product
- If no replacement: 301 redirect to the parent category
- Never 404 a page with backlinks without redirecting first
Monitoring
Track ecommerce-specific SEO metrics weekly:
- Indexed product count vs. total products in catalog (target: 95%+ coverage)
- Organic revenue by landing page type -- Category vs. product vs. blog
- Product page CTR in Search Console (benchmark: 3-5% for category terms)
- Crawl stats in Search Console -- Pages crawled per day should cover your full catalog within the crawl cycle
- Rich result impressions -- Track Product schema appearances in search