Skip to content

Ecommerce SEO: A Technical and Content Playbook for Online Stores

Ecommerce SEO Playbook

Ecommerce SEO: A Technical and Content Playbook for Online Stores

Category pages, product pages, and the crawl mechanics that decide whether either one ever shows up. This is the checklist we run against ecommerce catalogues at SEOelinks, built from a decade of untangling faceted navigation and thin product templates for stores based in Brampton, across Canada, and worldwide.

Get an ecommerce SEO audit

60–90%of URLs on a mid-size catalogue can be facet or parameter duplicates
3–6 motypical timeline to recover crawl budget after a faceted nav clean-up
30–50%of category page revenue often tied to non-brand organic once fixed
1–2srealistic LCP target for product templates on mobile

Why ecommerce SEO breaks differently than everything else

Content sites have hundreds of URLs and a handful of templates. Ecommerce sites have tens of thousands of URLs generated by two or three templates — category, subcategory, and product — multiplied by filters, sort orders, pagination, and locale variants. The math turns against you fast. A catalogue with 4,000 products and a facet system offering size, colour, price range, and brand can mathematically generate millions of unique URL combinations, almost all of them near-duplicates of a parent category page. Search engines do not crawl infinite URL spaces indefinitely; they allocate a crawl budget based on your site’s perceived value and server capacity, and once that budget is spent on faceted combinations nobody searches for, your actual product and category pages get crawled less often, indexed more slowly, and refreshed less frequently after price or stock changes.

The second structural difference is that ecommerce pages compete on thin, largely templated content. A product page for a phone case is 80% identical to every other phone case page on the same domain: same layout, same boilerplate shipping text, same size chart. Google’s helpful content systems and quality classifiers are tuned to detect exactly this pattern, and they are not shy about suppressing catalogues that read like a spreadsheet with pictures. Fixing ecommerce SEO is therefore a dual problem: control the crawl surface so the right URLs get attention, and add enough genuine differentiation to categories and products that they deserve to rank.

Crawl budget and faceted navigation

Facets exist to help shoppers narrow a catalogue by size, colour, brand, price, rating, or material. The SEO problem is not the facets themselves; it is that most platforms generate a fully indexable, fully crawlable URL for every facet combination by default. The fix is a tiered approach rather than a blanket rule, because different facets carry different search demand.

TIER 1

High-demand facet combinations

Colour or size facets that map to real search volume (“red running shoes”) deserve their own indexable, crawlable, internally linked URL with unique title, H1, and intro copy.

TIER 2

Low-demand but useful combinations

Combinations shoppers use but nobody searches (brand + material) should stay crawlable for UX but carry a self-referencing canonical or noindex,follow so they don’t compete for index slots.

TIER 3

Session and sort parameters

Sort order, pagination page-size, and session tracking parameters should be blocked in robots.txt or handled via parameter rules, and never linked with a-href from crawlable pages when avoidable.

Practical controls that consistently work: keep facet links as rel and JS-driven filters where possible so crawlers see fewer raw href combinations; cap the number of facets that can combine before the system generates a URL at all; and use a robots.txt disallow for known low-value parameter patterns (?sort=, ?sessionid=, ?view=) while relying on canonical tags, not robots.txt, for the near-duplicate content itself. Robots.txt blocking a URL that also carries backlinks or historical rankings just orphans that equity; canonicalisation lets the signals consolidate instead.

Canonical strategy that actually holds

Canonical tags on ecommerce sites fail for three recurring reasons: the platform auto-generates a canonical pointing to itself even on filtered URLs (defeating the purpose), pagination pages canonicalise to page 1 and lose their own long-tail value, and cross-domain canonicals get dropped by aggressive caching layers. The rule we apply: every filtered or sorted variant of a category canonicalises to the clean, unfiltered category URL unless that variant is a Tier 1 facet with its own content and intent, in which case it self-canonicalises. Paginated category pages (page 2, page 3) should self-canonicalise, not point back to page 1 — page 1 doesn’t contain the products on page 3, so collapsing the signal there tells search engines to ignore inventory that actually exists.

Product variants (a T-shirt in three colours) are the trickiest case. If each colour has meaningfully different demand and its own product images, give each colour its own URL and self-canonical, then link them to each other via a simple colour-swatch selector and, where the platform supports it, an isVariantOf schema relationship. If colours are cosmetic only and shoppers don’t search by colour, consolidate to one URL with a colour-swatch UI and skip generating separate crawlable pages entirely.

Category page content that isn’t filler

The lazy version of category content is 150 words of keyword-stuffed text sitting below the product grid where nobody reads it and Google increasingly discounts it. The version that works treats the category page as a genuine buying guide: a real intro that states what the category includes and excludes, a comparison framework (what to look for in a category so shoppers pick correctly), curated subcategory or use-case links, and a short FAQ addressing the two or three questions every customer asks a sales associate. This content should sit above or interleaved with the grid, not buried at the bottom as an afterthought, because engagement signals and scroll depth matter for how the page gets evaluated.

A category page that only lists products is a database view. A category page that helps someone decide between two options is a page worth ranking — the difference is almost always the writing, not the technical setup.

Product page optimisation

Unique, useful product page content is the single highest-leverage fix on most catalogues, and also the most commonly skipped because it doesn’t scale as a copy-paste task. The floor for a defensible product page: a title tag with the specific model/variant, not just the brand; a description that goes beyond the manufacturer feed (manufacturer copy is duplicated across every retailer selling that SKU, so it earns you nothing); real answers to pre-purchase questions (fit, compatibility, sizing quirks); genuine customer reviews rendered server-side, not lazy-loaded only via JS; and clear, crawlable breadcrumbs back to the category and subcategory. For catalogues too large to hand-write every product description, prioritise by revenue contribution — rewrite the top 20% of SKUs that drive 70–80% of category revenue first, and use structured attribute-based templates (not literal manufacturer copy) for the long tail.

Product, Offer, and Review structured data

Product schema is one of the few markup types with a direct, visible SERP payoff — price, availability, and star ratings appear in the results themselves, which materially changes click-through even without a ranking shift. The requirements tightened over the past few years: review markup must reflect reviews genuinely present and visible on the page (no aggregate ratings sourced only from a third-party feed with nothing shown on-page), and price/availability must stay synced with the actual buy box, because stale schema pricing triggers manual review and rich result suppression.

Schema type Required fields Common failure
Product name, image, description, sku Missing or generic image URLs shared across variants
Offer price, priceCurrency, availability, url Price not updated on sale/clearance, causing mismatch flags
AggregateRating ratingValue, reviewCount Ratings pulled from a feed with no visible reviews on-page
Review author, reviewRating, reviewBody Fabricated or incentivised reviews without on-page disclosure

Out-of-stock and discontinued product handling

This single decision tree causes more lost equity than almost any other ecommerce SEO issue, because the default platform behaviour (delete the page, return a 404) throws away rankings, backlinks, and review content that took months to accumulate. The correct handling depends on whether the product is temporarily or permanently unavailable.

Temporarily out of stock

Keep the page live and indexable, set availability to OutOfStock in schema, show an expected restock date if known, and surface 3–5 close substitutes. Do not redirect or noindex — the page still ranks for the query and will convert on restock.

Discontinued with a direct replacement

301 redirect to the replacement product only if it is genuinely equivalent (same use case, similar price band). A mismatched redirect (basic model to premium model) inflates bounce and can be treated as a soft-404 signal.

Discontinued with no replacement

Keep the page live as an informational/archive page with a clear discontinued notice and links to the closest current category, rather than 404 or redirect to the homepage. A 410 (Gone) is acceptable only when the product will never return and no reasonable substitute exists.

Seasonal products

Never delete and rebuild each year. Keep the URL permanent and toggle stock status seasonally — this preserves the ranking history that would otherwise be rebuilt from zero every cycle.

Internal linking hubs

Ecommerce internal linking should be deliberate, not just whatever the theme’s default breadcrumb and related-products widget produces. Build category hub pages that sit above your product-level categories and link down into subcategories, buying guides, and comparison content, then link back up from every product and subcategory page. This concentrates authority on the pages you most want to rank (usually category and subcategory level, where commercial intent and search volume both peak) rather than diffusing it evenly across thousands of low-value product URLs. Related-product and “customers also bought” modules help conversion but do little for SEO unless the anchor text and destination pages are chosen with keyword targeting in mind rather than pure collaborative-filtering output.

Pagination that doesn’t fragment rankings

View-all pages work well for small categories (under roughly 60–80 products) but hurt load time and crawl efficiency on large ones. For large categories, self-canonicalising paginated pages with rel=next/prev style linking (even though Google deprecated formal support for the tags, the link pattern still helps crawlers discover the sequence) combined with a load-more or infinite-scroll pattern that degrades gracefully to real, crawlable paginated URLs is the safest approach. The failure mode to avoid is infinite scroll implemented purely in JS with no underlying paginated URL structure — products beyond the first viewport batch become effectively invisible to crawlers that don’t execute deep scroll-triggered fetches reliably.

Variant duplication

Size and colour variants generate the ecommerce industry’s most common duplicate-content problem. Before building the URL structure, map actual search demand per variant using keyword research, not assumptions from the merchandising team. If “blue leather jacket” and “black leather jacket” both get meaningful search volume with different intent nuances (blue skews more fashion-forward, searched with different modifiers), separate URLs with unique imagery and copy earn their keep. If nobody searches by colour for a given category, consolidate into one URL with a client-side swatch selector, and use canonical plus Product schema’s isVariantOf/isAccessoryOrSparePartFor relationships to keep the family connected without fragmenting link equity across near-identical pages.

Product template speed

Product templates carry the heaviest page weight on most stores: multiple high-resolution images, a review widget, an upsell carousel, size-chart modals, and often three or four third-party marketing scripts (chat, retargeting pixels, reviews platform, personalisation engine). Each of those degrades Largest Contentful Paint and Interaction to Next Paint independently, and Core Web Vitals remain a real, if modest, ranking factor while also directly affecting conversion rate. Practical wins we see repeated across catalogues: serve responsive, next-gen image formats with proper width/height attributes to prevent layout shift; lazy-load everything below the fold except the primary product image; defer non-critical third-party scripts until after first interaction; and audit the upsell/cross-sell carousel specifically, since it is frequently the single heaviest, least necessary element on the page.

Hreflang basics for multi-region stores

Stores selling into multiple countries or languages need hreflang to tell search engines which version of a product or category page to serve to which market, and the two failure modes are near-universal: missing return tags (page A points to page B but B doesn’t point back to A, which invalidates the whole cluster) and hreflang values that don’t match actual language/region combinations available (declaring en-CA when the page is only in en-US English with USD pricing). Keep it simple — one hreflang cluster per equivalent product or category across regions, always include a self-referencing tag, always include an x-default for the fallback version, and verify with a crawler tool after every major catalogue migration, because platform re-platforming is the single most common cause of hreflang breaking silently.

Measuring revenue by landing page

The metric that actually matters for ecommerce SEO is not rankings or even organic sessions in isolation — it is organic revenue and assisted conversions attributed to the landing page that brought the visitor in. Set up landing-page-level revenue reporting in your analytics platform segmented by organic traffic, then cross-reference against the crawl and indexation work above: category pages that received new buying-guide content should show rising organic sessions and revenue within 8–16 weeks; product pages that got out-of-stock handling fixed should show recovered rankings within days of restock, not months. Track this quarterly at minimum, and flag any high-revenue landing page that is losing organic visibility immediately — those are usually the pages where a facet, canonical, or schema regression slipped through after a platform update.

Site architecture, visualised

Ecommerce site architecture tree from homepage to product Home Category A Category B Category C Products (indexable, self-canonical, schema-tagged)

Illustrative crawl-depth efficiency after hub consolidation vs. flat facet sprawl

Where to start

Week 1–2: Crawl audit

Full crawl to map facet URL sprawl, canonical conflicts, and orphaned out-of-stock pages before touching content.

Week 3–6: Technical fixes

Canonical rules, robots.txt parameter handling, schema deployment, and out-of-stock logic corrected at the template level.

Week 6+: Content build-out

Category hub content and top-revenue product page rewrites, prioritised by traffic and margin, not alphabetically.

FAQs

Should we noindex all faceted URLs?

No — a blanket noindex on every facet throws away the Tier 1 combinations that carry real search demand. Segment facets by demand first, then apply noindex or canonical selectively.

Is duplicate product content really a ranking penalty?

It isn’t a manual penalty in most cases, but algorithmic quality systems can suppress thin, duplicated templates from ranking well, which produces the same practical outcome as a penalty.

Should out-of-stock products 404?

Only if permanently discontinued with no substitute and no ranking history worth preserving. Otherwise keep the page live with OutOfStock schema or redirect to a genuine equivalent.

Do we need separate URLs for every colour variant?

Only where keyword research shows real search demand split by colour or size. Otherwise consolidate to one URL with a swatch selector to avoid fragmenting link equity.

How long until ecommerce SEO fixes show revenue impact?

Technical fixes (canonical, schema, out-of-stock handling) can show recovery within days to weeks. Category and product content rewrites typically need 8–16 weeks to mature in rankings.

Fix the crawl, then fix the content

SEOelinks has run ecommerce SEO programmes for stores in Canada and worldwide since 2014, based in Brampton, Ontario. If your catalogue has facet sprawl, thin product pages, or lost revenue after a re-platform, we can map the fix.

Talk to SEOelinks

Leave a Reply

Your email address will not be published. Required fields are marked *