Panduan Product Variant SEO

When untuk give setiap product variant -nya own URL vs. canonical untuk base, ProductGroup + hasVariant schema (Feb 2024), dan how Shopify, WooCommerce, BigCommerce, dan Magento differ.

Pertama kali diterbitkan: 26 Jun 2026 · Terakhir diperbarui: 3 Agu 2026 · Advanced
Bahasa
1 sinyal bukti di halaman ini

sebuah product sold di banyak options (size, color, storage) generates near-duplicate URLs. Consolidate ones dengan no standalone search demand untuk sebuah base URL dengan sebuah canonical, dan give sebuah dapat diindeks URL hanya untuk variants itu memiliki mereka own demand dan dapat carry unique konten. Google's default adalah sebuah separate URL per variant canonicaling untuk parameter-free base — tetapi SearchPilot ditemukan sebuah 22% uplift dari doing reverse (base canonicals untuk best variant), so context wins. Mark relationship up dengan ProductGroup + hasVariant (Feb 2024). Platforms differ: Shopify auto-canonicals setiap?variant=ID untuk base, BigCommerce memiliki cleanest dibangun-di handling, WooCommerce/Magento depend pada plugins atau config. Schema describes relationship; ini doesn't membuat sebuah variant peringkat.

TL;DR — Variants buat near-duplicate URLs; job adalah sorting which deserve independent peringkat dan which untuk consolidate. Google’s default: sebuah separate URL per variant (path segment atau kueri parameter) dengan parameter-free base sebagai canonical. Reverse ini — base canonicaling untuk sebuah tinggi-demand variant — when sebuah spesifik variant memiliki search demand dan unique konten untuk earn ini (SearchPilot diukur sebuah 22% organic uplift doing exactly ini). Mark relationship up dengan ProductGroup + hasVariant (Feb 2024); single-halaman situs perlu one canonical URL untuk group, multi-halaman situs perlu full self-berisi markup per halaman, dan variesBy harus gunakan full schema.org URLs. pertahankan canonical, tautan internal, dan sitemap consistent — rel=canonical adalah sebuah hint, not sebuah directive. Platform defaults differ dan semua perlu auditing.

tension, stated plainly

setiap variant adalah sebuah fork di road. Give ini -nya own dapat di-crawl URL dan Anda’ve dibuat sebuah near-duplicate itu splits tautan equity dan eats anggaran crawling. Select ini hanya melalui JavaScript dengan no URL perubahan dan itu spesifik variant state memiliki no address dari -nya own — ini dapat’t menjadi di-crawl, terindeks, atau diperingkatkan sebagai sebuah distinct entity, separate dari pertanyaan dari whether Google renders halaman’s JavaScript di semua. right jawaban isn’t sebuah blanket aturan — ini adalah sebuah per-variant judgment panggil driven oleh two inputs: melakukan ini variant memiliki -nya own search demand, dan dapat Anda give ini genuinely unique konten. Everything below adalah di service dari membuat itu panggil correctly dan lalu implementing ini cleanly. ini adalah variant-spesifik deep dive itu sits alongside product halaman SEO; itu guide covers whole PDP, ini one zooms di pada variant decision.

What Google actually recommends

Google’s ecommerce struktur URL guidance adalah explicit itu variants seharusnya get dapat di-crawl URLs, not JS-hanya state perubahan.

Evidence for this claim Google recommends crawlable URLs for product variants that it should discover. Scope: Use links with href values and stable URL structures; JavaScript state alone may not expose each variant. Confidence: high · Verified: Google: Ecommerce URL structure

-nya recommended structures: “A path segment, such as /t-shirt/green(terjemahan) “sebuah path segment, such sebagai undefined” atau “A query parameter, such as /t-shirt?color=green.” (terjemahan) “sebuah kueri parameter, such sebagai undefined.” Both adalah fine — pick one dan menjadi consistent.

untuk canonical, default adalah untuk consolidate untuk clean base: “Use the URL with the query parameter omitted as the canonical URL. This can help Google better understand the relationship between product variants.” (terjemahan) “gunakan URL dengan kueri parameter omitted sebagai canonical URL. ini dapat help Google better memahami relationship antara product variants.” dan untuk path-based variants: “For products with unique URLs per variant, include the canonical product URL on all variant pages using a <link rel="canonical"> tag.” (terjemahan) “untuk products dengan unique URLs per variant, sertakan canonical product URL pada semua variant halaman menggunakan sebuah undefined tag.”

whole poin adalah reducing redundant retrievals. Google: “Minimize the number of alternative URLs that return the same content” (terjemahan) “Minimize angka dari alternative URLs itu mengembalikan sama konten” — because “the same content may be retrieved multiple times by the crawler if Google thinks two URLs are different but result in the same page being returned.” (terjemahan) “yang sama konten dapat menjadi retrieved multiple times oleh crawler jika Google thinks two URLs adalah berbeda tetapi hasil di yang sama halaman menjadi dikembalikan.” itu’s crawl-budget cost dari variant sprawl di one kalimat.

When sebuah variant earns -nya own dapat diindeks halaman

A variant needs both demand and differentiation to earn an independently indexable URL. Sumber: Google Search Central

First ask whether the variant has measurable standalone search demand. If not, consolidate it to the preferred product URL. If demand exists, ask whether the page can provide meaningfully distinct copy, media, specifications, and offer data. If not, consolidate. If both conditions are met, use a distinct, self-canonical variant URL and align the canonical, internal links, and sitemap with that choice.

© Patrick Stox LLC · CC BY 4.0 ·

default (“canonical everything to the base” (terjemahan) “canonical everything untuk base”) adalah correct untuk overwhelming majority dari variants. Nobody searches “size medium” (terjemahan) “size medium” atau “the third blue” (terjemahan) “ ketiga blue” di isolation, so itu seharusnya consolidate. tetapi beberapa variants adalah nyata, standalone kueri — “512GB iPhone 15 Pro,” (terjemahan) “512GB iPhone 15 Pro,” “navy blue trench coat,” (terjemahan) “navy blue trench coat,” “extra-wide running shoes.” (terjemahan) “extra-wide running shoes.” untuk itu, two conditions both memiliki untuk hold sebelum Anda split them out:

  1. There’s measurable search demand untuk itu variant. Pull volume untuk “[product] + [variant]” (terjemahan) “[product] + [variant]” di sebuah keyword alat. Zero volume → consolidate.
  2. Anda dapat give halaman genuinely unique konten — -nya own copy, images, specs, reviews. jika Anda dapat’t differentiate ini, sebuah terindeks-tetapi-thin variant halaman adalah worse daripada consolidation.

ini adalah hybrid approach: one master product halaman, plus dedicated variant URLs only untuk tinggi-demand kueri Anda dapat actually differentiate. Worth menjadi jelas tentang what ini adalah: Google’s docs tell Anda variants perlu addressable URLs dan sebuah canonical strategy, tetapi demand-plus-unique-konten gate itself adalah practitioner decision-membuat (yang sama approach Yoast recommends), not sebuah Google eligibility requirement atau sebuah guarantee itu sebuah qualifying variant akan peringkat. Spin up sebuah separate dapat diindeks URL without unique konten dan Anda’ve recreated duplicate-konten masalah Anda adalah trying untuk hindari.

counterintuitive bagian: canonical direction isn’t fixed

Here’s where conventional advice cracks. SearchPilot ran sebuah controlled split test itu melakukan opposite dari default — mereka changed main product halaman’s canonical dari self-referential untuk poin at sebuah spesifik variation page. hasil: “the best estimate being a 22% uplift to organic traffic to those pages.” (terjemahan) “ best estimate menjadi sebuah 22% uplift untuk trafik organik untuk itu halaman.”

context itu dibuat ini berfungsi: situs memiliki sudah dibuat variants dapat diindeks dengan self-referential canonicals, tetapi itu variant halaman “were not getting indexed consistently, and were not receiving as much organic traffic as had been hoped.” (terjemahan) “adalah not getting terindeks consistently, dan adalah not receiving sebagai much trafik organik sebagai memiliki telah hoped.” Pointing main halaman’s canonical di best-known variant concentrated signals where demand actually adalah.

lesson isn’t “always reverse your canonicals.” (terjemahan) “selalu reverse Anda canonicals.” SearchPilot adalah careful here: “Every ecommerce website’s setup will be different depending on a lot of factors, including the number of variations per product, the internal linking structure, and the lifetime of products on the website. This approach may not work for everyone.” (terjemahan) “setiap ecommerce situs web’s setup akan menjadi berbeda depending pada sebuah lot dari factors, including angka dari variations per product, internal linking structure, dan lifetime dari products pada situs web. ini approach dapat not berfungsi untuk everyone.” lesson adalah itu canonical direction adalah sebuah decision, not sebuah default — poin ini di whichever URL memiliki demand dan konten untuk deserve pengindeksan. untuk how Google picks sebuah canonical when Anda signals disagree, see canonicalization — ada roughly 40 signals di play, dan rel=canonical tag adalah sebuah strong one tetapi not satu-satunya one.

pertahankan signals consistent

sebuah tag canonical adalah sebuah hint, not sebuah command. Google dapat dan akan pick sebuah berbeda canonical daripada one Anda declared jika Anda lainnya signals contradict ini — which adalah exactly what “Duplicate, Google chose a different canonical” (terjemahan) “Duplicate, Google chose sebuah berbeda canonical” di Search Console berarti. fix adalah consistency: URL Anda canonicalize untuk seharusnya menjadi yang sama URL Anda tautan untuk internally dan yang sama URL Anda list di Anda sitemap. When tag canonical poin one cara dan Anda tautan internal poin lainnya, Anda’ve handed Google sebuah alasan untuk override Anda. (ini adalah yang sama consistency discipline itu governs faceted navigation, where filter URLs buat yang sama near-duplicate sprawl.)

product variant dan selected-offer contract

untuk setiap dapat di-crawl atau feed-submitted variant URL, sistem below harus identify yang sama sellable selection. Evidence for this claim Google recommends crawlable URLs for product variants that it should discover. Scope: Use links with href values and stable URL structures; JavaScript state alone may not expose each variant. Confidence: high · Verified: Google: Ecommerce URL structure

LayerContract
Requested URLEncodes intended product dan variant state di sebuah stable, shareable form.
terlihat PDPmemuat intended product identity, selected attributes, SKU, price, currency, dan availability; sebuah fresh navigation reproduces state.
Canonical/indexabilitymengikuti declared parent-product atau dapat diindeks-variant strategy.
data terstrukturmenggunakan matching product/group identity, SKU/GTIN, attributes, Offer.url, price, currency, dan availability.
Merchant atau agent feedmengirim yang sama item ID, group ID, offer facts, dan sebuah landing URL itu recreates submitted variant.
Cart dan checkoutmenambahkan itu exact SKU dan revalidates represented price, currency, dan availability without silently substituting lainnya variant.

dengan kata lain, terlihat PDP, rendered Product JSON-LD, feed item, selected variant, cart, dan checkout seharusnya agree pada product identity, SKU, group ID, selected attributes, price, currency, dan availability. Checkout dapat legitimately revalidate fast-changing stock, delivery, tax, atau price. When state perubahan, ini seharusnya jelaskan perubahan alih-alih completing sebuah berbeda offer di bawah yang sama selection. Postcode-dependent fulfillment dapat refine umum availability ditampilkan sebelum location adalah known, tetapi published offer seharusnya not claim sebuah state backend sudah knows adalah salah.

sebuah parent-product strategy dapat expose selectable variants while consolidating mereka URLs untuk parent. sebuah dapat diindeks-variant strategy memerlukan setiap qualified variant untuk reconstruct itself, self-canonicalize, menerima dapat di-crawl tautan internal, dan carry variant-spesifik halaman dan offer data. Mixing two strategies—such sebagai self-canonical variant URLs whose tautan internal dan sitemap masih poin hanya untuk parent—membuat contradictory evidence.

Evidence for this claim Google recommends crawlable URLs for product variants that it should discover. Scope: Use links with href values and stable URL structures; JavaScript state alone may not expose each variant. Confidence: high · Verified: Google: Ecommerce URL structure

jangan gunakan sebuah fragment such sebagai #blue-large when sebuah feed, server, crawler, atau external agent harus permintaan sebuah spesifik variant. browser melakukan not kirim fragment di HTTP permintaan, so origin cannot select sebuah berbeda respons dari ini dan feed validators cannot rely pada ini sebagai sebuah distinct landing-halaman state. gunakan path atau kueri parameter when selection harus menjadi addressable outside sudah-running browser halaman. Google’s JavaScript SEO guidance menjelaskan why fragment-based konten states adalah unreliable untuk search.

ProductGroup data terstruktur ( Feb 2024 update)

di February 2024 Google ditambahkan structured-data mendukung untuk product variants via baru ProductGroup jenis. ini adalah didukung cara untuk tell Google “this blue size-M shirt and this red size-L shirt are the same product in different options.” (terjemahan) “ini blue size-M shirt dan ini red size-L shirt adalah yang sama product di berbeda options.” ini doesn’t membuat variants peringkat — data terstruktur aids understanding dan rich-hasil eligibility, not rankings — tetapi ini adalah how Anda membuat parent-child relationship machine-readable. Evidence for this claim Google supports ProductGroup structured data to describe product variants and their varying properties. Scope: Valid markup aids understanding and eligibility but does not guarantee ranking or display. Confidence: high · Verified: Google: Product variants structured data

pieces:

  • ProductGroup — parent jenis. Google’s saat ini documentation lists hanya name sebagai required di ProductGroup tingkat; productGroupID ( parent SKU/ID) dan variesBy adalah recommended, not diperlukan — though skipping them defeats poin dari markup, since Google perlu variesBy untuk know which attribute actually distinguishes variants. Evidence for this claim Google supports ProductGroup structured data to describe product variants and their varying properties. Scope: Valid markup aids understanding and eligibility but does not guarantee ranking or display. Confidence: high · Verified: Google: Product variants structured data
  • hasVariant — nests setiap Product variant di bawah parent group (Approach 1, more compact dan recommended one).
  • isVariantOf — inverse: ditambahkan untuk setiap Product untuk tautan ini back untuk -nya parent group (Approach 2, which dapat suit beberapa CMS setups better).
  • variesBy — lists variant-defining properties, dan ini adalah paling umum pitfall: ini harus gunakan full schema.org URLs like https://schema.org/color dan https://schema.org/size, not pendek strings "color" / "size".

Single-halaman vs. multi-halaman penting. Google: “For single-page sites, there must be only one distinct canonical URL for the overall ProductGroup that all variants belong to.” (terjemahan) “untuk single-halaman situs, there harus menjadi hanya one distinct canonical URL untuk overall undefined itu semua variants belong untuk.” tetapi “for multi-page sites… each page must have full and self-contained markup for the entities defined on that page.” (terjemahan) “untuk multi-halaman situs… setiap halaman harus memiliki full dan self-berisi markup untuk entities defined pada itu halaman.” So jika setiap variant memiliki -nya own URL, setiap variant halaman carries -nya own complete markup — Anda tidak share one block di seluruh them.

setiap variant Product perlu sebuah unique @id, sebuah unique sku atau gtin, -nya own variant attributes (color, size), sebuah isVariantOf pointer untuk parent, dan sebuah Offer whose url matches saat ini halaman. usual failures adalah missing unique variant IDs, sebuah inconsistent productGroupID antara parent dan variants, dan variesBy-harus-menjadi-sebuah-full-URL trap above. Validate dengan Rich hasil Test, lalu pemeriksaan URL, lalu sitemap submission.

Which variants belong di markup?

Markup seharusnya describe catalog shoppers dapat actually select, not setiap combination sebuah configurator dapat theoretically produce. sertakan sebuah variant when ini memiliki sebuah stable identity such sebagai sebuah SKU atau GTIN, mewakili sebuah nyata attribute combination, adalah reachable melalui saat ini product experience, belongs untuk sama product group, dan memiliki sebuah offer state situs dapat pertahankan saat ini. terlihat selector, variant URL strategy, dan ProductGroup graph seharusnya describe yang sama set. Evidence for this claim Google supports ProductGroup structured data to describe product variants and their varying properties. Scope: Valid markup aids understanding and eligibility but does not guarantee ranking or display. Confidence: high · Verified: Google: Product variants structured data

melakukan not generate Cartesian product dari setiap color, size, material, accessory, dan service option when banyak combinations melakukan not exist atau cannot menjadi purchased. itu membuat sebuah enormous, misleading entity graph dengan invented products dan stale offers. sebuah one-halaman selector dapat nest -nya nyata variants; variant-spesifik halaman perlu complete markup untuk entities pada setiap halaman. sebuah configurable atau dibuat-untuk-order product seharusnya mark up genuine purchasable product dan saat ini offer—not manufacture thousands dari hypothetical SKUs solely untuk schema.

anggaran crawling: scale masalah

Variant URL proliferation adalah sebuah umum crawl-budget drain pada besar ecommerce situs, though how much ini actually costs Anda depends pada Anda catalog’s scale dan Google’s existing crawl demand untuk Anda domain — ini isn’t sebuah fixed universal cost. 200-products-×-20-variants = 4 000-near-duplicate-URLs math adalah sebuah worked contoh untuk tampilkan shape dari masalah, not sebuah diukur average untuk setiap situs. anggaran crawling adalah sebuah efficiency concern, not sebuah peringkat factor — tetapi pada sebuah besar catalog, crawl wasted pada redundant variant URLs adalah crawl not spent pada Anda baru dan updated halaman. Don’t estimate Anda actual exposure dari arithmetic alone: pull Search Console’s crawl Stats report (Settings → crawl Stats) untuk see how much dari Googlebot’s activity pada Anda situs adalah hitting variant URLs, atau periksa server logs directly untuk ?variant=/path-segment variant hits versus total crawl permintaan. Consolidating rendah-nilai variants untuk sebuah canonical base, di atas time, reduces crawl pressure itu redundant URLs buat.

Evidence for this claim Google recommends consistent canonical URLs for ecommerce variant URL patterns. Scope: Canonicalization is a hint; independently useful variants may warrant separate canonical URLs. Confidence: high · Verified: Google: Ecommerce URL structure

Platform-oleh-platform perilaku

defaults differ, dan semua dari them perlu auditing:

  • Shopify appends ?variant=ID automatically dan canonicals setiap one dari itu parameter URLs back untuk base /products/<slug>. itu’s right panggil untuk vast majority dari stores — ini consolidates everything cleanly. catch: ini consolidates everything, so jika Anda actually ingin sebuah tinggi-demand variant untuk peringkat independently, Shopify’s automatic canonicalization berfungsi terhadap Anda, dan ketiga-party apps dan custom themes sometimes break canonical entirely.
  • WooCommerce gives Anda full URL control, which berarti canonical handling rides pada Anda SEO plugin (Yoast, peringkat Math). extra wrinkle adalah attribute archive halaman, which dapat generate mereka own duplicate URLs pada top dari variants.
  • BigCommerce adalah widely regarded oleh practitioners sebagai having strongest out-dari—box canonical handling dari four — variant URLs adalah natively canonicalized. Treat itu sebagai sebuah practitioner assessment alih-alih something Google atau BigCommerce documents sebagai sebuah formal guarantee, dan confirm saat ini perilaku terhadap Anda own platform versi sebelum relying pada ini.
  • Magento umumnya memerlukan manual configuration atau extensions, dan because layered navigation dan product variants both produce duplicate URLs, two masalah compound jika Anda tidak address both.

pada Bing specifically, Bing Webmaster alat offers URL Normalization — sebuah code-free cara untuk consolidate parameter variants tanpa menambahkan sebuah tag canonical untuk setiap halaman, which Microsoft itself memiliki called “better than canonical” (terjemahan) “better daripada canonical” untuk ini gunakan.

Myths worth killing

  • “Variants cause a duplicate-content penalty.” (terjemahan) “Variants cause sebuah duplicate-konten penalty.” tidak ada duplicate-konten penalty. cost adalah signal dilution dan crawl waste, not sebuah punitive tindakan — tetapi outcome (weaker rankings) dapat feel yang sama, so ini masih penting.
  • “Always canonical every variant to the base.” (terjemahan) “selalu canonical setiap variant untuk base.” SearchPilot’s 22% hasil menampilkan reverse dapat win. Direction adalah contextual.
  • ?color=green parameters are bad for SEO.” (terjemahan) “undefined parameters adalah buruk untuk SEO.” Google explicitly recommends kueri parameters or path segments. Parameters adalah fine dengan right canonical.
  • “ProductGroup schema makes variants rank better.” (terjemahan) “ProductGroup schema membuat variants peringkat better.” ini aids understanding dan rich-hasil eligibility; ini adalah not sebuah sinyal peringkat.
  • “Shopify handles all variant SEO so I’m done.” (terjemahan) “Shopify handles semua variant SEO so I’m done.” -nya default consolidation adalah correct untuk sebagian besar products tetapi actively mencegah tinggi-nilai variants dari peringkat independently, dan apps break ini.
  • “JS-only variant selection (no URL change) is best.” (terjemahan) “JS-hanya variant selection (no URL perubahan) adalah best.” Google melakukan crawl default halaman state. sebuah variant reachable hanya melalui JavaScript dengan no URL perubahan memiliki no separate address, so ini dapat’t menjadi di-crawl, terindeks, atau diperingkatkan sebagai -nya own entity — itu’s sebuah addressability masalah, not proof itu Google dapat’t render JavaScript di semua (Google melakukan render JS, tetapi warns itu dynamically-generated Product markup dapat menjadi di-crawl less frequently dan reliably).

Where ini sits di cluster

ini adalah variant-spesifik companion untuk product halaman SEO, which covers full product detail halaman. canonical mechanics live di canonicalization; closely related filter-URL versi dari yang sama near-duplicate masalah lives di faceted navigation. untuk bigger picture, see Ecommerce SEO.

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.