As an e-commerce platform, you would be hard-pressed to find somebody who said Magento wasn't a powerful platform. As an open-source option, it's a wide open platform with a lot to offer in terms of customization, community support, and third party plugins and extensions.
So why aren't we the biggest fans of Magento as an e-commerce platform, especially from an SEO perspective?
Well, as an agency, while we're happy to work with clients on their platform of choice, and prefer a wide open platform like Magento over one that has everything on lock down, Magento is not the ideal platform for most of our clients simply because getting everything where it needs to be is an unnecessarily complex process.
In short, our problems with Magento are the exact opposite of the problems we have with Shopify. Where Shopify has too many things on lockdown, making some SEO tasks literally impossible, Magento is so wide-open and approach agnostic that completing SEO tasks is unnecessarily burdensome, limiting our capacity to do work for clients.
Make no mistake, reconciling SEO issues in Magento is certainly possible. But SEO issues do plague the platform and require a great deal of manual effort to reconcile.
Let's talk about a few of Magento's SEO obstacles.
Configurable Products Create Duplicate Content
Rather than treating a configurable product as a single product, Magento treats it as a collection of simple products, each with a different SKU and inventory listing. While there are good accounting and inventorying reasons for doing this, the problem is that this treatment extends past the back end and on to the front end.
Each version of a configurable product is treated like a different product as far as the search engines are concerned, and Magento does not, by default, use the rel=canonical tag to reconcile these problems. In our experience, even proper implementation of the rel=canonical tag is often ignored by Google, and it would be preferable if product variants weren't linked and indexable in the first place.
There is no easy and straightforward way to do with with Magento, so creating configurable products that correctly handle everything at a single URL ends up being a major development task that dampens your ability to get things done.
Duplicate Content Created By Product Categories
By default, Magento products that are listed under multiple categories can be accessed via multiple URLs, like this:
Thankfully, newer versions of Magento do implement the rel=canonical tag on these pages, so that all versions of the page canonicalize to a root level URL, like this:
Unfortunately, as we mentioned, the rel=canonical tag is imperfect, and it would be better if links to multiple URLs that feature the same product didn't exist in the first place.
The good news is that it is possible to remove the category folders from your URLs under System > Configuration > Catalog > Search Engine Optimization.
The problem with this solution is that removing the category folder also removes valuable taxonomic information that search engines use to better understand your site.
Alternatively, you can institute a policy that all products are listed in only one category, but this is often a bad solution from a UX or conversion-focussed perspective.
The ideal solution is to place the product at a consistent URL under the most fitting folder taxonomy, with links from any category page that includes the product consistently linking to that same URL. Unfortunately, there is no way to do this without heavy development work.
Product Sorting Duplicates
Yet another duplicate content issues Magento creates is via product sorting capabilities, such as sorting by price or recency. The sorted versions of the page are generated by adding a URL parameter, like so:
The "?sortby=totalreviews|asc" part of the URL is just an instruction to the server to sort the products listed on the category page by total reviews in ascending order. This doesn't change the content of the page at all, only the order it's presented in. This leads to many different versions of the same page located at different URLs.
By default, all versions are crawlable by Google, and no rel=canonical tag is in place to clarify.
Thankfully, canonicalization is a fairly easy fix, but as we've said, Google often ignores canonicalization. Eliminating these URLs entirely is an extremely involved development task.
Magento is not well optimized for speed by default, and several adjustments are necessary in order to get load time where it ought to be such as:
- Disabling logs
- Enabling log cleaning
- Enable caching
- Use the Flat Catalog module
- Enable Magento compilation
- Use a PHP accelerator
Internal Search Pages Indexed By Google
Magento's internal search pages often end up getting indexed by Google, which is explicitly recommended against in Google's guidelines, and can create massive duplicate content issues. This can be easily addressed by updating robots.txt, but it is not addressed by default.
Weak Page Titles
Magento's default page titles are not very well optimized since they are just the product name and nothing else. This means that, unless your keyword is in the product name, your keywords aren't being targeted. Other useful information for long tail is also missing, such as the product category and brand.
While you can fairly easily update title tags for individual products, this is a time consuming process for e-commerce sites that have a large number of products.
There is no straightforward way to update the rules for how titles are displayed in Magento. Instead, you need to edit the php logic to dynamically generate your titles the way that you want to, and do so in a way that doesn't prevent you from customizing your page titles when you need to.
Session IDs are indexed by default. A session ID is used by the server to personalize content for the user. It does not alter the content of the page, or if it does, not in a significant way and certainly not in a way intended for the general public. To prevent this, you will need to set up canonicalization on every page so that session IDs automatically canonicalize to the version of the page without the session ID. You should also configure URL parameters in the Google Search Console.
A common issue with Magento sites is that new URLs will revert back to old URLs for a myriad of inexplicable and impossible to predict reasons. The only real way to deal with this issue, beyond an in depth audit of your core and theme Magento code, is to block the URLs in robots.txt and set up redirects, as well as monitor your site links for references to 404 and 301 pages.
It's fairly common, for one reason or another, for new versions of a page to be considered entirely new pages, and rather than updating the old URL with the new content, the new content is placed at a new URL with a mostly identical URL, except that a version number is appended to the end of it.
This usually occurs when small changes are made to a page, and the rewrites are added to a new URL instead of the old one. Needless to say, this creates duplicate content issues and can also lead to a taxonomy that is confusing to users and search engines alike.
While Magento is capable of generating sitemaps, in Magento 1 this is not done by default as it is on most modern CMSs. XML sitemaps help search engines index your site more quickly, so it's important to do this by:
- Navigating to Catalog > Google Sitemap
- Clicking Add Sitemap
- Setting the Filename field to sitemap.xml
- Enter a forward slash (/) as the path
- Select the correct Store View from the dropdown menu
- Click Save & Generate
- Copy the Link for Google and submit your XML sitemap to Google.
Unfortunately, this sitemap is not regularly updated. You will either need to repeat this process every time you update the site, or you will need to setup a cron job to update it automatically, since there are no default settings that allow you to refresh it automatically. See Alan Storm for the necessary code your developers will need to implement.
Thankfully, Magento 2 does include native capacity to automatically refresh the sitemap. See this guide at Hypernode.
While there are a lot of things to like about Magento, it's not our favorite e-commerce platform due to the lack of out-of-box optimization and the amount of configuration and development necessary to get the platform where it needs to be. Look out for these SEO issues with Magento and make sure they are addressed as much as possible with the resources available at your disposal.