Skill 01 · Storefront Best Practices
Subchapter 1.27
reference/seo.mdMarkdown8 KBView on GitHub
SEO is critical for ecommerce - organic search drives high-intent traffic. Proper implementation helps search engines understand products and enables rich results (star ratings, price, availability in search).
Assumed knowledge: AI agents know basic SEO (meta tags, Open Graph, Core Web Vitals). This guide focuses on ecommerce-specific patterns.
Generate unique meta tags for every product page dynamically from product data:
Common mistake: Same title/description across all products. Generate dynamically from product data.
Enables rich results in search (star ratings, price, availability shown directly in search results).
Implement schema.org Product structured data with these critical fields:
Essential fields:
name, description, image, sku, brandoffers object with:
price: Current price (Medusa: use as-is; other backends: check format)priceCurrency: ISO 4217 code (USD, EUR, GBP)availability: Must accurately reflect real stock status (InStock, OutOfStock, PreOrder)priceValidUntil: Required for Google Shopping (set 30+ days in future)Critical: availability must be dynamic and accurate. Marking out-of-stock items as InStock violates Google’s guidelines.
Add aggregateRating object to Product schema when real reviews exist:
ratingValue: Average rating (e.g., “4.5”)reviewCount: Total number of reviewsbestRating: “5”, worstRating: “1”Displays star ratings in search results - powerful for CTR. Only use for real reviews - fake reviews violate guidelines.
Implement schema.org BreadcrumbList showing category hierarchy:
position, name, item URLAdd on homepage only: Organization name, URL, logo, contact information. Helps establish brand identity in search.
Product URLs: Use readable slugs with hyphens (/products/wireless-headphones-pro). Include keywords naturally, keep short (<75 characters), never change URLs.
Category URLs: Choose consistent structure:
/categories/electronics/laptops) for deep catalogs/categories/laptops) for simpler managementPagination URLs: Use query parameters (/products?page=2). Implement rel="prev" and rel="next" tags. Each page is canonical to itself (NOT to page 1) so all pages can be indexed.
Filter URLs: Use query parameters (/products?color=blue&size=large).
Canonical decision for filters:
Title tags: Pattern “Product Name - Key Feature | Store Name” (50-60 characters). Avoid generic titles or keyword stuffing.
Meta descriptions: Include 2-3 key features + USP (free shipping, returns, warranty) in 150-160 characters. Make it compelling.
Image alt text: Descriptive and specific. Describe what’s visible, include product name and key visual attributes. Don’t keyword stuff. Keep under 125 characters.
Common scenarios:
Variant handling:
Multiple category paths:
Filtered/sorted views:
/products?color=blue&sort=price → canonical to /productsImplementation:
<!-- On variant page (Red shirt) -->
<link rel="canonical" href="https://yourstore.com/products/cotton-tshirt" />
<!-- On filtered page -->
<link rel="canonical" href="https://yourstore.com/products" />Generate sitemaps dynamically from database to help search engines discover all products and categories.
Requirements:
lastModified when products change (fetch from database)noindex pages and filtered/sorted URLsCritical: Regenerate sitemap when products are added/updated. Submit sitemap URL to Google Search Console.
Ecommerce-specific SEO issues:
Duplicate content - Same product accessible via multiple URLs (variants, categories). Use canonical URLs to consolidate signals.
Missing Product schema - No structured data on product pages. Implement Product schema for rich results (ratings, price in search).
Incorrect availability status - Marking out-of-stock items as “InStock” in schema. Dynamically set based on real stock levels (violates Google guidelines).
Thin product content - Only image and price, no description. Add detailed descriptions, specifications, reviews (200+ words).
Static sitemap - Never updates when products change. Generate dynamically from database so search engines discover new products.
Poor image alt text - Missing or generic “product image”. Use descriptive alt text for image search traffic.