Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Technical SEO for Ecommerce Websites

1,086 views

Published on

A presentation I gave at Search Marketing Summit 2018, covering the most common SEO issues and how to fix them.

Published in: Marketing
  • ➤➤ How Long Does She Want You to Last? Here's the link to the FREE report ★★★ http://ishbv.com/rockhardx/pdf
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Thanks for sharing this Jason, awesome info. I didn't make it to SMS this year, I'm glad I could get a rundown of your presentation here.
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Thanks for sharing. Slide 13 clearly shows (65 Billion options per category) trend and opportunities
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Technical SEO for Ecommerce Websites

  1. 1. overdose.digital // @jasonmun // #smssyd18
  2. 2. overdose.digital // @jasonmun // #smssyd18
  3. 3. overdose.digital // @jasonmun // #smssyd18
  4. 4. overdose.digital // @jasonmun // #smssyd18
  5. 5. overdose.digital // @jasonmun // #smssyd18
  6. 6. overdose.digital // @jasonmun // #smssyd18
  7. 7. overdose.digital // @jasonmun // #smssyd18 ツ
  8. 8. overdose.digital // @jasonmun // #smssyd18 Overdose Digital // Digital Commerce Agency @jasonmun / jasonmun.com https://overdose.digital http://au.linkedin.com/in/jason-mun-8698a13
  9. 9. overdose.digital // @jasonmun // #smssyd18
  10. 10. overdose.digital // @jasonmun // #smssyd18
  11. 11. overdose.digital // @jasonmun // #smssyd18
  12. 12. overdose.digital // @jasonmun // #smssyd18 https://www.petstock.com.au/dog/food-1/dry-food https://www.petstock.com.au/dog/food-1/dry-food/filter/balanced-life-b-3586 https://www.petstock.com.au/dog/food-1/dry-food/filter/balanced-life-b-3586/bonnie-b-1464 https://www.petstock.com.au/dog/food-1/dry-food/filter/balanced-life-b-3586/bonnie-b-1464/canidae-b-1482 https://www.petstock.com.au/dog/food-1/dry-food/filter/balanced-life-b-3586/bonnie-b-1464/canidae-b-1482/sort/name-a-to-z https://www.petstock.com.au/dog/food-1/dry-food/filter/balanced-life-b-3586/bonnie-b-1464/canidae-b-1482/sort/best-selling https://www.petstock.com.au/dog/food-1/dry-food/filter/balanced-life-b-3586/bonnie-b-1464/canidae-b-1482/sort/name-z-to-a https://www.petstock.com.au/dog/food-1/dry-food/sort/name-z-to-a/page/2 https://www.petstock.com.au/dog/food-1/dry-food/sort/price-low/page/5 https://www.petstock.com.au/dog/food-1/dry-food/sort/best-selling/page/3 FacetedNavFiltersPagination
  13. 13. overdose.digital // @jasonmun // #smssyd18 • 108 different faceted options = 1,170,505,728 combos • 7 sorting/filtering options • 8 pages of products 1,170,505,728 x 7 x 8 = 65 billion URL combinations This is only one product category!
  14. 14. overdose.digital // @jasonmun // #smssyd18 • NO canonical tags • NO proper meta robots tag • NO robots.txt blocks • Impacts SEO performance
  15. 15. overdose.digital // @jasonmun // #smssyd18
  16. 16. overdose.digital // @jasonmun // #smssyd18 • Every website is allocated a set (finite) amount of crawl budget • Allocated based on technical capacity and popularity of the site • You want Google to crawl your important pages more frequently – not crappy duplicated/thin pages https://webmasters.googleblog.com/2017/01/what-crawl-budget-means-for-googlebot.html
  17. 17. overdose.digital // @jasonmun // #smssyd18 • Identify URL patterns for faceted navigation and filters • Use robots.txt to control crawling Disallow: /*/sort/* Disallow: /*/filter/* Disallow: /*mode=* Disallow: /*manufacturer=* • Use meta robots tag to control indexing <meta name=”robots” content=”noindex,follow” /> https://www.contentkingapp.com/academy/control-crawl-indexing/
  18. 18. overdose.digital // @jasonmun // #smssyd18
  19. 19. overdose.digital // @jasonmun // #smssyd18 Homepage Category Sub-Category Faceted / Filtering Internal Search Result Pages 4 84 4 8 Crawl & Index Crawl & Index Crawl & Index DO NOT Crawl & Index DO NOT Crawl & Index
  20. 20. overdose.digital // @jasonmun // #smssyd18
  21. 21. overdose.digital // @jasonmun // #smssyd18
  22. 22. overdose.digital // @jasonmun // #smssyd18 /collections/mens-footwear/products/vans- vans-old-skool-mono-bumper-burgundy-white /products/vans-vans-old-skool-mono-bumper-burgundy-white/collections/mens-footwear-lows/products/vans-vans-old- skool-mono-bumper-burgundy-white • Same product categorised in to multiple categories • Unique URLs depending on click/crawl path • Content is identical
  23. 23. overdose.digital // @jasonmun // #smssyd18 /au/clothing/shirts/botany-downs- shirt/005359.html?dwvar_005359_color=VIOLET &cgid=clothing-shirts#start=3 /au/clothing/shirts/botany-downs-shirt/005359-02.html/au/clothing/shirts/botany-downs-shirt/005359.html • One product with multiple SKU options • Every SKU option generates a unique URL • Content is mostly identical except for colour swatch selection
  24. 24. overdose.digital // @jasonmun // #smssyd18 • It confuses the hell out of the bots • No control over which version gets indexed and displayed in SERPs • If you are checking your SERPs in Google and notice the message below, chances are you have some internal duplicate content issue: Source: Moz.com
  25. 25. overdose.digital // @jasonmun // #smssyd18 • Using advanced Google search queries • Cherry pick a few product pages and run these queries site:yourdomain.com.au inurl:product-url-key OR site:yourdomain.com.au intitle:product name OR site:yourdomain.com.au “snippet of content”
  26. 26. overdose.digital // @jasonmun // #smssyd18 GSC > Search Appearance > HTML Improvements > Duplicate Title Tags
  27. 27. overdose.digital // @jasonmun // #smssyd18 Deepcrawl.co.uk
  28. 28. overdose.digital // @jasonmun // #smssyd18 Screamingfrog.co.uk
  29. 29. overdose.digital // @jasonmun // #smssyd18 Sitebulb.com
  30. 30. overdose.digital // @jasonmun // #smssyd18 /products/vans-vans-old-skool-mono-bumper-burgundy-white /collections/mens-footwear/products/vans-vans-old-skool-mono- bumper-burgundy-white /collections/mens-footwear-lows/products/vans-vans-old-skool- mono-bumper-burgundy-white /collections/sales/products/vans-vans-old-skool-mono-bumper- burgundy-white <link rel=“canonical” href=“https://www.culturekings.com.au/products/vans-vans-old- skool-mono-bumper-burgundy-white” /> <link rel=“canonical” href=“https://www.culturekings.com.au/products/vans-vans-old- skool-mono-bumper-burgundy-white” /> <link rel=“canonical” href=“https://www.culturekings.com.au/products/vans-vans-old- skool-mono-bumper-burgundy-white” /> DUPLICATE #1 DUPLICATE #2 DUPLICATE #3 CANONICAL VERSION
  31. 31. overdose.digital // @jasonmun // #smssyd18 /products/vans-vans-old-skool-mono-bumper-burgundy-white /collections/mens-footwear/products/vans-vans-old-skool-mono- bumper-burgundy-white /collections/mens-footwear-lows/products/vans-vans-old-skool- mono-bumper-burgundy-white /collections/sales/products/vans-vans-old-skool-mono-bumper- burgundy-white <link rel=“canonical” href=“https://www.culturekings.com.au/products/vans-vans-old- skool-mono-bumper-burgundy-white” /> <link rel=“canonical” href=“https://www.culturekings.com.au/products/vans-vans-old- skool-mono-bumper-burgundy-white” /> <link rel=“canonical” href=“https://www.culturekings.com.au/products/vans-vans-old- skool-mono-bumper-burgundy-white” /> DUPLICATE #1 DUPLICATE #2 DUPLICATE #3 CANONICAL VERSION
  32. 32. overdose.digital // @jasonmun // #smssyd18 /products/vans-vans-old-skool-mono-bumper-burgundy-white CANONICAL VERSION Canonical
  33. 33. overdose.digital // @jasonmun // #smssyd18 /products/vans-vans-old-skool-mono-bumper-burgundy-white CANONICAL VERSION Canonical
  34. 34. overdose.digital // @jasonmun // #smssyd18 /products/vans-vans-old-skool-mono-bumper-burgundy-white CANONICAL VERSION
  35. 35. overdose.digital // @jasonmun // #smssyd18 /products/vans-vans-old-skool-mono-bumper-burgundy-white CANONICAL VERSION
  36. 36. overdose.digital // @jasonmun // #smssyd18
  37. 37. overdose.digital // @jasonmun // #smssyd18 • Common on all E-commerce websites • Instead of showing all of your products at once, split it across multiple pages • Most of the time, these elements remain consistent: Title Tag, Meta Description, H1, Text content • Hint: Duplicates…Near Duplicates…??
  38. 38. overdose.digital // @jasonmun // #smssyd18 • Google launched the support of pagination tags – rel=“next” and rel=“prev” in 2011 • It indicates to Google that “a collection of pages” are part of the same paginated series • Strong hint to Google to consolidate indexing properties such as links https://support.google.com/webmasters/answer/1663744?hl=en
  39. 39. overdose.digital // @jasonmun // #smssyd18 NEXT PREV NEXT PREV NEXT PREV /shoes.htm /shoes.htm?p=2 /shoes.htm?p=3 /shoes.htm?p=4 <link rel=”next” href=”https://site.com/shoes.htm?p=2”> <link rel=”prev” href=”https://site.com/shoes.htm”> <link rel=”next” href=”https://site.com/shoes.htm?p=3”> <link rel=”prev” href=”https://site.com/shoes.htm?p=2”> <link rel=”next” href=”https://site.com/shoes.htm?p=4”> <link rel=”prev” href=”https://site.com/shoes.htm?p=3”>
  40. 40. overdose.digital // @jasonmun // #smssyd18 NEXT PREV NEXT PREV NEXT PREV /shoes.htm /shoes.htm?p=2 /shoes.htm?p=3 /shoes.htm?p=4 <link rel=“canonical” href=“https://site.com/shoes.htm” /> <link rel=”next” href=”https://site.com/shoes.htm?p=2” /> <link rel=“canonical” href=“https://site.com/shoes.htm?p=2” /> <link rel=”prev” href=”https://site.com/shoes.htm” /> <link rel=”next” href=”https://site.com/shoes.htm?p=3” /> <link rel=“canonical” href=“https://site.com/shoes.htm?p=3” /> <link rel=”prev” href=”https://site.com/shoes.htm?p=2” /> <link rel=”next” href=”https://site.com/shoes.htm?p=4” /> <link rel=“canonical” href=“https://site.com/shoes.htm?p=4” /> <link rel=”prev” href=”https://site.com/shoes.htm?p=3” /> Self Canonical Self Canonical Self Canonical Self Canonical
  41. 41. overdose.digital // @jasonmun // #smssyd18 NEXT PREV NEXT PREV NEXT PREV /shoes.htm /shoes.htm?p=2 /shoes.htm?p=3 /shoes.htm?p=4 <link rel=“canonical” href=“https://site.com/shoes.htm” /> <link rel=”next” href=”https://site.com/shoes.htm?p=2” /> <link rel=“canonical” href=“https://site.com/shoes.htm” /> <link rel=”prev” href=”https://site.com/shoes.htm” /> <link rel=”next” href=”https://site.com/shoes.htm?p=3” /> <link rel=“canonical” href=“https://site.com/shoes.htm” /> <link rel=”prev” href=”https://site.com/shoes.htm?p=2” /> <link rel=”next” href=”https://site.com/shoes.htm?p=4” /> <link rel=“canonical” href=“https://site.com/shoes.htm” /> <link rel=”prev” href=”https://site.com/shoes.htm?p=3” /> • Canonicalising back to page 1 throughout the paginated series • Confuses Google, breaks the chain, only page 1 gets indexed
  42. 42. overdose.digital // @jasonmun // #smssyd18 NEXT PREV NEXT PREV NEXT PREV /shoes.htm /shoes.htm?p=2 /shoes.htm?p=3 /shoes.htm?p=4 <link rel=“canonical” href=“https://site.com/shoes.htm” /> <link rel=”next” href=”https://site.com/shoes.htm?p=2” /> <link rel=“canonical” href=“https://site.com/shoes.htm” /> <link rel=”prev” href=”https://site.com/shoes.htm?p=1” /> <link rel=”next” href=”https://site.com/shoes.htm?p=3” /> <link rel=“canonical” href=“https://site.com/shoes.htm” /> <link rel=”prev” href=”https://site.com/shoes.htm?p=2” /> <link rel=”next” href=”https://site.com/shoes.htm?p=4” /> <link rel=“canonical” href=“https://site.com/shoes.htm” /> <link rel=”prev” href=”https://site.com/shoes.htm?p=3” /> • Page 2 rel=“prev” pointing to non-canonical version of page 1 • Confuses Google and breaks the chain
  43. 43. overdose.digital // @jasonmun // #smssyd18 Page 1 https://www.theathletesfoot.com.au/category-mens/mens- run.html Page 2 https://www.theathletesfoot.com.au/category-mens/mens- run.html Page 3 https://www.theathletesfoot.com.au/category-mens/mens- run.html Click to load more Click to load more
  44. 44. overdose.digital // @jasonmun // #smssyd18 Page 1 https://www.theathletesfoot.com.au/category-mens/mens- run.html Page 2 https://www.theathletesfoot.com.au/category-mens/mens- run.html Page 3 https://www.theathletesfoot.com.au/category-mens/mens- run.html Click to load more Click to load more
  45. 45. overdose.digital // @jasonmun // #smssyd18 Disable Javascript in your browser, if NO pagination links are available – it is problem Check source code for pagination tags rel=“next” or rel=“prev”. If missing, it is a problem
  46. 46. overdose.digital // @jasonmun // #smssyd18 https://webmasters.googleblog.com/2014/02/infinite-scroll-search-friendly.html John Mueller’s example - http://scrollsample.appspot.com/items
  47. 47. overdose.digital // @jasonmun // #smssyd18 John Mueller’s example - http://scrollsample.appspot.com/items • Chunk your content up in to pages (eg, 16 products per page) • Each chunk/page contains a full URL (eg, /shoes?page=2) • Implement pagination tags in the <head> • Implement replaceState/pushState on infinite scroll page – URL changes as the user scrolls down for more products • Works with and without Javascript – users and bots are happy!
  48. 48. overdose.digital // @jasonmun // #smssyd18
  49. 49. overdose.digital // @jasonmun // #smssyd18
  50. 50. overdose.digital // @jasonmun // #smssyd18 awesomesauce.com.au awesomesauce.co.nz awesomesauce.co.uk awesomesauce.com awesomesauce.com/au/ awesomesauce.com/nz/ awesomesauce.com/uk/
  51. 51. overdose.digital // @jasonmun // #smssyd18 awesomesauce.com awesomesauce.com/au/ awesomesauce.com/nz/ awesomesauce.com/uk/ Default website catering for “other” countries Catered for AU users, unique content and currency Catered for NZ users, unique content and currency Catered for UK users, unique content and currency
  52. 52. overdose.digital // @jasonmun // #smssyd18 awesomesauce.com awesomesauce.com/au/ awesomesauce.com/nz/ awesomesauce.com/uk/
  53. 53. overdose.digital // @jasonmun // #smssyd18 awesomesauce.com awesomesauce.com/au/ awesomesauce.com/nz/ awesomesauce.com/uk/ 4 8 8 8 Google typically crawl from US Google can only crawl the default website Google CANNOT crawl these country specific websites Google CAN’T index what it CAN’T crawl
  54. 54. overdose.digital // @jasonmun // #smssyd18 • Google can only rank the website that it can crawl • Country specific websites will struggle to rank • VERY little traffic and low indexation .com .com/au/
  55. 55. overdose.digital // @jasonmun // #smssyd18
  56. 56. overdose.digital // @jasonmun // #smssyd18
  57. 57. overdose.digital // @jasonmun // #smssyd18 https://support.google.com/webmasters/answer/1061943?hl=en • Exclude search engines from the redirect rule • Make an exception based on user agents • This will allow Googlebot to crawl and index all country specific websites
  58. 58. overdose.digital // @jasonmun // #smssyd18
  59. 59. overdose.digital // @jasonmun // #smssyd18
  60. 60. overdose.digital // @jasonmun // #smssyd18 https://webmasters.googleblog.com/2018/01/using-page-speed-in-mobile-search.html
  61. 61. overdose.digital // @jasonmun // #smssyd18 https://webmasters.googleblog.com/2018/01/using-page-speed-in-mobile-search.html
  62. 62. overdose.digital // @jasonmun // #smssyd18 https://developers.google.com/speed/pagespeed/insights/ https://gtmetrix.com/
  63. 63. overdose.digital // @jasonmun // #smssyd18 https://developers.google.com/web/tools/lighthouse/
  64. 64. overdose.digital // @jasonmun // #smssyd18 https://developers.google.com/speed/pagespeed/insights/ https://gtmetrix.com/
  65. 65. overdose.digital // @jasonmun // #smssyd18 Before – 907KB After – 481KB
  66. 66. overdose.digital // @jasonmun // #smssyd18 Before – 907KB After – 481KB
  67. 67. overdose.digital // @jasonmun // #smssyd18 We all know the best practices: 1. Choose the correct file type (jpg vs png vs gif) 2. “Save for Web” in Photoshop 3. Use lossless optimisation for JPG product images 4. Save images to reasonable dimensions (for responsive scaling, etc) Yet, so many e-commerce businesses fail to ensure images are optimised…WHY? Source: http://httparchive.org/
  68. 68. overdose.digital // @jasonmun // #smssyd18
  69. 69. overdose.digital // @jasonmun // #smssyd18 https://imagekit.io/ https://cloudinary.com/ • Optimise images at scale • Future proof image optimisation moving forward • Plus the power of a content delivery network for speed
  70. 70. overdose.digital // @jasonmun // #smssyd18
  71. 71. overdose.digital // @jasonmun // #smssyd18 Chrome > Developer Tools > Sources > Coverage https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage 98% of this CSS file is unused!
  72. 72. overdose.digital // @jasonmun // #smssyd18 Sitebulb.com Check code coverage at scale while crawling the website Export data for developers
  73. 73. overdose.digital // @jasonmun // #smssyd18 BEFORE: AFTER:
  74. 74. overdose.digital // @jasonmun // #smssyd18
  75. 75. overdose.digital // @jasonmun // #smssyd18 • Spider Traps – faceted navigation + filters + pagination combo • Control what bots consume on your website • Internal duplicate content triggered by product pages • Pagination tags – cannot break the chain • Infinite scroll using pushState & pagination tags • Avoid automatic IP redirect – exclude bots if required • Improving PageSpeed
  76. 76. overdose.digital // @jasonmun // #smssyd18 Overdose Digital // Digital Commerce Agency @jasonmun / jasonmun.com https://overdose.digital http://au.linkedin.com/in/jason-mun-8698a13
  77. 77. overdose.digital // @jasonmun // #smssyd18

×