Magento Commerce is certainly an “SEO-friendly” shopping cart – but just like much of its brethren, there is still room for improvement. Granted, it has come along to fix some of the issues we pointed out in our first Magento review, and a few in the community have put together some extensions to further that along. Yoast has even gone so far as to creating a beginner’s SEO guide for Magento which does a great job of covering some of the basic setup points for those setting up a Magento store that might not be attune to some of the intricacies with SEO on an eCommerce platform. But we actually take that a step further with some additional tips and tricks that we utilize to ensure our Magento projects are search engine optimized. I’ll try to avoid regurgitating the steps already recommended in the Yoast guide, and focus more on some of the additional steps we take when optimizing a Magento theme for SEO.
Magento SEO Theme
We start off with using the Blank SEO Theme, which takes the blank theme (which we’d typically start from) and improves some items with more semantic coding, cleaning the header, and some no-following. We also go through the already detailed steps of:
- re-routing non www traffic to www
- 301ing /index.php to the root
- implement canonical URL extension
- generate XML sitemap
At this point, there are a few other recommended changes we make to the base theme that haven’t yet been detailed. First, we remove the table-based layout for the product grid, we prefer using div blocks to organize our products and allows for cleaner code. We also make a few changes to the semantics of the header tags actually used in that theme. I’ve seen many SEOs do the same thing, they make the logo an h1 tag, title it with some keyphrases, and use it on every page of the site. While this may semantically help keep your site structured, my opinion is that you’re doing yourself a dis-service by practicing this technique. The h1 tag should be unique on every page, and should only be used when providing value to the user. The blank SEO theme makes the logo an h1 on the homepage, and an h4 on all subsequent pages. Which in itself is a comprimise, but does break the semantics of the page, because on subsequent pages, the h4 appears before the h1. If you do not have a “natural heading” on the homepage, I might recommend wrapping the logo in one there and only there, but if you do, then, there is no purposed for the logo being wrapped in an h1.
In addition to this, we also go through and no-follow layered navigation links, sorting and paging links, wishlist, compare, as well as any other necessary links.
We wrote up a pretty exhaustive article on the issues of eCommerce pagination and a few methods to remedy any duplicate content issues that may arise from that. Like most other eCommerce platforms, Magento’s pagination techniques presents the same set of issues. Without redeveloping the entire pagination system (not yet at least), we make a few tweaks to how the existing pagination works in two primary ways. First, we alter the title tag of each page to prefix “Page  of…” so that each page contains a unique title tag. In addition, you may not even notice it, but there is actually a duplicate URL for your first page. Follow me in this process, browse to a category with multiple pages, advance to any page greater than one, and notice the link back to page 1 – it appends a querystring parameter for page one instead of using the default URL. For example, if we sell blue acorns (goodbye blue widgets), our page URL might be /products/blue-acorns where each subsequent page being /products/blue-acorns?p=2, the pagination actually links back to page one as /products/blue-acorns?p=1 – creating an exact duplicate of /products/blue-acorns. We resolve this by adding a nofollow attribute to the page 1 link. An even better solution would be to change the pagination model so that it does not use the p=1 querystring parameter.
SEO for multi-store Magento implementations
One of the great capabilities of Magento is its inherit ability to support multiple web stores. Through one administration and one interface, you can manage all of your orders, all of your products, everything. Many online retailers setup multiple niche storefronts that may sell overlapping products, and Magento provides an excellent interface for doing so. However, be careful in how you setup your product data. If you sell the same products on multiple sites, and use the same exact information on each site, you’re walking a fine line between duplicating yourself, especially seeing that all of your multiple sites will most likely be setup on the same IP block depending on your host. So it would be easy for a search engine to tell that these sites are not only related, but really, one in the same.
This is more of a tip for those of you running multiple sites on Magento than it is a Magento-specific tweak, but I highly recommend mixing up the data on each site. Don’t use the same titles, headers, and descriptions and even price on each site. I realize this takes a great deal of effort to maintain, but if the whole reason to run multiple sites is an attempt to achieve greater “reach” in the search engines, you’d be shooting yourself in the foot if you just used the same data on each site. You’d be better off building up the authority of one single domain than setting up multiple sites and hindering each of them.
301ing disabled products
Consider this scenario. You sell a great, useful amazing product, everyone loves it. They love it so much that the product goes viral and you’ve got thousands of inbound links to it. A year later, the product is no longer available, and you disable it from your website. What then happens to users that click on those links? What happens to search engines the next time they spider your site? What happens to all that link juice being passed to that page? The answer to all of the above is… 404
This is a pretty common issue we come across with eCommerce platforms, when products are disabled, and a user tries to go to that now defunct URL, they get a 404 error. While we do recommend customizing your “not found” pages to at least include a search or related pages, what would be more effective from an SEO perspective, and a user’s perspective is if they got directed to another page that was related to the product that is no longer available. What we do is actually create a means for which Magento administrators can setup a “redirect to” product (or category) so that when a product is disabled, instead of the user (or search engine) getting a 404, they actually get taken to a product that might have replaced it, a related product, or even the parent category if you no longer carry that product. This will help retain any search engine positioning that product was getting, preserve any link juice that was being passed to that page, as well as creating a better user experience. A win all the way around.
SEO and eCommerce Platforms
All in all, while you might be thinking to yourself, “wow, Magento really isn’t SEO friendly” – don’t let this article confuse you. Magento IS search engine friendly, just as much as the next eCommerce platform. The reality is, almost all eCommerce platforms we work with have the same issues. And when it comes down to it, the platform itself only does so much for you. A search engine optimizer needs a platform that allows them to have the freedom to exercise on-site optimization, and Magento does just that. The biggest sales pitch by eCommerce platforms right now is that they are “the most SEO friendly” – yet I’ve yet to come across one that stands out any more than the rest. In reality, most platforms have matured to the point that the tools needed to manage an SEO friendly site is all (or mostly) there, and there are only minor variances that separate one from the next. But we’ll save that discussion for another time.