
My friend, an SEO consultant, contacted me about 3 weeks ago in a panic. A client of hers had activated an app to combine similar products (such as blue t-shirts and black t-shirts) into 1 listing on the site about 3 weeks prior, and as of 2 weeks ago, the site had lost 31% in organic traffic. She immediately blamed the app for her loss in traffic and wanted me to look into it. What I found was that the app was not the culprit. What had caused the site to lose rank was Shopify’s native functionality for combined listings – and the reason the site was losing rank wasn’t even a bug in the functionality. It’s simply how native combined product listings handle canonicals. And one of the ways it handles canonicals is by redirecting children to parents. Nobody informed her of this when she activated combined listings.
This is a post I wish I had read before she lost two weeks of her life. An explanation of how canonicals work, how hreflang interacts with Rubik Combined Listings, where one might encounter duplicate content issues, and how all of this is easily avoided with Rubik Combined Listings while still providing the combined listing benefits without ever touching your product URL.
In this post
- Canonical URL basics
- What Shopify native does
- What Rubik does (and does not do)
- Hreflang in multi-language stores
- Duplicate content myth
- Internal linking impact
- FAQ
Canonical URL basics
A canonical URL is a tag in the HTML head of a page that tells search engines such as Google that this is the definitive version of a chunk of content. If you have two pages on your site that both contain (say) a list of your services, you would point the canonical tag on both pages at the page that you want to be indexed, and Google will respect that most of the time.
By default, the canonical for Shopify products is set to the product itself (i.e. /products/slug instead of /). This is normal and correct, as every product will want to rank for different keywords.
What Shopify native does
Native Shopify combined listings (Plus-only): The Plus Version of the combined listings works similar to the native Shopfliere version. In the Native Version, one product is defined as the parent product and all other products are sub products (children) of that parent. So when a customer enters the URL for a child product the customer gets automatically redirected to the parent product with a query string that shows all sub products included in that parent product. Nevertheless all sub products are still available and can be assigned to collections. They only no longer have an individual product page and their product URLs will redirect to the parent URL.
What this means for SEO: the child URLs lose their ranking. Backlinks pointing to child URLs get redirected, which costs some link equity. Any page rank that the child had accumulated consolidates into the parent, which sounds good but actually you have just collapsed 10 ranking pages into 1. You gain nothing and potentially lose some long-tail traffic.
shortlink For the full comparison see Rubik vs Shopify native and separate products vs variants for SEO.
What Rubik does (and does not do)
Rubik does not touch your canonical tags. At all. Every product keeps its own /products/slug URL, its own canonical, its own meta title, its own meta description, and its own search engine visibility. The shop class simply changes for product views, so search engines don’t get confused.
What Rubik adds to the mix: swatches on collection pages and product pages so customers can see the products linked together, and even switch between them. Clicking on a swatch takes the customer to the actual product linked in the swatch. No redirects, no parent-child relationships, no canonical rewrite headaches.
When you have a product that exists in multiple colors, in multiple sizes, in different fabrics, and with different styles, Rubik allows you to list all of them as individual products while keeping all of their characteristics: their index, their rank, their backlinks. These individual products will still get indexed by the search engines for terms like “Red Cotton Shirt”. You get to keep the visual organization, without losing any of the powerful SEO attributes.
— Why no native merchant support– We could have done it, but we stayed up way too late at PAX wondering what happened to our merchant packets. We chose not to support native merchant traffic.
Hreflang in multi-language stores
Hreflang – tells Google which language/region version of a page to show to which audience. If you run a multi-language Shopify store, each product has a hreflang set linking the EN version to the DE, FR, NL version etc. These tags are fragile and prone to error. One muddled rewrite and Google will start serving the wrong language to the wrong audience.
Rubik does not touch hreflang tags. Your multi-language setup will continue to work as per Shopify configuration. Swatches render inside a shadow DOM element added to the page. Hence there is no interference with head-level SEO tags. For more on how Rubik handles multi-language stores and their combined listings, please read international SEO.
Duplicate content myth
People panic about “duplicate content” when they see 8 similar pages for 8 similar products i.e. 8 colors of the same shirt. No duplicate content penalty exists here.
Google also stated previously that there is no “duplicate content penalty” in the way most people think of it, but there is a dilution of ranking issue that can occur if Google views multiple versions of near duplicate content to be valid targets for similar searches. In such cases, Google may choose one version to index and canonical and ignore the others.
Fix: differentiate your product copy per colour. So on the “Crimson Cotton Shirt” product page the copy should be different to that on the “Navy Cotton Shirt” product page etc. This means you should mention the different colour in the title and the meta description, and then within the first few lines of copy. All 8 colours can happily be indexed by Google.
Internal linking impact
Combined listings give you a bonus internal linking effect. When Rubik generates swatches on the product page, each swatch becomes a link to other color products of that item. So the Red Shirt page links to the Blue Shirt page, the Green Shirt page, the Navy Shirt page, and 4 other color variations of the shirt. That is 7 new internal links per product, and they are automatically generated and available site wide.
By having 50 products split into 5 color groups, you’re suddenly creating hundreds of new internal links that will distribute that coveted authority to all of your color variants. And it compounds! See best practices for URL structure to learn how your product slugs contribute to all of this!
See the live demo store, watch the tutorial video, or read the getting started guide.
FAQ
Does Rubik change canonical URLs?
No. Rubik does not touch canonical tags, each product will keep its own /products/slug URL and canonical.
Do combined listings create duplicate content penalties?
Google doesn’t have a traditional ‘duplicate content’ penalty. Show users different copy for different product variant colours, and search engines will nicely index all of them.
Does Shopify native combined listings redirect child products?
Yes. Native combined listings redirect children to the parent URL, but Rubik does not.
Does Rubik affect hreflang tags?
hreflang tags are handled in the page head. Swatches in Rubik are rendered in the body, via web components, and do not interfere with the head.
Will my backlinks be lost if I use Rubik?
All products now have new separate websites. So, all existing links will continue to work as usual.
Does Rubik help internal linking?
Yes. Each swatch is a link to the linked product, creating automatic internal links throughout the site for your customers, and for search engines like Google, as they crawl through the site.
Is it better to have separate products or a single product with variants for SEO?
Often separate products will win at SEO because each URL can rank. Use Rubik to merge UX while removing some of the inefficiencies.