Why Ecommerce SEO Matters
Ecommerce SEO drives high-intent traffic that converts. Unlike paid ads, organic traffic compounds over time. Optimized product and category pages attract buyers who are ready to purchase, making ecommerce SEO one of the highest-ROI marketing channels.
The 20 Checks
Every check ranked by impact. Start at the top and work down.
| # | Check | Category | Impact | Difficulty |
|---|---|---|---|---|
| 1 | Write unique product descriptions | Content | Critical | Hard |
| 2 | Optimize product title tags | SEO | Critical | Easy |
| 3 | Add Product schema markup | Schema | Critical | Easy |
| 4 | Optimize category page content | Content | Critical | Medium |
| 5 | Use high-quality product images | Media | High | Medium |
| 6 | Add alt text to product images | Accessibility | High | Easy |
| 7 | Implement breadcrumb navigation | Structure | High | Easy |
| 8 | Handle out-of-stock products | UX | High | Easy |
| 9 | Manage faceted navigation | Technical | High | Hard |
| 10 | Optimize internal search | UX | Medium | Medium |
| 11 | Add customer reviews to products | Social Proof | Medium | Easy |
| 12 | Include related products | Internal Links | Medium | Easy |
| 13 | Optimize product URLs | URL | Medium | Easy |
| 14 | Add FAQ to product pages | Content | Medium | Easy |
| 15 | Implement pagination correctly | Technical | Medium | Medium |
| 16 | Use canonical tags for variants | Technical | Medium | Easy |
| 17 | Add shipping and return info | Trust | Medium | Easy |
| 18 | Optimize for local inventory | Local | Low | Medium |
| 19 | Monitor product page speed | Performance | Low | Easy |
| 20 | Track product impressions in GSC | Analytics | Low | Easy |
Product Page Optimization
The product page is where revenue happens. Every element needs to serve both search engines and buyers.
Title Tag Formula
Use this structure for product title tags: Brand + Product Name + Key Attribute + Size/Variant + Store Name. Keep titles under 60 characters. Examples:
- Good: "Nike Air Max 90 White/Red Running Shoes | YourStore"
- Bad: "Buy Shoes Online - Best Running Shoes - Cheap Shoes Sale"
The bad example keyword-stuffs and duplicates terms. The good example reads naturally and includes the exact product identifiers buyers search for.
Product Description Template
Write at least 300 words of unique copy per product. Structure it like this:
- Opening hook (1-2 sentences): State who this product is for and the primary benefit.
- Key features (3-5 bullets): Material, dimensions, weight, compatibility, certifications.
- Use-case paragraph: Describe 2-3 real scenarios where someone would use this product.
- Specifications table: Structured data for dimensions, weight, SKU, material — also helps with schema markup.
- Social proof snippet: Pull one strong customer quote if available.
Making Content Unique
Never copy manufacturer descriptions. Google sees the same text across hundreds of stores and filters duplicates. Rewrite every product with your brand voice. Add details the manufacturer misses: who the product is ideal for, how it compares to alternatives, what to pair it with. If you have 10,000+ SKUs, prioritize your top 200 revenue drivers first and work outward.
Category Page Optimization
Category pages target high-volume keywords and distribute authority to product pages. They deserve as much attention as your homepage.
Intro Text
Add 150-300 words of unique, keyword-rich content above the product grid. This text should include the primary keyword naturally, mention 2-3 subcategories or filters the user can browse, and answer a common buyer question. Place it above the fold but keep it collapsible on mobile so it does not push products below the viewport.
Faceted Navigation and Canonical Tags
Faceted filters (size, color, price range) generate thousands of URL combinations that create massive duplicate content problems. Here is how to handle it:
- Indexable facets: Only index filter combinations that have meaningful search volume (e.g., "red running shoes" = yes, "red + size 10 + under $100 + free shipping" = no).
- Canonical tags: For non-indexable facets, set the canonical URL to the parent category. For example,
/shoes?color=red&size=10should canonicalize to/shoes. - AJAX loading: Load filtered results via AJAX without changing the URL for purely UX filters. This prevents index bloat entirely.
- robots.txt: Block crawl-intensive parameter combinations in robots.txt to preserve crawl budget on large catalogs.
Pagination Best Practices
Poor pagination wastes crawl budget and hides products from search engines. Here is how to get it right.
Rel=prev/next (Still Useful)
Google confirmed they no longer use rel=prev/next for indexing, but it still helps other search engines and improves accessibility for screen readers. Keep implementing it:
<!-- Page 2 of /shoes --> <link rel="prev" href="https://example.com/shoes?page=1" /> <link rel="next" href="https://example.com/shoes?page=3" />
View All vs. Paginated
If your "view all" page loads under 3 seconds and has fewer than 100 products, make it the canonical version. Google prefers indexing a single comprehensive page over multiple paginated fragments. If load time exceeds 3 seconds or you have 100+ products, stick with paginated pages and ensure each page has a unique title tag (e.g., "Women's Running Shoes - Page 2 of 5").
Load More Buttons
AJAX "Load More" buttons are popular but create SEO issues if products only load via JavaScript. Implement dynamic rendering or ensure your load-more triggers pre-rendered HTML that Googlebot can crawl. Always include a fallback pagination with standard anchor links for non-JS users and crawlers.
Product Schema JSON-LD
Product schema enables rich results — star ratings, price, and availability appear directly in search results. This is the single highest-impact technical SEO change for ecommerce.
Complete Product Schema Example
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Nike Air Max 90",
"image": [
"https://example.com/photos/nike-air-max-90-white.jpg",
"https://example.com/photos/nike-air-max-90-side.jpg"
],
"description": "Classic Nike Air Max 90 running shoe with visible Air cushioning and premium leather upper.",
"sku": "NIKE-AM90-WHT-10",
"brand": {
"@type": "Brand",
"name": "Nike"
},
"offers": {
"@type": "Offer",
"url": "https://example.com/nike-air-max-90",
"priceCurrency": "USD",
"price": "129.99",
"priceValidUntil": "2026-12-31",
"availability": "https://schema.org/InStock",
"itemCondition": "https://schema.org/NewCondition",
"seller": {
"@type": "Organization",
"name": "YourStore"
}
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.6",
"reviewCount": "312"
}
}
</script> Validate your markup with Google's Rich Results Test (search.google.com/test/rich-results) and monitor errors in Search Console → Enhancements → Products. Common errors include missing priceCurrency, invalid availability values, and image URLs that return 404s.
Breadcrumb Implementation
Breadcrumbs appear in Google search results, improve navigation, and reinforce your site hierarchy for crawlers.
HTML + Schema Markup
Implement breadcrumbs with both visible HTML and BreadcrumbList schema. The schema tells Google exactly how to display them in search results:
<nav aria-label="Breadcrumb">
<ol>
<li><a href="/">Home</a></li>
<li><a href="/shoes/">Shoes</a></li>
<li><a href="/shoes/running/">Running</a></li>
<li aria-current="page">Nike Air Max 90</li>
</ol>
</nav>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{ "@type": "ListItem", "position": 1, "name": "Home", "item": "https://example.com/" },
{ "@type": "ListItem", "position": 2, "name": "Shoes", "item": "https://example.com/shoes/" },
{ "@type": "ListItem", "position": 3, "name": "Running", "item": "https://example.com/shoes/running/" },
{ "@type": "ListItem", "position": 4, "name": "Nike Air Max 90" }
]
}
</script> The last breadcrumb item should not have an item property since it represents the current page. Keep breadcrumb labels short — use the category name, not the full page title.
User-Generated Content, Images, and Stock Handling
Three areas that most ecommerce sites under-optimize and that drive measurable ranking and conversion gains.
User-Generated Content for SEO
Customer reviews and Q&A sections add fresh, keyword-rich content that search engines love. Reviews naturally include long-tail keywords, product attributes, and use-case language that you would never think to write yourself.
- Reviews: Display review text on the product page (not behind a tab), include aggregate rating schema, and allow photo/video reviews. Pages with reviews rank for 45% more keywords on average.
- Q&A sections: Each answered question adds indexable content. Structure Q&A with FAQ schema to earn rich results. Prioritize questions about sizing, compatibility, and use cases — these match real search queries.
- Review solicitation: Send review request emails 7-14 days after delivery. Offer a small incentive (discount code, loyalty points) for photo reviews to increase submission rates.
Image Optimization for Products
Product images drive traffic through Google Image Search and directly affect page speed, which is a ranking factor.
- Format: Serve images in WebP with JPEG fallback. WebP reduces file size by 25-35% versus JPEG at comparable quality.
- Dimensions: Serve images at the exact display size. Do not upload 4000px images and scale down with CSS — the browser still downloads the full file.
- Alt text: Write descriptive alt text like "Nike Air Max 90 white and red side view" — not "shoe" or "image123.jpg". Include the product name and one key visual attribute.
- Lazy loading: Use
loading="lazy"on all images below the fold. Above-the-fold hero images should useloading="eager"andfetchpriority="high"for LCP optimization. - Image sitemap: Submit an image sitemap in Google Search Console to help Google discover and index all product images, especially for JavaScript-heavy galleries.
Out-of-Stock Product Handling
How you handle out-of-stock products directly impacts SEO equity and user experience. Here is a decision tree:
- Temporarily out of stock: Keep the page live and indexable. Add a prominent "Out of Stock" banner, display related or alternative products, and add an email notification signup. This preserves backlinks and rankings.
- Permanently discontinued: 301 redirect to the closest equivalent product or the parent category. Never redirect to the homepage — that is a soft 404 in Google's eyes.
- Seasonal products: Keep the URL live year-round with a "Coming Back Soon" message and related product suggestions. The URL has accumulated authority that you lose if you 404 it.
- Never do this: Do not auto-redirect all out-of-stock products to a single page. Do not return a soft 404 (page loads but shows "product not found"). Do not noindex the page unless it has zero traffic and zero backlinks.
Tools for Ecommerce On-Page SEO
These tools help you audit, implement, and monitor the checks in this checklist.
| Tool | What It Does | Pricing | Best For |
|---|---|---|---|
| Screaming Frog | Crawls your entire site to find duplicate titles, missing schema, broken links, canonical issues, and thin content pages | Free up to 500 URLs / Paid $259/yr | Full technical audit |
| Ahrefs | Keyword research, competitor analysis, backlink audit, content gap analysis, and rank tracking for product/category pages | From $99/mo | Keyword research & competitor analysis |
| Semrush | Site audit, keyword research, position tracking, on-page SEO checker with specific optimization suggestions per page | From $130/mo | On-page optimization recommendations |
| Google Merchant Center | Free tool to submit product feeds, monitor data quality, and get your products into Google Shopping results | Free | Product feed & Shopping visibility |
| Google Rich Results Test | Validates Product, FAQ, Breadcrumb, and Review schema markup for errors and warnings | Free | Schema validation |
| Yoast SEO (WooCommerce) | WordPress plugin for product SEO titles, meta descriptions, schema markup, breadcrumbs, and readability analysis | Free / Premium $99/yr | WooCommerce stores |
| Shopify SEO Manager | Shopify app for bulk-editing meta titles, descriptions, alt text, and generating structured data across your catalog | From $20/mo | Shopify stores |
| Schema Markup Generator (Merkle) | Free tool to generate JSON-LD for Product, FAQ, Breadcrumb, and other schema types without writing code | Free | Quick schema generation |
| Google Search Console | Monitor product impressions, click-through rates, index coverage, and schema enhancement reports | Free | Performance monitoring |
| PageSpeed Insights | Test product page load times, Core Web Vitals, and get specific recommendations for image and code optimization | Free | Page speed auditing |
Frequently Asked Questions
Write unique product descriptions of at least 300 words that include the product name, key features, and buying-intent keywords. Optimize title tags using the formula: Brand + Product Name + Key Attribute + Size/Color. Add Product schema markup with price, availability, and review data so Google can display rich results with star ratings and pricing directly in search.
Use canonical tags on every product variant page pointing to the primary product URL to consolidate ranking signals. Never copy manufacturer descriptions verbatim — rewrite them in your brand voice with unique value propositions. For faceted navigation, apply noindex or canonical tags to filtered URLs that create near-duplicate pages, and block crawl-intensive parameters in robots.txt to preserve crawl budget.
Yes, category pages are some of the most valuable pages on an ecommerce site because they target high-volume, broad-intent keywords like "women's running shoes" or "wireless headphones." Optimize each category with 150-300 words of unique intro content, a keyword-rich H1, and proper internal links to subcategories and products. They also pass authority down to individual product pages through strategic internal linking.
Keep the page live and indexable with a clear out-of-stock message, suggested alternative products, and an email restock notification form. This preserves any backlinks and ranking signals the page has earned over time. Only use a 301 redirect to a similar product if the item is permanently discontinued and will never return — never return a 404 for a product that had traffic or backlinks.
Every product page needs Product schema with at minimum the name, description, image, SKU, brand, and offers (price, currency, availability). Include aggregateRating if you have reviews — this enables star ratings in search results, which can increase click-through rates by 20-35%. Validate your markup with Google's Rich Results Test and monitor for errors in Search Console's Enhancements report.
Compress all product images to WebP format and serve them at the exact display dimensions — don't rely on CSS to resize oversized files, as browsers still download the full image. Write descriptive alt text that includes the product name and one key visual attribute (e.g., "Nike Air Max 90 white and red side view"). Implement lazy loading on images below the fold and use an image CDN to reduce latency for global visitors.