Shopify has exploded in popularity in the past 6 years into one of the go-to platforms to start your ecommerce business. But as a hosted system, it has strict limitations on what you can and cannot control for SEO.
Peter Macinkovic will go over Shopify as a CMS, how it works and common issues that plague SEO Specialists when working with the platform for the first time.
He will also go over best practice, tricks and how to push the Liquid templating language to make the platform more versatile on scale.
Peter Macinkovic (https://peter.macinkovic.id.au/) is a Digital Marketer and eCommerce Specialist based in Melbourne, Australia. A Former Digital Project Manager, Peter found his true calling in Digital Marketing and SEO working in-house for Kiana Beauty in the online retail sector.
Call Girls In Aerocity Delhi ❤️8860477959 Good Looking Escorts In 24/7 Delhi NCR
Shopify SEO Principles - What You Can and Can't Work with on a Limited Platform
1. Shopify SEO Principles
What you can and can't work with on a limited platform
By Peter Macinkovic, Digital Marketing ManagerSEO Melbourne Meetup | July 2019
2. Hi, I’m Peter
https://peter.macinkovic.id.au
What I am all about
● I do Digital Marketing for an online beauty
retailer called Kiana Beauty
● Been working on the web since 2011
● I have been a regular at the
SEO Melbourne Meetup for 5+ years
By Peter Macinkovic, Digital Marketing ManagerSEO Melbourne Meetup | July 2019
3. What this talk covers
Shopify SEO Principles:
What you can and can't work with
on a limited platform
● What is Shopify
● How Shopify's CMS Works
● Limitations of Shopify
● Working with Shopify
By Peter Macinkovic, Digital Marketing ManagerSEO Melbourne Meetup | July 2019
4. What is Shopify
By Peter Macinkovic, Digital Marketing ManagerSEO Melbourne Meetup | July 2019
5. By Peter Macinkovic, Digital Marketing ManagerSEO Melbourne Meetup | July 2019
What is Shopify?
● Developed in 2004 to help sell
snowboards online
● Released in 2006
● Built on Ruby on Rails
● Exploded in popularity in the last 6 years
● Robust API and Rich Marketplace of
Apps and Integrations
6. How Shopify's CMS Works
By Peter Macinkovic, Digital Marketing ManagerSEO Melbourne Meetup | July 2019
7. By Peter Macinkovic, Digital Marketing ManagerSEO Melbourne Meetup | July 2019
Shopify’s Components
● Page: Basic content type for pages.
● Products: Stores Product, Vendor,
Variant and Pricing Information
● Collections: Organises products into
filterable categories
● Articles: An article belong to a ‘blog’
● Blogs: A blog category. Poorly named.
● Menus: (nee Link Lists) Categorisation
of URLs.
● Metafields: Hidden fields that can be
attached to an object. (Useful for hacks
and SEO)
8. Pages
● Admin: Manage all Pages in the admin
under /admin/articles/
● Visibility: Manage visibility of page. Can be
hidden, published or scheduled to be
published.
● Title: The Title of the Page. Stored as
{{page.title}} in your theme.
Typically your H1 element.
● Content: The content of your page. Edited
with a WYSIWYG. Stored as
{{page.content}} in your theme.
● Template: Selects the template of your
page.
By Peter Macinkovic, Digital Marketing ManagerSEO Melbourne Meetup | July 2019
9. Pages (cont.)
● Search Engine Title: Edits the <title> of the
page. 70 char limit. This is referenced in
the {{page_title}} object, which is a helper
function to reference
{{page.metafields.global.title_tag}}
● Search Engine Description: Edits the <meta
name=”description”> of the page.
Ref. in {{page_description}} object, which is
a helper for
{{page.metafields.global.description_tag}}
● URL and Handle: Objects have set URL
structures. The handle is a slug that
uniquely identifies that object.
By Peter Macinkovic, Digital Marketing ManagerSEO Melbourne Meetup | July 2019
10. Products
● Admin: Manage all Products in the admin
under /admin/products/
● Visibility: Manage visibility of products.Can
have multiple channels - Online Store is the
main area of focus
● Title, Content, Template, SEO Title, SEO
Description, URL and Handle : As with
pages. URL structure for products is
/products/product-handle by default
canonical, but can vary with collections
/collections/collection/handle/products/pr
oducts and variants (appending ?id=XXX)
By Peter Macinkovic, Digital Marketing ManagerSEO Melbourne Meetup | July 2019
11. Products (cont)
● Images: Sets the primary image of the page
and up to 50 images for the main product.
Can set ALT Description for each image.
Individual variants may have 1 image per
variant.
● Product Type: Categorises products by a
string. On the front-end, renders it using the
?constraint=XXXX query. DO NOT RECOMMEND
● Vendor : Sets the Brand of the product. On
the front-end uses ?vendor=vendor+name
query. Recommend for reference, use
Smart Collections instead for Brands.
By Peter Macinkovic, Digital Marketing ManagerSEO Melbourne Meetup | July 2019
12. Products (cont)
● Tags: Flexible way to categorise products in
collections for filters and facets. Gets
converted as handles, with spaces or illegal
characters converted to - or deleted.
● Collections: The collections it belongs to.
Automatically assigned with Smart
Collections. Can be managed in either the
product or collection.
● Price, Cost, SKU, QTY, Inv Policy : Useful
mechanisms managing the price, sales
price and stock of a product and their
variants.
By Peter Macinkovic, Digital Marketing ManagerSEO Melbourne Meetup | July 2019
14. Collections
● Admin: Manage all Products in the admin
under /admin/collections/
● Visibility: Manage visibility of collections.
Multiple channels - Online Store is visible on
front-end
● Title, Content, Template, SEO Title, SEO
Description, URL and Handle : As with
pages. URL structure for products is
/collections/collection-handle by default
canonical, but can vary with pagination,
tags (/tag-1+tag-2), sorting and constraints.
● Conditions: The parameters to display
products in the collection
By Peter Macinkovic, Digital Marketing ManagerSEO Melbourne Meetup | July 2019
16. Blogs
● Blogs are basically ‘Blog Categories’. The
are the collection of articles. URL structure
is /blogs/blog-name/
● Provides a field to add feedburner URL
● Comments Management can be set per
‘blog’
● Very ‘Ruby on Rails’ gem install feel to it.
By Peter Macinkovic, Digital Marketing ManagerSEO Melbourne Meetup | July 2019
17. Articles
● Tags: Categorise blogs by a tag. Unlike
products, there is no mechanism for
narrowing by multiple tags
● URLs: Handle is set to its parent ‘blog’
○ When references in code, URL
include the blog name.
○ Prior to 2016-ish, slugs were
AUTOGENERATED with numbers in
the beginning and handles could not
be referenced in code
● Can manage comments on a per article
basis
By Peter Macinkovic, Digital Marketing ManagerSEO Melbourne Meetup | July 2019
18. Menus
● Menus (nee Linkslist) organise links into
ordered lists
● These days, they can have subcategories
● They have handles, which can be
referenced in code
● The links can be URLs, Objects, Search
Pages etc.
By Peter Macinkovic, Digital Marketing ManagerSEO Melbourne Meetup | July 2019
19. Metafields
● Metafields are invisible fields that can be
attached to an object
● They are useful in referencing, adding
additional content, schema etc
● They store things like SEO Title, SEO
Description, and are used to hide elements
in the sitemap
● They contain a namespace, key and value
● The value can be either a string or integer
By Peter Macinkovic, Digital Marketing ManagerSEO Melbourne Meetup | July 2019
20. Limitations of Shopify
By Peter Macinkovic, Digital Marketing ManagerSEO Melbourne Meetup | July 2019
21. Robots.txt
● Robots.txt file is locked in
● Certain natively generated URL like multi-
word vendors are blocked by default
○ Anything with a + in the URL is
basically blocked
○ Anything with a encoded space is
blocked
● Be sure to monitor your Robots.txt file. If it
goes Haywire and your site is unindexable
(i.e. Disallow / ), YOU will need to contact
Shopify support.
By Peter Macinkovic, Digital Marketing ManagerSEO Melbourne Meetup | July 2019
22. Robots.txt
● Robots.txt file is locked in
● Certain natively generated URL like multi-
word vendors are blocked by default
○ Anything with a + in the URL is
basically blocked
○ Anything with a encoded space is
blocked
● Be sure to monitor your Robots.txt file. If it
goes Haywire and your site is unindexable
(i.e. Disallow / ), YOU will need to contact
Shopify support.
By Peter Macinkovic, Digital Marketing ManagerSEO Melbourne Meetup | July 2019
23. Sitemap
● Sitemap is locked-in...kinda
● Sitemap.xml is a Sitemap Index references
4 separate sitemaps
○ /sitemap_products_1.xml?from=XXX
X&to=XXX is all published products
○ /sitemap_pages_1.xml is all
published pages
○ /sitemap_collections_1.xml is all
published collections
○ /sitemap_blogs_1.xml is all published
‘blogs’ (categories) AND articles
By Peter Macinkovic, Digital Marketing ManagerSEO Melbourne Meetup | July 2019
24. Sitemap
● You may omit published from the sitemaps
using metafields.
○ Namespace: SEO
○ Key: Hidden
○ Value: 1
● You may not add arbitrary URLs to the
sitemap that are outside of the objects of
Shopify.
○ You will need a special trick to do this
i.e. redirect to externally hosted
sitemap
By Peter Macinkovic, Digital Marketing ManagerSEO Melbourne Meetup | July 2019
25. Sitemap
● You may omit published from the sitemaps
using metafields.
○ Namespace: SEO
○ Key: Hidden
○ Value: 1
● You may not add arbitrary URLs to the
sitemap that are outside of the objects of
Shopify.
○ You will need a special trick to do this
i.e. redirect to externally hosted
sitemap
By Peter Macinkovic, Digital Marketing ManagerSEO Melbourne Meetup | July 2019
26. By Peter Macinkovic, Digital Marketing ManagerSEO Melbourne Meetup | July 2019
Canonical URLs
● Canonical URLs are hard set in the
canonical url object URL in Shopify
● For flexibility, recommend setting a global
canonical metafield to overwrite Shopify
● Include logic for edge cases. i.e. ?page=1
Vanity Canonical URL: https://www.kianabeauty.com.au/estee-lauder-
gift-with-purchase
27. 301 Redirects
● Redirects on Shopify are one-to-one only
● Redirects only work on URLs that produce a
404 response
● Using a tool like ShopifyFD, URLs can be
done in bulk with a comma-separated
syntax
● Redirects can be edited and deleted
● No redirecting to redirects using relative
URLs
● Republishing a 404 may remove the 301
redirect
By Peter Macinkovic, Digital Marketing ManagerSEO Melbourne Meetup | July 2019
28. HTTP Responses
● Also published pages respond with a 200
Status
● All legal URLs of a collection return a 200
status
○ This includes invalid tags. I.e.
/collection/collection-name/asdfg
○ You cannot redirect invalid tags or
parameters since they return 200
● You can use this to your advantage
Create Vanity Landing Page URLs like
/collection/chanel/afterpay to create
versailite IA
By Peter Macinkovic, Digital Marketing ManagerSEO Melbourne Meetup | July 2019
This URL is valid 200 and CANNOT be redirect:
https://www.kianabeauty.com.au/collections/chanel/no-5rerfe
You would have to unpublish the collection, perform redirects, then
republish to fix it
29. HTTP Response Vanity Page Example
By Peter Macinkovic, Digital Marketing ManagerSEO Melbourne Meetup | July 2019
30. Liquid Templating
● Liquid is a templating langauge for theming
Shopify
● Includes basic logic like IF, UNLESS
● Includes string manipulation, including the
interesting ‘CAPTURE’ feature to get strings
(useful for matching handles)
● Limited - not real code, no more than 50
items in a loop unless you do pagination
which…. Is difficult to explain
By Peter Macinkovic, Digital Marketing ManagerSEO Melbourne Meetup | July 2019
31. Working with Shopify
By Peter Macinkovic, Digital Marketing ManagerSEO Melbourne Meetup | July 2019
32. ShopifyFD
● Created by Jason Bowman - former
freelancer, now with Shopify APAC team
● Chrome Extension OR JS Bookmark
● MUST HAVE for bulk operations like
redirects, adding metafield,s duplicating
things like menus
● Currently a broken tool - since the Shopify
admin change, many features don’t work as
they used too i.e. cannot edit metafields for
collections. Still useful, but awaiting new
version when Jason gets to it.
http://shopifyfd.com/
By Peter Macinkovic, Digital Marketing ManagerSEO Melbourne Meetup | July 2019
33. Bulk Editor
● Tricky to find in admin natively, recommend
to bookmark them
● Edit metafields, page_title,
meta_description in bulk interface
● Seperate sections for each object (pages,
products, collections
● Admin URLs are messy, like
/admin/bulk?resource_name=Product&limit
=1000&order=asc&edit=metafields.seo.hid
den%3Astring%2Ctitle%2Cmetafields_globa
l_title_tag%2Cmetafields_global_descriptio
n_tag%2Chandle&s
By Peter Macinkovic, Digital Marketing ManagerSEO Melbourne Meetup | July 2019
34. App Ecosystem
● There are external apps that can make
management of SEO tasks easier
● JSON-LD is done by Eric Davis. One time
feed, handles a lot of JSON-LD for you. One
time fee, never worry about it again
https://apps.shopify.com/json-ld-for-seo
● Traffic Control helps manage 404, do bulk
redirects.
https://apps.shopify.com/traffic-control-bulk-
redirects
● Metafields Editor - provides an interface to
manage Metafields
https://apps.shopify.com/metafields-editor
By Peter Macinkovic, Digital Marketing ManagerSEO Melbourne Meetup | July 2019
35. Customising Liquid
● Refer to a cheat sheet what you can and
cannot reference:
https://cheat.markdunkley.com/
● Use request.path to find the current URL
you are in:
https://help.shopify.com/en/themes/liquid/objects/re
quest
● Hard loop limits of 50. Handle Matching.
Nested Link Lists. Fun
By Peter Macinkovic, Digital Marketing ManagerSEO Melbourne Meetup | July 2019
36. Keep Shopify SEO Simple
By Peter Macinkovic, Digital Marketing ManagerSEO Melbourne Meetup | July 2019
40. Noindex
● Include some kind of code to add noindex
to your page
● An easy check would be to see if the
template name contains ‘no-index’. I.e.
Product.no-index to apply a no-index
● Canonical URLs must exist if {{page_for-
header}} is included…. So you will always
send mixed signals to Google, but they
respect it pretty well...
By Peter Macinkovic, Digital Marketing ManagerSEO Melbourne Meetup | July 2019
41. What happens when you do push Shopify
beyond its intentions →
Work within the strict limitations of Shopify
when possible
Use Collections whenever possible in lieu of the
native way filters work unless you have a
gameplan
Be sure to include custom features for canonical
URL overrides and noindex
Keep Shopify SEO Simple
By Peter Macinkovic, Digital Marketing ManagerSEO Melbourne Meetup | July 2019
42. Peter Macinkovic
https://peter.macinkovic.id.au
Twitter, instagram, LinkedIn as @inkovic
Questions?
● Try the Shopify Forums. Jason Bowman is a
very helpful member of the community
● Read the Documentation
● StackExchange, Slack (#eCommTalk) etc.
By Peter Macinkovic, Digital Marketing ManagerSEO Melbourne Meetup | July 2019