Magento SEO Development

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.

Magento Pagination

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 [2] 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.

by Founder & CEO
Kevin is the Founder & CEO of Blue Acorn, and he also serves on the Magento Certification Advisory Board. Kevin has worked with a number of companies with online needs: banks, IT companies, consumer packaged goods manufacturers, various software companies, and finally, starting his own eCommerce business. His roles included that of a web developer, a business development manager, a technology evangelist, and a consultant.  When Kevin founded Blue Acorn in 2007, he didn’t want to be all things to everyone who wanted to be on the web. As an eCommerce entrepreneur himself, he wanted to focus on helping other online retailers achieve their goals. At the time, the world of eCommerce “solutions” for online retailers was an overcrowded space of web development generalists that left many online retailers yearning for more – more expertise, more value, and more love. So Kevin started Blue Acorn and blogged about his thoughts and approach towards eCommerce. Those thoughts were well-received, and the demand for services to accompany them would soon follow.

DISCUSSION

40 Comments

  1. PingbackCandleStyle.com Case Study | Phase One | Silverback Marketing | Silverback Marketing Blog

  2. Please clarify how some one who wants to have a multi-site set up can: A)Make the headers and product information different for each store.
    B)How to ensure that the search engine reads each site as its own (like it were its own company).

    Thanks lots guys.

  3. Elle

    I am so thrilled to be using magento. Compared to the last shopping cart I attempted, magento is so much easier. I love that the pages can be made SEO friendly, however I still seem to have some issues with the lists (SID)and such- some of the pages indexed are a bit awkward, but I am working on figuring that out. There is so much to learn and work with- trying to read up on as much as I can, so thanks.

  4. Pretty nice feature I must say. By the way, this blog is so well designed from a user, design, and search engine friendly standpoint — great job. I retweeted this post @aybecker – hopefully you get some readers out of it. Keep up the good work.

  5. Hi
    Thank you for a great post. Could you explain a little more on how you have implemented the 301 redirection from unavailable products to new products or categories? Are there an extension for this or have you done some clever code? (or do you simply edit the .htaccess eaxh time?)

  6. Ben

    @Rasmus – Either approach is acceptable, though given our needs to change the behavior disabled product routing, along with our need to allow clients to control redirects, we chose to implement this as a custom extension. It is a testament to the extensibility of Magento that it is possible to customize and extend routing to this degree, all by extending core controller files.

    Above all, just make sure that you’re not losing any link juice!

  7. Brady

    Great Post Guys!

    What would you recommend on creating a better 404 page that could take the url from an old domain and show products matching the url. ie. we have a site built years ago with OSc that has 10k indexed pages that need to redirect to the new site.

    OLDdomain.com/shop/10×14-smoking-sign-p-55555.html

    Turns in to search of : “10×14 smoking sign p”

    (the “p” is there because all we would do is strip out the record number and the dashes)

    I am not sure if I can do a actual 404 page, with the search result in it (that would be best), but we can absolutely redirect to a search..

    NEWDOMAIN.com/catalogsearch/result/?q=10×14+smoking+sign+p

    Possibly we can perform a search, if it returns one product send them to that product’s page directly?

  8. Kevin

    @Brady – that is an excellent idea. Ideally, you should have all products from your old site (if you need to prioritize, start with any pages that currently rank in SERPs or have links to them) 301′d to the new URLs. That way, your new pages will be indexed and show up in the search results in place of your old ones.

    If that is too big an undertaking, or even to use this as a failsafe “catch-all”, what I would suggest then is to take your old URLs, if they all start with some kind of pattern like “/shop/…” then create an .htaccess rule to take all URLs that start with /shop (assuming none of your new ones do as well) and create a script that “explodes” (or breaks apart) the URL and redirects the user to a search page with the query the text that would have made up the URL (you can even strip out the arbitrary category id that OSc includes in the URL).

  9. @Tao – thanks for chiming in, but I think it’s important to clarify the post from Google that many of us in the SEO world are quite familiar with. If you read closely, it is noted that “Don’t create multiple pages, subdomains, or domains with substantially duplicate content.” and “Having this type of duplicate content on your site can potentially affect your site’s performance, but it doesn’t cause penalties” that it is truly debunking the myth of a duplicate content penalty – but it clearly states that having this duplicate content can cause issues. It’s the whole reason for Google pioneering the use of this tag to begin with. Should it be a top priority for SEO on your site? Probably not, but, if you want to do as much as you can then this should be something certainly to pay attention to. So, I wouldn’t consider it time wasted at all on your part =)

  10. Ethan

    I am having the same issue with multiple stores. I have a client with many e-commerce domains in the same industry, and he is worried about getting penalized if all of the sites are hosted/databased in one magento installation. Wouldn’t it be better to do seperate installs for each store? Thanks for the help!

    P.S this blog rocks!!

  11. Brett

    I am somewhat new to Magento and was doing a search on how to customize the design of the Blank SEO theme when I found this very informative article. Does anyone know if there are instructions available for customizing the Blank SEO template? We are primarily interested in customizing the header/masthead right away.

  12. Hello,

    I have a comment regarding “301ing disabled products” – very often Magento owners hide “out of stock” products. This also leads to the problem you described. We suggest not to hide such products to keep rank juice.
    What do you think about Magento SEO Extension It solves most of cases you mentioned and adds some more. Check it out.

    BTW, thanks for this article.

  13. John

    Do you have any information about magento template design/structure and its effects on SEO-ablility?

  14. Ram

    I noticed that my Magento homepage can be found in two ways:
    1. Through my http://www.domain.com it includes /index.php
    2. Through http://www.domain.com/home

    How should this one fix? Right now my home page is messed. Please…please …please help

  15. almedajohnson

    Very well explained post. I liked the way you have given all details on SEO points for magento. Great share dude.

  16. Tim

    What I can’t agree is the 301ing disabled products, Just a suppose, there are more than thousands of disabled products to 301 redirected, I think it is to bad, when you check site’s server Log, there are many, many, many 301 pages that waste lots of bandwidth and server resource.

  17. I am having the same issue with multiple stores. I have many e-commerce domains in the same industry, and am worried about getting penalized if all of the sites are hosted/databased in one magento installation. Can Canonical tag help reduce any “penalty” in the ranking of my pages? I do not want to have to edit content for each product on each site to try to make them different.

  18. Kevin

    @Bruce – all sites sharing the same db or Magento installation won’t get you penalized, but you can ask your hosting company to provide you IP addresses for each site in different IP blocks to mask the fact that they are “connected” to each other. The canonical tag would not be much help to you in this instance however.

  19. Natasha

    Hello

    I am looking to change from my existing platform of oscommerce to magento. I have put a lot of money into SEO. Is there a way of ensuring that this work does not go to waste?

    Probably a simple answer to this but am not technically minded so any advice would be greatly appreciated

  20. Hi,
    I am magento developer and SEO guy, I just wanna say that its pretty hard to work in SEO for magento. I want to use diffrent tags on diffrent page in my magento shop: Does anyone got knowledge about how to do it?

    Natasha: U dont have to worry about SEO for your website, just keep structure of your website similar, may b lil changes will occur in search results but they can easily bring you back to your current position.

  21. Thanks for info, I am studying magento right now, may I ask one question, blog tags lead to the same title, how to resolve this probloem? thanks in advance.

  22. Tom

    Hi there,

    Many thanks for sharing this info.
    I find it pretty darn hard to implemente good SEO
    for a magento webshop. The onpage seo activity`s is
    made a bit easier by Yoast. But everyday im
    searching the web for more intel on seo for magento.
    So please keep it up with your blogging about
    search engine optimalization for Magento.

    Once again, Many thanks for sharing!!

  23. G

    Great article. I would also like to know if it’s better to just have a separately installations for each shop if majority of the shop items are the same shared across two shops for seo sake.

    Can you point out pros and cons of multi site vs separate installs?

  24. Rose

    The 301ing disabled products ‘thing’ is exactly what i need and looking for because i’m only selling unique products. Could anyone please tell
    me how i can redirect disabled product pages to the main category page of this product? This would be so helpfull since i only have 404 pages..

    Thanks in advance,

    Rose

  25. Stefan

    Thanks for the information! I’m also looking for an easy way to 301 redirect disabled products to their parent category. Is there a plugin or some examples available to archieve this?

    • Kevin Eichelberger

      Stefan, there is no “easy” way to do this and no modules that I’m aware of. It should require much custom development to make this happen though =)

  26. Thanks for the post. But can you help me to redirect 301 from magento .htaccess file?

    • Kevin Eichelberger

      Salim, 301 redirects from the Magento .htaccess file are created just like any other .htaccess 301 redirects unless you might have a specific issue you’re looking to solve?

  27. Great and simple tips. Really appreciate them :-). Trying to do my research on optimizing my online shop!

  28. Appreciate your post! Good to know that Magento is SEO friendly, yes I have seen many Magento stores winning PR1 on Google.

  29. Kevin,
    I am really impressed, you put great information about SEO, website based on Magento Plateform. Your information is very valuable to me. Thank you very much.

  30. Hi
    First of all , thanks for your help,
    Do you have figures showing the impact of blog integration on an ecommerce site ?

  31. Hi Kevin,

    Great extensive article! I’ve got an additional question. We have a lot of products in our store. Now, if we disable a product the product-url gets a 404-page. It will be too much work to manually redirect all product-urls. Is there a way to automate this process? F.e. to redirect it automatically to the category pages?

    Thanks in advance!

    Guy

    • Kevin Eichelberger

      @Guy – as far as I am aware, there aren’t any automatic ways to redirect the product URLs when disabled via native Magento feature, or through an extension, this would require a customization or a module. Depending on your requirements, this is not overly difficult to achieve.

  32. I wonder if there is any video tutorial for implementing SEO for Magento websites.

    • Kevin Eichelberger

      Magento will actually be releasing an SEO Training program through Magento U that we helped put together and delivered at Magento Imagine this year.

  33. Thanks for the post. Had a question regarding one of the earlier comments – the one about turning 404′s into search results of the tail portion of the url as the query. Do you have any idea as to how to implement that?

    • Kevin Eichelberger

      Great idea! There’s not an extension I’m aware of, but you could develop a simple module that parses out the words in the URL paths and redirects that to a search result page with those words as querystring parameters.

ADD YOUR COMMENT