How to set different URLs per variant on Shopify (combined listings)

One URL per Shopify product, regardless of variant count. That’s the default architecture. The Linnea Sofa lives at /products/linnea-sofa, and any variant the customer picks (camel boucle, walnut leather, stone linen) routes to the same URL with a query parameter (?variant=12345) appended. From an SEO perspective this means one indexable page per product, no matter how many distinct variants you sell. For long-tail traffic on variant-specific queries (“camel boucle sofa,” “walnut leather sectional”), the architecture leaves money on the table. Combined listings flips this: each variant becomes its own product with its own URL, its own slug, and its own canonical.

This post covers how to give each variant its own URL on Shopify using combined listings, and why this matters for long-tail SEO. We build Rubik Combined Listings; per-variant URLs are the structural feature most SEO-focused merchants come to us for.

In this guide

  1. The native Shopify URL limitation
  2. How combined listings give per-variant URLs
  3. URL patterns that work
  4. Setup walkthrough
  5. Canonical and hreflang considerations
  6. FAQ
  7. Related reading

The native Shopify URL limitation

Shopify’s URL architecture: each product has one canonical URL (/products/{handle}). Variants share that URL with a query parameter (?variant=12345) for direct linking. Google treats the URL with query parameters as a parameterized version of the canonical, not a separate page. So one product = one indexable URL.

This is fine when variants don’t carry distinct SEO value. A “Small / Medium / Large” t-shirt doesn’t need separate URLs because nobody searches “Linnea Tee Medium” specifically. But for variants with strong SEO weight (boucle, walnut, leather, oak, navy 8×10), a single URL means a single page competing for many keywords. The page typically wins the master keyword and loses every variant-specific long-tail.

How combined listings give per-variant URLs

Combined listings flips the architecture. Each variant is its own product with its own URL:

  • /products/linnea-sofa-boucle-camel
  • /products/linnea-sofa-linen-stone
  • /products/linnea-sofa-walnut-leather
  • /products/linnea-sofa-performance-velvet

Each URL is a real, indexable Shopify product page. Each one carries its own title, meta description, image alt text, and canonical. Google indexes them as 4 distinct pages. When someone searches “boucle camel sofa,” your boucle-specific URL has a real shot at ranking.

Combined listings give each grouped product its own URL and SEO surface

From the customer’s perspective, combined listings groups the URLs visually on the storefront. They see one card on the collection page with fabric swatches; clicking a swatch routes to the right URL.

URL patterns that work

PatternExampleBest for
Master + variantlinnea-sofa-boucle-camelMost categories
Variant + masterboucle-camel-linnea-sofaWhen variant is primary search hook
Master + dimensionlinnea-rug-8×10-navyRugs, mattresses (size SEO)
Hyphenated descriptorsbrixton-pendant-brushed-brass-mediumLighting (multi-axis)

Keep URLs under 80 characters where possible. Use hyphens, not underscores. Match the URL slug to the product title for consistency. The Shopify variant SEO URL structure guide covers the patterns in depth.

Setup walkthrough

  1. Create a separate Shopify product per variant. Set the product handle (URL slug) when creating each one.
  2. Write a unique meta description per product (avoid duplicate-content thin pages).
  3. Install Rubik Combined Listings and group the products together.
  4. Add structured data so Google understands the relationship between sibling products. Use the rich snippets schema guide for the proper markup.
  5. Submit each new URL to Search Console for faster indexing.

“I was struggling with separate product pages for different colors/flavors (e.g., aftershave red, green, blue as individual products for better SEO and unique URLs), but I wanted customers to see swatches and switch between them easily, like real variants. This app does it perfectly: Group products into combined listings, Add customizable color/image swatches, Swatches appear on product pages (click redirects smoothly to the other product’s page), Small swatches show up right under the product cards on collections, search, homepage, super clean and intuitive for shoppers.”

Ostwint, Romania, 2026-03-02, Rubik Combined Listings on the Shopify App Store

Canonical and hreflang considerations

Each grouped product has its own canonical URL pointing to itself. Don’t canonicalize sibling products to one master, or you’ll de-index them and lose the SEO benefit of having separate URLs in the first place.

For multilingual stores using Shopify Translate & Adapt, hreflang is automatic per language. Each grouped product (and each language variant of it) carries its own hreflang tags. Combined Listings supports Translate & Adapt natively.

Combined listings multilingual support with Translate Adapt and hreflang

See the live demo store, watch the tutorial video, or read the getting started guide.

FAQ

Can Shopify variants have their own URLs natively?

No. Native variants share one URL with a ?variant=ID query parameter. Combined listings give each variant its own URL because each variant is structurally a separate product.

Will I lose authority by splitting one URL into many?

The opposite. Each new URL gets its own backlinks, its own social shares, its own organic traffic. With proper internal linking and schema markup, the catalog accumulates more total authority than a single consolidated page.

Should I 301 redirect old URLs after splitting?

Yes if you’re consolidating from one URL to multiple. Pick the most popular variant as the destination for the old URL’s redirect, or redirect to the collection page that contains all the new sibling URLs.

Does this require Shopify Plus?

No. Rubik Combined Listings runs on every Shopify plan.

How do I avoid duplicate-content penalties?

Each grouped product needs unique title, meta description, and image alt text. Don’t copy the same description across siblings; write fabric-specific paragraphs. Use schema markup to signal the product-group relationship to Google.

What happens if I rename a product handle?

Shopify creates an automatic 301 redirect from the old handle to the new one. So renaming a sibling product won’t break inbound links.

Co-Founder at Craftshift