---
title: "E-commerce: Out-of-Stock and Variant URLs"
slug: "ecommerce-product-urls"
category: "seo"
tags: ["seo", "ecommerce", "product", "canonical", "out-of-stock", "variants", "redirects"]
status: "stable"
last_updated: 2026-09-27
summary: "Keep temporarily out-of-stock product URLs live, retire discontinued products with 301 or 410 by case, and consolidate color and size variants onto one canonical product URL."
related: ["[[seo/ecommerce-seo]]", "[[seo/redirects]]", "[[seo/schema-markup-deep]]", "[[seo/cannibalization]]", "[[seo/pagination-and-facets]]", "[[seo/structured-data]]"]
---

## Overview

A product URL has a lifecycle: it launches, goes in and out of stock, sprouts variants, and eventually gets discontinued. Each stage is a chance to lose the ranking the page has built, either by removing a URL that should have stayed or by splitting one product across many near-duplicate URLs. This page covers the two decisions that most often go wrong: what status code a product URL returns as availability changes, and how variants share one canonical URL. For product schema, reviews, facets, and category pages, see [[seo/ecommerce-seo]].

## Keep the page on temporary out-of-stock; return 410 only for permanently gone

Out-of-stock handling is a frequent e-commerce SEO mistake. The right answer depends on whether the product comes back.

- Temporary out-of-stock: keep the URL, set `availability: "OutOfStock"` in the Offer, and surface a "notify me" form on the page. The ranking and the indexed page persist; conversion resumes on restock.
- Discontinued, no replacement: return 410 (Gone) or 404. Google treats both as removal signals and drops the URL as it recrawls; 410 states the intent more explicitly.
- Discontinued, has a replacement product: 301 to the replacement. Signal transfers; the old URL retires.
- Discontinued with no replacement but inbound links worth keeping: 301 to the parent category. Less ideal than a replacement but better than a 410 if the equity matters.

See [[seo/redirects]] for the status-code reference.

## Variants live on one canonical URL with options, not separate URLs

Color, size, and material variants are options on a single canonical product page. Splitting each variant onto its own URL forces a canonical war that the crawler resolves badly.

- One structured data block per canonical page. Google's product variant markup uses a `ProductGroup` whose `hasVariant` lists each variant `Product`; see [[seo/schema-markup-deep]].
- The canonical URL is the parent product. Variant query strings (`?color=black`) point at the canonical via `<link rel="canonical">`.
- Indexable variants only when the variant is a distinct purchase decision with distinct demand (one-off colorways with their own marketing, for example).
- Schema's `Offer` array lists each in-stock variant with its own price and SKU; the canonical absorbs the ranking signal.

This pattern keeps the ranking weight on one URL and lets the page rank for the broad query and the variant-specific query at once.

## Related

- [[seo/ecommerce-seo]]
- [[seo/redirects]]
- [[seo/schema-markup-deep]]
- [[seo/cannibalization]]
- [[seo/pagination-and-facets]]
- [[seo/structured-data]]
