The Shopify SEO Expert Guide: Over 101 Tips (Updated For 2024)

29 Comments

Good Shopify SEO follows a checklist of best practices to help your store appear at the top of Google. This guide is your map to grow your store’s organic search. I have used it on the websites of billion-dollar companies. We use it for Shopify SEO clients. Shopify staff pass it around their offices and recommend it to store owners.

The freedom to search for (nearly) anything at anytime has changed how we think, speak, and live. 84% of people search Google 3+ times per day leading to 6.3 million searches per minute, according to Statista. Particular to commerce, almost half of all product searches begin on Google.

Shopify has a large piece of the search pie being the largest provider of ecommerce software. According to BuiltWith data, over seven million merchants now rely on Shopify to be their ecommerce platform. I’ve been doing Shopify SEO at Digital Darts for as long as we’ve been Shopify Marketing Expert since 2015, and a small business with an online store not on the platform violates the norm.

The guide is born out of what we see work for our clients so you too can begin to grow your brand without paying Zuckerberg or a Chinese company for every impression. Audit your Shopify’s SEO by following the guide every six months, when you notice a drop in organic visitors, or when you are unsure of what to do next to get more buyers from search at no cost.

The Shopify SEO Expert Guide Over 101 Tips

How Your Position in Google Impacts Sales

Let’s begin by understanding how rankings in Google exponentially skews sales. Advanced Web Ranking’s click-through rate analysis of search results with the “people also ask” feature, estimates a second position receives 14.91% of traffic for that search query:

Google organic search ctr 2024

Here is a tabular breakdown of the exact figures for calculations I’m about to do:

1 2 3 4 5 6 7 8 9 10
CTR % 37.15 14.91 8.72 5.58 4.15 3.02 2.08 1.53 1.18 1.25

If you receive 400 visitors a month in second position, first position will see your store receive 848 visitors. That is double the results from one improvement in position.

Now translate this increase of visitors into sales. Grab the Shopify revenue and number of sessions in the past 90 days from Shopify Analytics. Divide revenue by sessions to get a dollar value per session. Multiple this figure by the increase in visitors. If the dollar value per session is $1.5, 448 visitors per month is estimated to add $672 in revenue per month.

You are unlikely to experience one ranking improvement for one search term—other search terms are likely to increase traffic. It’s not unusual for good SEO to boost whole categories of pages in Google for their optimised search terms. Rand Fiskin describes the outcome as a “rising tide that lifts all boats”.

A ten-degree adjustment can deviate a large store to unseen profit by next year. Each page, collection, product, and blog post opens a new chance to get traffic from Google.

What Growth Can You Expect?

If you weigh as much as a small car, your health has more room for improvement than the average person of average weight. If your Shopify has poor SEO, you have more space for growth. Should the audit show poor SEO health, you are more likely to grow from SEO than another store who passes 90% of the audit.

A second factor of rapid SEO growth involves content, or the quality and quantity of pages. Each good piece of content is a ranking opportunity. A store with 1000 SKUs has more potential to benefit from SEO, generally speaking, than a store with 1 product.

Another piece of content aside from products that performs really well for stores that anyone can use is articles. I see articles worthy of SEO as detailed guides filled with images, videos, and information you can’t anywhere else that genuinely solves a problem. An article with 4 tips for fashion is not going to reach the top canopy of search results. If you produce a guide better than anything else online about the topic, like this Shopify SEO tutorial, you have further potential to grow from SEO.

SEO is viewed by start-up stores as an affordable bootstrap way to grow a store. It can be, but not if you are a one-man show with a few dropship products. I’m not here to bull you with false hopes. You will not dominate Google with some keyword optimisations or links that come from an hour of work per week. Good Shopify SEO is a grind overtime. A general and reasonable hope, which I base on the results of past clients, is to get 10% growth from organic search each month.

Is Shopify SEO Friendly?

As a Shopify Marketing Expert with 20 years SEO experience across many platforms like WordPress and WooCommerce, BigCommerce, SilverStripe, and Magento, I get asked a lot if Shopify is good for SEO.

Well, Shopify is great for SEO. We’ve got incredible results for Shopify clients, including businesses that have been doing millions for years before they engaged with us in SEO to then double organic traffic.

I hear a lot of people in the industry say Shopify has SEO limitations. Shopify will not limit the organic performance of 99% of businesses; performance will be limited by your ability to follow the SEO tips and best practice optimisations in the guide.

What makes Shopify so good for SEO? Shopify automatically handles the following SEO best practices that can be ignored in the audit:

Sitemap.xml generation

The sitemap file helps all key pages on your store get discovered by Google. If Google does not know a page exists, the search engine cannot suggest the page in its search results. You do not generate the file because Shopify handles it for you. You can remove pages from it. Review the file at: yourstore.com/sitemap.xml

Robots.txt generation

The file controls how Google crawls a website. Shopify handles it for you. The robots.txt file blocks Google from unnecessary page crawls like /account/register and /cart, blocks Google from most duplicate content in collections where filters create new pages with the plus symbol, and follows the best practice of including the sitemap.xml. Review the file at yourstore.com/robots.txt to see its rules. You can edit the robots.txt file to customize any allow or disallow rule.

Server speed

Store speed affects SEO. Many factors play into the speed of a store. A fast server does not guarantee a fast website though you cannot have a fast website without a fast server. Shopify is a managed hosting solution with top-notch CDN servers and unlimited bandwidth. Most of our clients see server response speeds reported in analytics of 0.30 seconds. You don’t have to worry about the time, problems, and costs that come with hosting your website. Andrew Youderian loves the reduction in tech problems as revealed in his case study of migrating to Shopify. I have helped Magento, Prestashop, and Neto stores migrate to the light-side—while retaining their millions in yearly organic sales as they experience the joy of reduced technical headaches.

Out-of-date software

Out-of-date software can lead to a hacked store. All it takes is one plugin to render a whole website vulnerable. I saw many WordPress websites hacked before working only on the Shopify platform. The hacks injected links pointing to drug websites and cloaked them so Google, not the user, would see the links. Google detects the illicit behavior then punishes the hacked website with reduced or non-existent organic traffic. One website took three months to recover from a Google penalty. I’ve heard some websites never recover. I am no security expert and know Shopify is not perfectly secure—you cannot say any web technology is 100% safe for life. Shopify take security seriously and reward coders thousands of dollars every month to identify security risks.

Speed of implementation

The longer it takes a valuable activity to be completed, the longer its value diminishes. A sale today is better than the same sale next week since the cash can be used. A 1% conversion rate improvement in your Google Ads today can net you more scale for more data and more profit. The quicker you can make SEO improvements, the faster you rank, the faster you learn, and the faster you profit. Anyone can edit content elements of a page. Apps let you roll out needed features. Developers can make theme changes for faster loading times, friendlier mobile usability, or functional filters for navigation due to central theme files, available documentation, and a large community for support.

“You’ve got to have some issues with Shopify?”

I do. What are my biggest annoyances with Shopify from an SEO perspective? SEO is a field that incorporates hundreds of factors. These points are me being brutal.

Multi-Store Hreflang Tags and Canonicalisation

The hreflang tag tells Google what version of the page—in this case, from what store—Google should serve to users. Canonicalisation usage for multi-lingual stores across multiple domains, can be managed with manual hreflang and rel="canonical" tags when the URL structure across all websites is the exact same. Usability and SEO problems are painful when one of the stores does not have all of the same pages, products, and collections, which happens for most businesses. The hreflang tags end up pointing to non-existent pages to produce 404s.

The more impacting part of the problem arises with a change of language in URLs. Part of healthy usability and SEO is keeping URL usage consistent throughout a website. This means not alternating between “http” and “https” or “www” and “non-www” or never linking to mobile versions of the store on the desktop version. In this case, not having English URLs for non-English stores. When non-English URLs are used, canonicalisation management becomes impossible for a store with large SKUs. 404s occur and link juice gets diluted across pages.

However, after years of frustration with this for clients and seeing many other Shopify stores lose rankings and sales from bad hreflang tags, we created a Shopify app called “Digital Darts: Hreflang Tags“. All of your Shopify stores can now have perfect hreflang tags to increase sales from organic search.

Without the app, your customers may be taken to the wrong store when coming from Google or Bing search, which can lead to confusion in international shipping and poorer conversion rates. By using the app, organic conversion rates may increase as visitors are served the correct store for their region and language in search results.

If you’ve previously used a universal language in your URLs across stores to deal with hreflang tags, you can now catapult SEO and improve the user experience with URL handles in the same language as the store. This is the first app ever in Shopify to let everyone have perfect hreflang tags.

Digital Darts Hreflang Tags app

Faceted Navigation

Faceted navigation can occur on collection pages to let users filter products by color, size, brand, price, or other attributes. It is a best practice method to help people find what they want. However, the SEO implications are hard. It is the biggest challenge to solve in Shopify SEO today.

Let’s look at a collection of one Shopify store, French Connection, so you can see the problem. Observation the description and h1 tag that has the text “MIDI DRESSES”. The title is “Midi Dresses for Women | Mid-Length Dresses | French Connection UK” and meta description is “Explore our collection of elegant midi dresses. From long sleeve floral midis to cold shoulder midi dresses, we have got you covered. FREE UK delivery over ÂŁ50.”

Collection page on French Connection Shopify

When I select the color filter then choose “Black”, I get a great experience of seeing all black midi dresses:

Collection page on French Connection Shopify with one filter

However, SEO problems arise from unoptimised content since “black midi dresses” gets good search volume French Connection can capture. The filtered collection page has the same title, meta description, h1 tag, and collection description as the parent collection. Furthermore, it canonicalizes to the parent collection. These are all signals that tell Google to point traffic to the parent collection, which is not optimized for search variants containing color.

You can edit your theme to optimize the title, meta description, and h1 tag with unique content using liquid. I’d also recommend French Connection remove the on-page description on filtered pages to minimize duplicate content since writing and maintaining loads of unique descriptions has a high cost. All of these changes can be done to create an SEO friendly navigation. It just requires expert knowledge of SEO and knowing what Shopify, or the filtering app, is capable of to make it work well.

Sub-folders Versus Sub-domains

Sub-folders are preferred over sub-domains. Google says the two are equal, but data from tests and professional SEOs like Rand Fishkin, say sub-folders are far stronger. SEO efforts like link building are dissipated from a sub-domain structure.

If third-party software like WordPress or Zendesk could be set up in a sub-folder, that would give companies more chance to rank their content in search results.

Shopify Markets lets you launch with a sub-folder structure for different regions and languages. Separate top-level domains with hreflang tags solves any SEO concern for businesses with multiple Shopify accounts.

Indexation From Sitemaps

Shopify submits one image per product in the products sitemap. This leads to a lot of unindexed images that can capture organic traffic, especially if you have unique product imagery.

Single image in Shopify product sitemap

To solve this, I recommend the Image Sitemap app. The app developer has a good article on Medium about why you should not rely on Shopify for image indexation.

Image File Name Changes

The URL name structure of images helps Google understand the contents of the image. It helps SEO for overall page performance and in Google image search.

It would be good to have control over renaming product image name URLs located on the Shopify CDN. The only way to control these names is to upload the image with the name you intend to use. If an image is not ideal for SEO, it has to be deleted then uploaded.

URL Content Type Prefixes

The most common frustration I hear with Shopify’s SEO is the use of /collections, /products, /blogs, and /pages in URLs. I am mixed about this being an SEO problem. From a usability perspective in looking at URLs, it is easy to see where you are at with the current URL structure.

The unavoidable, multiple blog folder structure of /blogs/blog-name is undesirable. It would be nice to have the option to alter folder structures to slightly boost content authority from reduced folders and improve its URL appearance.

Each of these listed issues do not affect the organic ranking performance of most stores. The SEO upside of being on Shopify far outweigh the downside.

As a Shopify Expert Marketer in SEO and a Shopify Partner, Shopify have consulted with me on these issues. As an example, there use to be a blog id that gets pre-pended in the URL of every post, but Shopify updated this. What they’ve changed over the years is proof they listen. Shopify staff read this guide all the time. The good news is they are aware of these downsides so we can hope for improvements in the future.

How to Use the Expert Guide for a Shopify SEO Audit

Work from top-to-bottom making note of what needs improvement. Use your notes to create an SEO plan of what needs further analysis, tweaks, or an immediate overhaul.

If you have limited time and can’t do everything, I recommend the health check, content, and value analysis sections. These have the greatest affect on SEO.

Back in 2016 I emailed Digital Darts subscribers an offer to complete an SEO audit of their store for the first person who replied. Josh from BrickellMensProducts.com put his hand up. Since then, Brickell has become one of America’s fastest growing companies. Listen to their story.

Following the first publication, to keep the Shopify SEO guide fresh and accurate, I’ve also applied the expert guide to MyCityPlants.com who’ve been a Google Ads client for over 5 years. Jack, My City Plants co-owner, happily gave permission to audit his store. Thanks to Jack and Josh, you get to watch me walk through the SEO of real stores, which makes the analysis more useful.

If you want to save yourself headaches working with freelancers and agencies who don’t understand Shopify, and instead partner with a Shopify SEO expert work who will work with you on a clear step-by-step plan for organic search growth, get in contact about our Shopify SEO service.

Let’s begin the audit:

Get The Free Shopify SEO Checklist

I’ve turned The Shopify SEO Expert Guide into a simple checklist for you to keep on hand. You can print it out. It is free and looks pretty so you should download it!

The Digital Darts Shopify SEO Audit

1. Health Check: Good SEO begins with a check of your store's SEO performance to identify critical blood loss.

2. Website Architecture: Looks at how the store is structured to maximise the number of visitors from SEO.

3. Accessibility: Checks if the website is accessible to Google, social media platforms, and people with disabilities to the degree it influences SEO.

4. Usability: A usable website is one the visitor can comfortably interact with to accomplish their desired goal. Usability focuses on the common person's experience on common equipment.

5. Content: Content is king. Learn what makes good content for an online store and how your store measures up.

6. Links: Links in the eyes of search engines are like votes. A store with more quality votes has a greater chance of higher rankings. Not all links are equal so a link audit is important.

7. Value: SEO is a short-term game if the store does not help people. Value can be measured and built into a store to improve SEO and competitive position.

Download the SEO Checklist: I've turned the full guide into a free PDF download.

Free SEO Audit: Audit the SEO of your store right now.

Get Shopify SEO Help: Attract more visitors and sales from SEO by a Shopify Marketing Expert.

Health Check

A good doctor works on a health problem after deep analysis. The doctor might look at the problematic area or order a blood report.

Good SEO begins with a check of your store’s SEO performance. It lets you set a benchmark for performance and identify major health problems. The best surgical operation is useless—even harmful—if the wrong location is operated.

1. Google Search Console and Bing Webmaster Tools Setup

Are each set up? Google Search Console (abbreviated to GSC or “Search Console” and formerly known as Google Webmaster Tools) and Bing Webmaster Tools is how each search engine shares critical information about a website. You’ll come back to these throughout the audit.

Search Console is one of the best tools to monitor areas of SEO like rankings in search, crawlability, mobile usability, page speed issues, and schema markup.

2. Google Analytics Setup

Check sales in Google Analytics are attributed to the right sources. The purpose of ecommerce SEO is to get sales so measure it the best you can. Good data can help good decisions.

In Google Analytics 4, sales can be confirmed from Reports > Monetization > Ecommerce purchases. Check for revenue.

Secondly, confirm payment gateways aren’t receiving credit for the sale. Go to Reports > Acquisition > Traffic acquisition. From the “Event count” dropdown, select “purchase” then sort from high to low purchases. Lastly change the primary dimension to “Session source / medium”. Confirm no revenue is attributed to payment platforms.

How to see source of referrals in GA4

If sales come from a payment processor, the solution is to add the domain like paypal.com into the unwanted referrals.

For everything you need with GA4, run through my up-to-date Google Analytics setup guide.

3. Total Pages Indexed

Google must first find a page on your store before it can be suggested to people in search results. “Crawling” is this process where Google follows links across the Internet then discovers what is on a page. When a page is crawled, Google may or may not present the page to people in search results, which is referred to as “indexing” much like a librarian indexes books to organise a library.

Search in Google “site:yourstore.com”. The number of search results is the number of indexed pages. Note the number of results. MyCityPlants.com has 1,030 pages indexed. BrickellMensProducts.com has 765 pages indexed:

Site search parameter in Google

Download Screaming Frog’s SEO Spider. It is the ultimate tool to audit technical SEO.

If your store has over 500 crawlable assets, including images, JavaScript, and CSS, buy a license so Screaming Frog can scan your whole website. One store I worked on had over 250,000 pages with only 5,000 SKUs due to product tags.

Run a crawl of your website. Once the crawl is 100% complete, select “HTML” from the top dropdown.

Total internal indexable URLs Screaming Frog

How does the summary number from “Total Internal Indexable URLs” compare to Google’s index? Investigate the difference to spot large issues.

The scan will most likely have more URLs. The robots.txt file deters Google from crawling then indexing a lot of URLs. Another reason may be that Google is unable to discover all pages from poor website architecture. A page can be 5 clicks away from the homepage making it hard for Google to discover.

If it’s a small store under 1000 URLs, you can eyeball every page. See what is indexed that should not be and what is missed.

If your website is large, seek a sample of each page type to explain the major discrepancy. You may find it helpful to sort by the “Indexability” column to see what can be indexed. You can also search a specific page in Google with the “inurl:[url]” search like “inurl:mycityplants.com/blogs/office-plants-blog/tagged/plant-guide” to see if a page is indexed.

  1. mycityplants.com/collections/extra-large-4-8?page=2: The second page inside a collection. I searched this page in Google with the “inurl:” prefix and no result came up.  I searched the crawled pages in the crawl stats report with the filter “page=” and found only 18 pages have been crawled. Google is not crawling pagination well.
  2. mycityplants.com/collections/bright-light-plants/plants-in-self-watering-planters: A tagged collection that shows self watering planters in the “Bright Light Plants” collection. This comes from faceted navigation, which is one of the hardest parts of technical SEO to manage in Shopify. Navigation is addressed in the website architecture and usability sections of the guide. I looked at a larger sample of tagged collections then reviewed in Google Search Console if any generate good rankings or rank for unique terms. The only tagged collections getting traffic is the collection /collections/plants-in-self-watering-planters. The tag collections do not help someone searching in Google any better than primary collections, so my recommendation with this will be to noindex tagged collections.
  3. mycityplants.com/blogs/office-plants-blog/tagged/plant-guide: Tags on the blog are used a lot. Unless you have a strong reason to use tags on blogs, delete and avoid them. Most Shopify themes are designed to have them indexed.

Are there pages indexed in Google that you do not want indexed? A verification step to spot pages you do not want indexed is to browse pages and collections in the Shopify admin, then look at the titles and description summaries. Scan the list of content then if something seems it may be useful to deindex, view the page to confirm it has no value appearing in search results. Doing this for My City Plants, I spotted many thank you pages and old pages that have no unique content.

I have seen too many developers deindex content the wrong way by editing the theme to include a nofollow and noindex rule for the page. The method is wrong because the page is still discoverable in the sitemap and from other links on the website, which may encourage the page to be indexed by Google. I’ll show you a special Shopify trick even the best Shopify Plus partners don’t use.

Use the free Metafields Guru app. Their Chrome extension makes editing metafields a breeze. Find the page or collection in the Shopify admin you do not want indexed. Load up the extension then use the following values for a metafield:

"namespace" : "seo"
"key" : "hidden"
"value" : 1
"value_type" : "integer"

The metafield will add nofollow and noindex to the page, remove the page from the sitemap.xml file, and remove the page from the storefront search. This is the proper way to de-index Shopify pages.

4. Google Search Console Crawl Stats

The crawl stat report gives an overview of total pages seen by Google overtime. Access your report from Google Search Console by clicking “Settings” at the bottom-left.

Access crawl stats in GSC

How Google crawls a website depends on many factors. Google will crawl a page that changes each week more than a page updated once a year. If a page has low value content like faceted navigation or duplicate content, Google will crawl it less.

The first check is to view the graph to look for large spikes, sharp drops, or a peak that exceed the total pages on the website. These require investigation. There are many possibilities an SEO expert can consider for crawl variability:

  • An increase can come from new pages, products, or collections.
  • Maybe a sitemap was submitted to Google that lead to better coverage.
  • If a drop occurs, perhaps someone added a new robots.txt rule that blocked the Googlebot.
  • The average response time increasing overtime can reduce the number of crawled pages. You may benefit from faster servers being on Shopify Plus.

My City Plant’s crawl stats show spider activity fluctuated by 1,600 pages on the highest day to the lowest:

Crawl stats report

There’s no large spikes or sharp drops, but the total per day is larger than what’s indexed. This will be due to the faceted navigation and many other low value pages spotted in the index analysis just before.

The second check with the crawl stats report in an SEO audit is the response codes:

Response codes Google Search Console

Investigate bad response codes.

The third check with the crawl stats report in an SEO audit is the host status report:

Host status report in crawl stats

The report looks at three factors:

  1. Robots.txt fetch: The failure rate for robots.txt requests during a crawl.
  2. DNS resolution: Shows when the DNS server didn’t recognize your host name or didn’t respond during crawling.
  3. Server connectivity: Shows when your server was unresponsive or did not provide the full response for a URL during a crawl.

It can be challenging to diagnose issues in the past that no longer occur. For DNS issues, speak with person responsible for the domain. For robots.txt issues, check if the theme has a robots.txt file. If it does, the file has likely been customized so you can discuss changes with the theme developer. The one-time occurrence of a DNS issue for My City Plants should be reviewed a month later to see if further issues arise.

5. Lifetime Organic Traffic Drops

SEO is an unethical industry. A lot of freelancers and agencies do low-quality SEO work known as “black hat SEO“. Black hat tactics are at high risk of getting the website penalized by Google. A penalty is experienced by diminishing organic search. You’re left confused as to why sales died from organic search. Recovery from a Google penalty can take months.

A penalty is best spotted with a sudden drop in organic traffic. In Google Analytics 4, go to “Reports” > “Acquisition” > “Traffic Acquisition”. Click from the top-right the entire time period back to when your analytics was set up. Lastly, it’s cleaner to have a visual graph of only organic search so create a filter from the top of “Session default channel grouping” with a dimension value of “Organic Search”:

Check Google Analytics 4 for lifetime organic traffic and SEO penalties

Brickell’s organic traffic from the original audit years ago shows steady growth with no major drops:

Brickell lifetime organic traffic

If you have a drop, cross-reference the date of the drop against Google algorithm changes using two trusted sources that track algorithm updates. The most comprehensive source is Moz’s Google Algorithm Change History. A second, though less comprehensive, source is the performance report in Google Search Console, which can have annotations of major changes on the timeline:

Google search update in Google Search Console

For the period you see drops in organic traffic, transpose the dates to see algorithm changes that may have affected organic performance. Note the date and algorithm update. If there’s no algorithm update, still note the algorithm update and the time period as a possible explanation.

If you spot a sudden spike, the website likely benefited from an algorithm update. Use the same method to find out what happened to reinforce your SEO strategy.

Organic traffic growth is hard to spot day-in, day-out. Instead, look across monthly performance. 10% growth each month is a good goal for new stores. It’s also wise to compare the current year against last year to eliminate seasonal trends. Analyze a period against the previous year in the date selection of analytics.

6. Google Search Console Manual Actions

The manual actions section in Search Console lets Google make clear serious violation of their website guidelines. Most websites see no manual actions.

Google Search Console manual actions

If you get a message, the issue has high priority to help your SEO. The method of correction for a manual action varies with every issue. Google rarely tell you the issue in detail. You’ll have to dig deeper into your analysis or consult an SEO expert to get your store in full recovery.

7. Algorithm Cross-Check

Let’s say your store passes all the health checks so far. You have not spotted any penalties or technical issues. Minor penalties can go undetected. Advanced health checks provide more coverage, analysis, and reassurance.

I recommend Cognitive SEO for their “Unnatural Links Detection” tool that provides a good source to investigate toxic SEO. Backlinks are the primary risk of penalty for most Shopify stores, which you will analyse later in the audit, so it helps to have multiple tools give their stats and opinion.

Barracuda’s Panguin Tool is a fantastic free tool that transposes algorithm updates over your monthly traffic. One store came to me after they saw organic traffic plummet in 2013. The tool made it clear the website was penalised in 2013 from a Panda update. I ran through the SEO audit revealed in this guide then acted on the insights. The website regained organic traffic in May 2014:

Google penalty recovery Barracuda

Based on my experience, when you recover from a penalty, Google suddenly sends the website more organic traffic. The subsequent climb out is then steady like good SEO.

Website Architecture

Website architecture looks at the store’s structure to maximise the number of visitors from SEO.

1. Collections Structure

Collections in Shopify are a group of products. They act like the sections in a physical store that tell customers where to find a product. A good group of collections tell people and Google what each is about.

A well-structured website is, first and foremost, user-friendly. Design your collections first for people. Google hates it when store owners attempt to please the search engine at the cost of user-experience. No one wants a drop-down with 100 brands.

My City Plants has 6 links in the navigation, of which, all but the contact page are not URLs:

My City Plants navigation

The top collections in each dropdown provides enormous opportunity to boost SEO with keyword-rich anchor text of collections. It’s a balancing act of serving people first then adjusting the structure to suit SEO.

There are principles to follow to design good collections:

  1. Use brands (Nike), product type (shoes), or product application (basketball). A mix can work well too. Product attributes (color, size, model) rarely work and are best left to filters.
  2. Simplicity is your goal. Brickell use to confuse me with overlapped collections. “Travel” fits into “Kits”. They also had a “Collections” link, which is a vague descriptor. For My City Plants, “Office Plants” overlaps with “Plants”. A split-test of “Office” versus “Office Plants” is worthy but from an SEO perspective it’s not a URL so it doesn’t matter. Contact is unnecessary for most stores, yet for them it sits well since they provide consultation and services for businesses.
  3. Include at least one highly-relevant word in each collection that is commonly used in search queries. Use the Google Ads Keyword Planner to generate keyword ideas. You can input your competitors’ product categories into the tool to discover relevant keywords.
  4. Refer to the search analytics report inside Search Console to see how people arrive on your collection pages. Select the “Page” filter to view how a collection generates organic traffic. Are there frequently used terms that can be adapted into the collection? While you don’t want to have a navigation link like “Natural Face Products”, use these researched terms in the page’s URL, title tags, and other on-page optimisations. From my analysis, “Body & Hair” generates 10% of the traffic compared to “Face” or “Shave”. The search queries show different intent (body lotion v shampoo) so they could be broken into two. The “Kit” collection gets zero traffic. A keyword analysis of the page using Google’s Keyword Tool gives keyword ideas not highly relevant. A lack of relevant intent can indicate a product-to-market miss-match.
  5. Content in the menu tells Google, “this is important”. Stores with a large number of products—I’m talking in the hundreds and above—have a great opportunity to get collections ranking quickly. Prioritize your most-viewed collections by placing them first with relevant keyword text. This strategy can increase conversion rates since the largest percentage of people seek the collections. Make the link and text consistent throughout the website to boost SEO.
  6. Conduct user-testing. Use Hotjar to view heatmap data. Run HITs on Mechanical Turk asking people to find a product to test alterations. If the website has thousands of visitors per month, a split-test is wise. Base decisions on data.

If you are a large store with diverse collections, your job is complex. Do mass amounts of keyword research from multiple tools including Advanced Web Ranking and couple the data with total search volume gathered from Google. You can manually cluster the search terms into groups, run a top-ranking report in the tool, then use the VLOOKUP function in Google Sheets to see the performance of collections. The insights you gather are incredible. Only bother with this advanced strategy if you have interest in the method or a store doing five figures per month from organic traffic.

2. Domain Canonicalization

Canonicalization merges multiple elements that are similar into one. Domain canonicalization fights duplicate content and builds link value since there’s one domain all other versions point to. Any Shopify store has at least three versions of a domain:

  1. https://mycityplants.com
  2. https://www.mycityplants.com
  3. https://mycityplants.myshopify.com

Your store may have additional domains. The HTTP version of each domain use to exist, but no longer does since Shopify requires stores use a SSL certification for HTTPS.

Visit each non-www, www, and myshopify version of your homepage to confirm each redirect. Secondly, confirm this by reviewing all domains on the Shopify account, plus the redirect settings for domain canonicalization, by going in the Shopify admin under “Settings” > “Domains”:

Shopify domains redirect

If the domains do not redirect to a single version, every page will have multiple versions. The sitemap.xml will be accessible from each domain which confuses  Google with what to rank. In the domain settings, click the domain you want to set as the primary. From there, you can define it as the primary.

What canonicalized version should you use? Neither non-www or www is better for SEO. The non-www version looks cleaner.

3. rel canonical

The rel canonical tag on a page tells search engines the preferred version of a page you want indexed. The tag is critical for stores with variants and collections because these circumstances alter the URLs. When a variant is selected, a query string like ?variant=8354282245 is appended to the end of a URL. Whenever a product is in one collection, Shopify creates a new URL for the product.

If the shaving cream product is in two collections, it has two collection URLs and a main product address like:

https://brickellmensproducts.com/collections/best-sellers/products/shave-cream
https://brickellmensproducts.com/collections/mens-shave-products/products/shave-cream
https://brickellmensproducts.com/products/shave-cream

A Screaming Frog scan is the fastest way to review canonicalizations. The screenshot below shows three products that have a canonicalized version different to the primary URL:

Shopify canonicalization

When the canonical version of a product page is domain.com/products/product-name, canonicalization is most likely set up right in Shopify. There’s a small possibility a developer has conditional statements around the canonical tag that gives it unwanted or uncommon behaviour. Check the liquid template of the store for the below code. Secondly, go through the “Directives” report of the scan to confirm.

If your scan shows no use of rel canonical or incorrect use, add the following line of code between the <head> and </head> tags in your theme.liquid file:

<link rel="canonical" href="{{ canonical_url }}" />

When I implemented this one change for a client who didn’t canonicalize any pages, they saw a 220% growth in organic traffic and sales within one month. Crazy.

If your store has tagged collections, Google likely struggles to crawl and index pages. Such pages from faceted navigation rarely has unique titles, descriptions, and content that makes Google want to crawl it.

Review Google Search Console for pages with “/collections/” in the URL to see clicks and impressions of tagged collections. If the volume is low, the store will get an SEO benefit from canonicalizing them into the primary collection and giving a noindex directive. Replace <link rel="canonical" href="{{ canonical_url }}" /> with the following code to canonicalize tagged collections to the primary collection and noindex tagged collections:

{% if template contains 'collection' %}
  <link rel="canonical" href="{{ shop.url }}{{ collection.url }}" />
  {% if template contains 'collection' and current_tags %}
    <meta name="robots" content="noindex, follow" />
  {% endif %}
{% else %}
  <link rel="canonical" href="{{ canonical_url }}" />
{% endif %}

4. Internal Links to Product Pages

Most Shopify themes by default render product page URLs into two formats:

  1. The standard canonical URL. For example, https://mycityplants.com/products/lechuza-balconera-color-50-planter-white
  2. The non-canonical URL for every collection the product is in. For example, https://mycityplants.com/collections/desk-planters/products/lechuza-balconera-color-50-planter-white

The non-canonical URL commonly occurs when navigating in Shopify from a collection to a product. This is a problem for SEO because a store will have many internal links using the non-canonical format that gives weight to Google’s algorithm that it should use them instead of the canonical product URL. The rel canonical tag is a suggestion—not a guarantee—for Google to suggest what version of a page in search results. The rel canonical link can be insufficient at telling Google you want the “/products/” version ranking.

To fix this, make all internal links point to the canonical URL of a product.

  1. Use the Liquify – Shopify Enhanced Code Search/Editor Chrome extension that lets you search code of a Shopify theme.
  2. Edit the code of the theme. Search for within: current_collection and within: collection. The extension will locate all instances of such code in the theme.
Shopify theme search to replace within collection
  1. Remove the liquid filter portion of the code, so | within: current_collection and | within: collection, of all links in templates. In this example, line 3 becomes <a href="{{ product.url }}" itemprop="url" class="hidden-product-link">.

The downside is breadcrumbs will no longer contain the collection so you may want to monitor conversion rates and time on website.

After you’ve made the template edits, there’s other sources that may need updating. You may have missed a template edit or have a non-canonical link within a blog article or page. Do another Screaming Frog scan to spot all internal links that point to the non-canonical version so you can find what needs correction.

5. Products Versus Product Variants

A product variant is a minor variant of a product. Variant qualities can include color, size, quantity, material, and configuration.

You need to decide for SEO, whether the store sells variants as separate products in Shopify, or as a single product with Shopify’s variant feature. When set up with the variant feature, you want the variants to get no search volume and canonicalize to the primary product. When set up as separate products, you want the variant quality to get search volume.

My City Plants sells variants as separate products:

Product versus product variants in Shopify for SEO

This setup is good for SEO when people search for variant qualities of the product and the pages have unique content. In this instance, people are not going to search for a money tree in a pot color of gray or dark cork. If they do, the volume is miniscule. These product variants should merge into a single product.

To decide off data whether you should merge variants or separate them, use the performance report in Google Search Console. Look at the impressions and queries for each variant. Click the page in Search Console to filter what search queries it ranks for. If the variant attribute has queries not unique to the variant attribute, it may be worth having it as a standalone product. If the variant has no impressions in search results, it has no SEO worth remaining as a variant.

Each product should be assessed on a case-by-case basis to best determine the best course of action for the whole website. From a usability perspective, you rarely want some products to have variants split out into their own products while others are grouped. Go one way or the other for the store.

In the event you want products split out by variant as standalone products for usability, but they don’t attract search volume, get unique content created for each. The second next best step to take is to point the rel canonical tag of variants to one variant. Shopify has a hidden metafield for canonical tags of products.

  1. Visit the following URL for your Shopify admin, replacing the mycityplants portion with your URL:
https://admin.shopify.com/store/mycityplants/bulk?resource_name=Product&edit=metafields.global.canonical%2Cmetafields.seo.hidden%3Aboolean&limit=250
Shopify edit canonical metafield
  1. Point product variants to the most default version of the product, the one with the best content, or the one ranking the best. Use the full URL.
  2. Save.
  3. Edit the theme.liquid file, replacing <link rel="canonical" href="{{ canonical_url }}"> with:
{%- if product.metafields.global.canonical != blank -%}
  <link rel="canonical" href="{{ product.metafields.global.canonical }}">
{%- else -%}
  <link rel="canonical" href="{{ canonical_url }}">
{%- endif -%}

The product.metafields.global.canonical metafield was once a native metafield that Shopify used for the {{ canonical_url }} value in theme.liquid. This meant no theme edits were required. I have no idea why they removed this feature. This solution creates a new metafield. Nevertheless, the outcome is the same.

6. Sitemap Status

When you submit a sitemap in Search Console, it helps Google understand the structure of your site and index it more effectively. A sitemap lists all the important pages on your website, ensuring that search engines can discover then crawl them. Google will not rank what it cannot see.

In Google Search Console, go to “Index” > “Sitemaps”. Is there a sitemap? If not, submit yours. You only need to submit the primary sitemap.xml file:

https://yourstore.com/sitemap.xml

The file contains references to four types of child sitemaps:

  1. Products (sitemap_products_1.xml). Shopify appends a query string to the sitemap. If the store contains thousands of products, it will create multiple product sitemaps.
  2. Pages (sitemap_pages_1.xml).
  3. Collections (sitemap_collections_1.xml).
  4. Blogs and articles (sitemap_blogs_1.xml).

Sitemap submission for a Shopify store is not about telling Google you have a sitemap. Google will find the store’s sitemap from its mention in the robots.txt file. The submission is about helping you identify errors and warnings:

Google Search Console page and sitemap errors

7. HTTPS

Does the store use HTTPS in the URL or HTTP? Google favors HTTPS websites.

All Shopify stores today are forced to use HTTPS. Web technology continues to move towards simpler security. An SSL certificate is easy to set up in Shopify.

Beware of browser messages and other SEO risks that come with implementing SSL. You damage the website’s SEO with incorrect redirects, protocol-usage in your theme, and Google Search Console configuration. If a page uses HTTPS, its content needs to load from HTTPS otherwise the mixed content will not load or produce an insecure warning in the visitor’s browser that scares them from proceeding.

Accessibility

Web accessibility in the audit refers to making the website accessible to Google, social media platforms, and people with disabilities to the degree it influences SEO.

1. Hreflang Tags

Hreflang tags tell Google the relationship between alternate web pages. The tags specify the language and region served by each version of the webpage. If you have a single website with one language, there’s no need for hreflang tags.

Since My City Plants is a local business serving New York with no alternate versions for regions or languages, they don’t have hreflang tags. I’ll breakdown a hreflang tag into three elements using a generic example:

<link rel="alternate" href="https://www.example.com/" hreflang="en-us" />

  1. The first element is rel="alternate". This tells Google the URL is an alternate version of the page.
  2. The second element is href="https://www.example.com/". This is the location of the page.
  3. The third element is hreflang="en-us". This specifies the alternate URL is for English-speaking Americans.
  4. The order of elements is irrelevant.

The most guaranteed method to audit hreflang tags for Shopify stores is a Screaming Frog scan. It is instant, accurate, and comprehensive. The one caveat to keep in mind when auditing hreflang tags with the tool is to look beyond errors and confirm each store has the desired language and region settings. Follow their tutorial to audit and test hreflang tags.

In minutes you’ll have a report like this with everything to address in your tags:

Screaming Frog scan of hreflang tags and errors report

Should the store require hreflang tags, follow the most comprehensive and up-to-date guide on hreflang tags in Shopify. In it you will learn a variety of solutions I created to implement hreflang tags in Shopify and how to manage them so they are perfectly error-free.

2. Appearance When JavaScript and CSS is Disabled

A search engine sees a website mostly in HTML so it makes sense to check your store’s appearance when JavaScript and CSS is disabled. Check by changing the settings in your browser or use browseo.net.

The output from the tool focuses on pure HTML, similar to what search engines see when they visit a page. You can quickly determine a page’s structure as well as its relevance for specific search terms by toggling options such as headings (h1-h6), redirects, and internal and external links. The purpose of the check in this stage of the audit is to ask yourself:

    • Is there unwanted content?
    • Can you see all menus?
    • Are links clickable?
    • Is irrelevant content appearing at the top when it could appear lower on the page?

    I’ve taken a full screen grab of the My City Plants homepage on browseo.net. A line of unwanted content is seen first on the page “- | / Save up to % Save % Save up to Save Sale Sold out In stock Menu”. Menus are all visible. Links all appear clickable.

    Google’s growing knowledge of JavaScript makes this classic SEO technique less valuable. Even so, it gives insight into how to possibly restructure the content of a website. A functional website when JavaScript and CSS is disabled is good to have in the rare instance users have such features disabled in their browser.

    3. Blocked Resources

    For a decade search engines could not understand JavaScript. In 2015 Google wanted to access JavaScript, CSS, images, and anything else that played a role in delivering content to a typical user.

    Google use to have a “Blocked Resources” report in Google Search Console that let you see in bulk any files the search engine could not crawl across the website, but the tool was removed. John Mueller in a hangout said, “We dropped that feature because we noticed most sites no longer ran into problems.”

    Your store is unlikely to have blocked resources, but you still should audit it to confirm. Today’s method of auditing blocked resources is to enter the URL of the homepage, a collection, a product, and a page in the URL inspection tool of Google Search Console. Click “View Tested Page” then render a screenshot.

    URL inspection tool Google Search Console

    Google says, “This is useful for confirming that all elements of the page are present and appear as you intend. Differences might be the result of resources that are blocked to Googlebot.”

    4. Cloaking

    Cloaking is where a search engine sees different content to a visitor. Developers can do it with geo-location redirects. Black hat SEOers use it to trick search engines.

    Google condemns the technique repeatedly saying a website should deliver the same content and experience to their spiders as the user. Think about it from the search engine’s perspective: they want to know what the user will experience.

    I recommend the User Agent Switcher extension for Google Chrome. Select “Googlebot” then visit a few pages of your store to see if it looks different in any way. A second check is Bruce Clay’s cloaking checker. The tool says My City Plants is not cloaking:

    SEO cloaking checker

    5. Structured Data Errors, Warnings, and Inaccuracies

    Google’s search results contain far more than blue titles, green URLs, and black descriptions. Search engines display marked up highlights about a website called “structured data”, “markup”, “schema”, or “rich snippets”. The highlights can include organization information, stock status, product price, reviews, and much more.

    The following screenshot shows a structured data example of review stars for My City Plants:

    AggregateRating markup of product stars example in Google for Shopify store

    Schema markup affects the click-through rate of listings as well as people’s judgement before the click. Even if your Shopify store has 5-star reviews on your product page, an aggregate 3-star rating on Amazon displayed in Google results will leave a sour impression on potential customers.

    In this section of the guide, you’ll learn how to spot markup errors. (Later I’ll cover the recommended types of markup.) When errors occur, snippets may not display in search results. The use of schema does not guarantee you will see marked data in search results, but clean markup is the only way it can happen. On the extreme side, incorrect use of schema can cause Google to penalize the website.

    To identify errors on current structured data, one way is to view “Shopping” and “Enhancements” reports in Google Search Console. These reports give you a website-wide understanding of the schema implemented:

    Product snippets report Google Search Console

    If there is an error, enter a sample of URLs in the Rich Results Test tool to confirm their existence. The tool has an advantage over Google Search Console because it lets you optimize markup in real-time. The disadvantage is you can only enter one URL at a time.

    Rich Results Test

    The second check I recommend is to test the following sample of pages in the Rich Results Test tool:

    1. Home page.
    2. The “about us” page.
    3. A collection page.
    4. A product page.
    5. A blog article (if it exists).

    You only need a representative sample as an error repeats itself because Shopify uses a template system. For each type of page, review and record these three points:

    1. Errors. This is reviewed again since Google Search Console can miss-report errors.
    2. Warnings. A warning doesn’t have to be corrected. If the data is available, aim to provide it.
    3. Data corrections. Manually review the values in each schema looking for what you want updated. These do not come up as errors or warnings. Does each field correspond to what the schema should be? While it helps to grasp the technical aspects of schema, you don’t need it for this step. Does a URL field contain a URL? Is the price accurate? Is the organization information accurate?

    Duplicate markup commonly occurs when one version of markup is done by JSON-LD while the Shopify theme has inline markup using microdata. If you see duplicate markup, it’s not an issue unless the page is miss-represented. Ilana Davis works with Shopify structured data all day and says, “Duplicate structured data is expected by Google and your Shopify store is not hurt by it at all.”

    What matters is one type of markup on each page is free of errors and complete with accurate information. In the next section, I will give you a copy-and-paste code base to use if you want this done for you. Then the following sections in the Shopify SEO guide will explain each type of structured data and the importance of this code.

    6. Complete Structured Data for Shopify

    If you are uncomfortable editing code, seek help as these steps involve liquid code, JavaScript code, and development skills.

    The Digital Darts structured snippet will give you the most complete structured data on a Shopify store. No app is required. Follow the steps to install this on your theme:

    1. Duplicate the live theme.
    2. Rename the theme following your naming convention. If there’s no convention, use the current theme name prepended with “schema”.
    3. Work on the schema theme by scrolling to it, select “Actions” then “Edit code”.
    4. In the “Snippets” folder, create a file named “schema.liquid”.
    5. Copy-and-paste our template code into the new file:
    <!-- Shopify structured data from digitaldarts.com.au/shopify-seo v1.6 -->
    {%- assign logo = 'logo.png' | asset_url | prepend: "https:" -%}
    {%- assign sameas_links = 'https://facebook.com/test,https://instagram.com/test' | split: "," -%}
    {%- assign enable_phone = false -%}
    {%- assign enable_local_schema = false -%}
    {%- assign latitude = '-27.1234567' -%}
    {%- assign longitude = '153.1234567' -%}
    
    {%- assign schema_templates = 'index,collection,list-collections,product,article' | split: ',' -%}
    {%- assign url = shop.url %}
    <script type="application/ld+json">
    {
      "@context": "http://schema.org",
      "@type": "Organization",
      "name": "{{ shop.name }}",
      "logo": "{{ logo }}",
      "image": "{{ logo }}",
      "url": "{{ shop.url }}{{ page.url }}",
    {%- if template.name contains 'index' -%}
      "description": "{{ page_description }}",
    {%- endif %}
      "sameAs": ["{{ sameas_links | join: '", "' }}"],
      "priceRange": "$$$"
    {%- if enable_local_schema == true -%},
      "address": {
        "@type": "PostalAddress",
      {%- if shop.address.street != blank %}
        "streetAddress": {{ shop.address.street | strip_html | json }},
      {%- endif -%}
      {%- if shop.address.city != blank %}
        "addressLocality": {{ shop.address.city | strip_html | json }},
      {%- endif -%}
      {%- if shop.address.province != blank %}
        "addressRegion": {{ shop.address.province | strip_html | json }},
      {%- endif -%}
      {%- if shop.address.zip != blank %}
        "postalCode": {{ shop.address.zip | strip_html | json }},
      {%- endif -%}
      {%- if shop.address.country != blank %}
        "addressCountry": {{ shop.address.country | strip_html | json }}
      {%- endif %}
      }
    {%- endif -%}
      {%- if enable_local_schema == true and latitude != blank and longitude != blank %},
      "geo": {
        "@type": "GeoCoordinates",
        "latitude": {{ latitude }},
        "longitude": {{ longitude }}
      }
    {%- endif -%}
    {%- if enable_phone == true and shop.address.phone != blank %},
      "telephone": {{ shop.address.phone  | strip_html | json }}
    {%- endif %}
    }
    </script>
    {%- if schema_templates contains template.name %}
    <script type="application/ld+json">
    {%- endif -%}
    {%- if template.name contains 'index' -%}
    {
      "@context": "http://schema.org",
      "@type": "WebSite",
      "name": "{{ shop.name }}",
      "potentialAction": {
        "@type": "SearchAction",
        "target": "{{ shop.url }}/search?q={search_term_string}",
        "query-input": "required name=search_term_string"
      },
      "url": "{{ shop.url }}{{ page.url }}"
    }
    {%- elsif template.name contains 'product' -%}
    {%- assign json_current_variant = product.selected_or_first_available_variant -%}
    {%- assign json_variant_count = product.variants | size -%}
    {%- assign json_count = 0 %}
    {
      "@context": "http://schema.org/",
      "@type": "Product",
      "name": {{ product.title | strip_html | json }},
      "description": {{ product.description | strip_html | json }},
      "image": "https:{{ product.featured_image.src | img_url: 'grande' }}",
      "url": "{{ shop.url }}{{ product.url }}",
      {%- if product.variants.first.sku != blank -%}
        "sku": "{{ product.variants.first.sku }}",
      {%- else -%}
        "sku": "{{ product.variants.first.id }}",
      {%- endif -%}
      {%- if product.variants.first.barcode.size == 12 -%}
        "gtin12": {{ product.variants.first.barcode }},
      {%- endif -%}
      {%- if product.variants.first.barcode.size == 13 -%}
        "gtin13": {{ product.variants.first.barcode }},
      {%- endif -%}
      {%- if product.variants.first.barcode.size == 14 -%}
        "gtin14": {{ product.variants.first.barcode }},
      {%- endif -%}
        "productID": "{{ product.id }}",
      "brand": {
        "@type": "Brand",
        "name": "{{ product.vendor | escape }}"
      },
      {%- if product.metafields.judgeme.widget -%}
        {%- assign reviewRatingJgme = product.metafields.judgeme.widget | split: "data-average-rating='" | last | split: "'" | first | plus: 0 -%}
        {%- assign reviewCountJgme = product.metafields.judgeme.widget | split: "data-number-of-reviews='" | last | split: "'" | first | plus: 0 -%}
      {%- endif -%}
      {%- if product.metafields.spr.reviews -%}
        {%- assign rd_a1 = product.metafields.spr.reviews | split: '"ratingValue":'  -%}
        {%- assign rd_a2 = rd_a1[1] | split: "," -%}
        {%- assign rd_a3 = rd_a2[0] | replace: '"', "" -%}
        {%- assign reviewRatingShopify = rd_a3 | plus: 1 | minus: 1 -%}
        {%- assign rd_a1 = product.metafields.spr.reviews | split: '"reviewCount":' -%}
        {%- assign rd_a2 = rd_a1[1] | split: "," -%}
        {%- assign rd_a3 = rd_a2[0] | replace: '"', "" -%}
        {%- assign reviewCountShopify = rd_a3 | plus: 1 | minus: 1 -%}
      {%- endif -%}
      {%- if product.metafields.judgeme.widget and reviewCountJgme > 0 %}
      "aggregateRating": {
        "@type": "AggregateRating",
        "ratingValue": {{ reviewRatingJgme }},
        "reviewCount": {{ reviewCountJgme }}
      },
      {%- elsif product.metafields.spr.reviews and reviewCountShopify > 0 %}
      "aggregateRating": {
        "@type": "AggregateRating",
        "ratingValue": {{ reviewRatingShopify }},
        "reviewCount": {{ reviewCountShopify}}
      },
      {%- endif -%}
      {%- if product.variants -%}
      {%- assign json_count = json_count | plus: 1 %}
      "offers": {%- if product.variants.size > 1 -%}[{%- endif -%}{
        "@type" : "Offer",
        "priceCurrency": "{{ shop.currency }}",
        "price": "{{ json_current_variant.price | money_without_currency  | strip_html | remove: ',' }}",
        "itemCondition" : "http://schema.org/NewCondition",
        "availability" : "http://schema.org/{%- if product.available -%}InStock{%- else -%}OutOfStock{%- endif -%}",
        "url" : "{{ shop.url }}{{ json_current_variant.url }}",
          {%- if json_current_variant.image -%}
            {%- assign variant_image_size = json_current_variant.image.width | append: 'x' -%}
            "image": "https:{{ json_current_variant.image.src | img_url: variant_image_size }}",
          {%- else -%}
            "image": "https:{{ product.featured_image.src | img_url: 'grande' }}",
          {%- endif -%}
          {%- if json_current_variant.title != 'Default Title' -%}
            "name" : "{{ product.title | strip_html | escape }} - {{ json_current_variant.title | escape }}",
          {%- else -%}
            "name" : "{{ product.title | strip_html | escape }}",
          {%- endif -%}
          {%- if json_current_variant.barcode.size == 12 -%}
            "gtin12": {{ json_current_variant.barcode }},
          {%- endif -%}
          {%- if json_current_variant.barcode.size == 13 -%}
            "gtin13": {{ json_current_variant.barcode }},
          {%- endif -%}
          {%- if json_current_variant.barcode.size == 14 -%}
            "gtin14": {{ json_current_variant.barcode }},
          {%- endif -%}
          {%- if json_current_variant.sku != blank -%}
            "sku": "{{ json_current_variant.sku }}",
          {%- else -%}
            "sku": "{{ json_current_variant.id }}",
          {%- endif -%}
        "seller": {
          "@type": "Organization",
          "name": "{{ shop.name }}"
        },
        "priceValidUntil": "{{ 'now' | date: '%s' | plus: 31536000 | date: '%Y-%m-%d' | uri_encode | replace:'+','%20' }}"
      }
      {%- if product.variants.size != 1 -%},{%- endif -%}
      {%- for variant in product.variants -%}
      {%- if variant != product.selected_or_first_available_variant -%}
      {%- assign json_count = json_count | plus: 1 %}
      {
        "@type" : "Offer",
        "priceCurrency": "{{ shop.currency }}",
        "price": "{{ variant.price | money_without_currency  | strip_html | remove: ',' }}",
        "itemCondition" : "http://schema.org/NewCondition",
        "availability" : "http://schema.org/{%- if variant.available -%}InStock{%- else -%}OutOfStock{%- endif -%}",
        "url" : "{{ shop.url }}{{ variant.url }}",
          {%- if variant.image -%}
            {%- assign variant_image_size = variant.image.width | append: 'x' -%}
            "image": "http:{{ variant.image.src | img_url: variant_image_size }}",
          {%- else -%}
            "image": "https:{{ product.featured_image.src | img_url: 'grande' }}",
          {%- endif -%}
          {%- if variant.title != 'Default Title' -%}
            "name" : {{ product.title | strip_html | json }} - {{ variant.title | strip_html | json }},
          {%- else -%}
            "name" : {{ product.title | strip_html | json }},
          {%- endif -%}
          {%- if variant.barcode.size == 12 -%}
            "gtin12": {{ variant.barcode }},
          {%- endif -%}
          {%- if variant.barcode.size == 13 -%}
            "gtin13": {{ variant.barcode }},
          {%- endif -%}
          {%- if variant.barcode.size == 14 -%}
            "gtin14": {{ variant.barcode }},
          {%- endif -%}
          {%- if variant.sku != blank -%}
            "sku": "{{ variant.sku }}",
          {%- else -%}
            "sku": "{{ variant.id }}",
          {%- endif -%}
          "seller": {
            "@type": "Organization",
            "name": "{{ shop.name }}"
          },
          "priceValidUntil": "{{ 'now' | date: '%s' | plus: 31536000 | date: '%Y-%m-%d' | uri_encode | replace:'+','%20' }}"
        }
        {%- if json_count < json_variant_count -%} {%- unless forloop.last -%},{%- endunless -%} {%- endif -%} {%- endif -%} {%- endfor -%} {%- if product.variants.size > 1 -%}]{%- endif -%}
      {%- endif %}
    },
    {
      "@context": "http://schema.org/",
      "@type": "BreadcrumbList",
      "itemListElement": [{
        "@type": "ListItem",
        "position": 1,
        "name": "Home",
        "item": "{{ url }}"
      },
      {%- if collection -%}
      {
        "@type": "ListItem",
        "position": 2,
        "name": {{ collection.title | strip_html | json }},
        "item": "{{ url }}/collections/{{ collection.handle }}"
      },
      {
        "@type": "ListItem",
        "position": 3,
        "name": {{ product.title | strip_html | json }},
        "item": "{{ canonical_url }}"
      }
      {%- else -%}
      {
        "@type": "ListItem",
        "position": 2,
        "name": {{ product.title | strip_html | json }},
        "item": "{{ canonical_url }}"
      }
      {%- endif -%}
      ]
    }
    {%- elsif template.name contains 'article' -%}
    {
      "@context": "http://schema.org/",
      "@type": "Article",
      "mainEntityOfPage": {
        "@type": "WebPage",
        "@id": "{{ canonical_url }}"
      },
      "name": "{{ article.title }}",
      {%- if article.excerpt != blank -%}
      "description": {{ article.excerpt | split: '[lang2]' | first |  strip_html | json }},
      {%- endif %}
      "articleBody": {{ article.content | strip_html | json }},
      {%- if article.image.src != blank -%}
      "image": {
        "@type": "ImageObject",
        "url": "{{ article.image.src | img_url: "1024x1024" | prepend: "https:" }}",
        "width": 1024,
        "height": 1024
      },
      {%- endif %}
      "author": {
        "@type": "Person",
        "name": "{{ article.author }}",
        "url": "{{ shop.url }}{{ blog.url }}"
      },
      "headline": {{ article.title | json }},
      "dateCreated": {{ article.created_at | date: '%Y-%m-%dT%H:%M:%SZ' | json }},
      "datePublished": {{ article.published_at | date: '%Y-%m-%dT%H:%M:%SZ' | json }},
      "dateModified": {{ article.updated_at | date: '%Y-%m-%dT%H:%M:%SZ' | json }},
      "publisher": {
        "@type": "Organization",
        "name": "{{ shop.name }}",
        "logo": {
          "@type": "ImageObject",
          "url": "{{ logo }}"
        }
      }
    },
    {
      "@context": "http://schema.org/",
      "@type": "BreadcrumbList",
      "itemListElement": [{
        "@type": "ListItem",
        "position": 1,
        "name": "Home",
        "item": "{{ url }}"
      },
      {
        "@type": "ListItem",
        "position": 2,
        "name": {{ article.title | strip_html | json }},
        "item": "{{ canonical_url }}"
      }]
    }
    {%- elsif template.name contains 'collection' -%}
    {
      "@context": "http://schema.org/",
      "@type": "CollectionPage",
      "name": {{ collection.title | strip_html | json }},
      "url": "{{ canonical_url }}",
      "description": {{ collection.description | strip_html | json }}
    },
    {
      "@context": "http://schema.org/",
      "@type": "BreadcrumbList",
      "itemListElement": [{
        "@type": "ListItem",
        "position": 1,
        "name": "Home",
        "item": "{{ url }}"
      },
      {
        "@type": "ListItem",
        "position": 2,
        "name": {{ collection.title | strip_html | json }},
        "item": "{{ canonical_url }}"
      }]
    }
    {%- endif -%}
    {%- if schema_templates contains template.name %}
    </script>
    {%- endif -%}
    1. Edit the first line to include the logo URL.
    2. Edit the second line for sameAs to include the company’s active social media links and Wikipedia if they have one. Include the full URLs. Separate the values with commas and no spaces.
    3. Add {% include 'schema' %} to the theme.liquid file just before the closing </head> tag.

    Once implemented:

    1. Go to “Themes” in the Shopify admin. Next to the theme created with the schema, preview the theme.
    2. View the source code of the homepage. Locate the logo URL by searching the source code for "logo":. View the logo URL to confirm the URL is accurate.
    3. Use the Rich Results Test tool on the five types of pages to review errors, warnings, and data gaps. Check for data gaps by for empty values in each line of schema reported in the tool. You need to preview the unpublished theme then copy the full source code of each page as a code snippet in the tool rather than validating by URL because Shopify’s robots.txt file blocks the Googlebot from fetching an unpublished page. The URL samples to check are:
      1. The homepage.
      2. The about page.
      3. A collection.
      4. A product page.
      5. A blog article (if it exists).
    4. Preview the five types of pages as a user to confirm they’re displaying as intended.
    5. Publish the theme.

    7. Structured Data: Product

    Product markup gives extra information about a product in results. The markup includes the brand, gtin, color, URL, and more.

    Use our code shared earlier in the guide to implement product markup.

    8. Structured Data: AggregateRating

    Review schema shows off product ratings in Google. The AggregateRating markup includes the name of the item, the number of reviews, the highest rating, and the average rating.

    Use our code shared earlier in the guide to implement AggregateRating markup. Galen Leather is an SEO client who we’ve implemented this structured data for. Here’s what one of their search results look like thanks to the markup:

    Product markup in Google with Digital Darts

    Shopify’s official review app automatically uses the correct schema. My favourite review app Judge.me also has Google rich snippets. If you implement our code, like I said earlier, there’s no need to remove duplicate markup from these apps.

    9. Structured Data: Offer

    Offer schema can display an “In Stock” message, price, and currency in search results. Such markup includes the price, currency, item condition, availability, and product URL.

    Use our code shared earlier in the guide to implement offer markup. See the section above on offer structured data for an example of the review markup in search results.

    10. Structured Data: Breadcrumb

    Breadcrumb schema in Shopify applies to collections, products, blogs, and articles. Attributes include position, name, and item.

    Search results may show a page URL that includes the “>” character because of the structured data, which gives a digestable format of the URL that can attract clicks:

    Breadcrumbs in Google with Digital Darts

    Use our code shared earlier in the guide to implement breadcrumb markup. Do not confuse having breadcrumbs with schema. The frontend existence of breadcrumbs does not mean there is structured data.

    11. Structured Data: Organization

    Organization schema is a strong search signal for Google to use the defined logo in the markup within search results. Attributes include the name, logo, URL, and description.

    Logo markup in Google

    Use our code shared earlier in the guide to implement organization markup.

    12. Structured Data: WebSite

    WebSite schema provides a search box powered by Google to internal pages from within search results. Attributes include URL and potentialAction that defines how to search the website:

    Pinterest WebSite markup for internal search results

    Use our code shared earlier in the guide to implement WebSite markup.

    13. Structured Data: Article

    Article schema can help Google understand more about an article. Better title text, images, and date information for the article is shown in search results on Google, Google News, or Google Assistant.

    Article rich result in Google

    Use our code shared earlier in the guide to implement article markup. The markup is unnecessary if you do not have a blog.

    14. Twitter Cards

    Twitter Cards give rich media experiences when your pages are tweeted to drive traffic to your website:

    Twitter card validator tool

    Tweets seem to impact SEO when the user has a large following. However, the influence social signals have on SEO is unclear. Beyond SEO, a richer experience generally help sales.

    Follow Shopify’s documentation to create Twitter Cards. You can try test the markup with Twitter’s Card Validator tool, but it hasn’t previewed for me in years. I suggest this preview tool instead. Refer to Twitter’s documentation on cards for more help.

    15. Facebook Open Graph Markup

    The Facebook Open Graph markup controls how a snippet is displayed when shared on the platform:

    Facebook Open Graph preview tool

    Facebook Open Graph like Twitter Cards don’t affect SEO in Google. They seem to have an impact on Facebook’s search results. An attractive summary gets more clicks. Some SEO specialists believe shared content is a precursor to backlinks, which does help SEO. One study found there is no correlation between shares and backlinks.

    I recommend Open Graph tags to satisfy the billions of Facebook users. Take every opportunity to snag a sale. GitHub user chrisjhoughton has a project to implement Facebook Open Graph on your store. If you want and need both Facebook Open Graph tags and Twitter cards, follow Shopify’s Open Graph tags tutorial. You will also find Facebook’s debugger tool helpful to get markup right. Refer to Facebook’s documentation on sharing for webmasters for more help.

    16. Heading Tags

    The <h1> tag is used to mark up a webpage title. It is often the largest and most distinguishable heading tag. Heading tags go from <h2> all the way to <h6>.

    Heading tags matter for Shopify SEO because they prioritize content. Words in a <h1> tag are more important than in a  <h6> when the tags are correctly used.

    An SEO audit will primarily look at all <h1> tags on a page, sometimes review <h2> tags, and confirm heading tags are in their intended hierarchical structure. A lot of stores mistake using the <h1> tag for a logo. What you want for heading tags on each page type:

    • Homepage: Primary keyword of the store.
    • Collections: Primary keywords of the collection above the fold.
    • Products: Name of the product rich with keywords.
    • Pages: Name of the page.
    • Articles: Title of the article rich with keywords.

    There are many ways to review the tags. My favorite method to inspect individual pages is to use Chrome’s developer tools:

    H1 tag on Shopify product page

    The best way to review heading tags in batch is the trusted Screaming Frog tool. I like the crazy amphibian because it provides a bulk measurement of what is missing, long (over 70 characters), or duplicate tags:

    H1 and H2 tags for SEO

    The quality of your heading tags may vary between the homepage, collections, products, pages, and blogs because each use different liquid templates in Shopify.

    17. Image Alt Text

    Alt text is the biggest SEO factor to appear in Google Image search so this is wise for Shopify stores to get right. Also known as “alternative text” of an image, it follows the HTML structure <img src="https://example.com/image.jpg" alt="This is the alt text" />. The alt text is seen by Google to understand the image, appears to the visitor when an image does not load, and is used by screen readers to describe an image to someone unable to see it.

    To audit alt text, view your Screaming Frog crawl. In the “Overview” panel on the right-side, see the images section:

    Screaming Frog crawl alt text

    Fix images that miss alt text, have alt text over 100 characters, or use non-descriptive alt text.

    View a sample of the actual text to ensure the text is readable, contains keywords, and describes the image. The alt text of internal images in Screaming Frog can be viewed by replicating this screenshot:

    How to view image alt text in Screaming Frog

    The second, and more important, section in Screaming Frog to review is external images because Shopify images are hosted on a CDN. Click the “External” tab at the top, select “Image” from the filter, then “Image Info” at the bottom:

    Alt text example in Shopify

    To see the data in bulk, all images are hosted on a CDN so click “Bulk Export” then “All Inlinks” and filter by the “IMG” type in a spreadsheet.

    Stores with a small SKU range can afford to manually update the alt text of images. Larger stores, or lazy folk, can use the Alt Text app to bulk optimise product images.

    18. Readability

    Readability refers to the ease content can be read. It is unknown if Google looks at the readability of text as an SEO factor though it makes sense as a way to measure engagement. If the text is too technical, people cannot understand it. If the text is beneath the reader’s level, they may scan it then quickly leave.

    Use a readability tool like Readability Formulas. Enter your homepage, a product page, then another important page of your website. Average out your Flesch Kincaid Reading Ease score. Aim between 60-80. If you sell electronic kits to engineers, it might be beneficial to have a score below 50.

    Readability Brickell

    Usability

    Search engines want a website to help users do what they want to do. A usable website is one the visitor can comfortably interact with to accomplish their desired goal. Usability is similar to accessibility, but with a focus on the common person’s experience on common equipment.

    1. Mobile Usability

    Mobile makes up 50-80% of traffic on our client Shopify stores. Basic mobile usability is an SEO factor because a store that’s hard-to-use on mobile is a bad user experience.

    Review the “Mobile Usability” report in Google Search Console. Begin mobile usability analysis here because issues most times arise from a template. Your homepage could be fine, while your product pages produce warnings from photographic thumbnails being too close. My City Plants has no mobile usability issues:

    Mobile usability report in Google Search Console

    Common issues for Shopify themes are “Clickable elements too close together” and “Content wider than screen”. If you find a problem, refer to Google’s documentation on mobile usability. Once you think the issues are fixed, check them by running the problematic pages through the mobile-friendly test. You get a live analysis using this tool without the wait for Googlebot to crawl then update the mobile usability report.

    Also use the PageSpeed Insights tool as it can give new suggestions for mobile usability.

    2. Page Speed

    The load time of your store is correlated with revenue per visitor. Research shows people love fast websites that give a great user experience. A fast store has a chance of being a usable store.

    Moreover with SEO, the time a page takes to load has been a ranking factor for over a decade. In 2021, Google defined this for web developers as the “largest contentful paint” which measures perceived load speed and marks the point in the page load timeline when the page’s main content has likely loaded.

    A second SEO factor of page speed is the interaction to next paint, which measures how long it takes for the visual rendering of your webpage to update after a user interacts with it.

    Both of these metrics are captured inside the “Core Web Vitals” report of Google Search Console:

    Core Web Vitals Google Search Console

    It’s helpful to distinguish speed improvements for better conversion rates and those for SEO. You can make many speed boosts, but they may not help SEO. Use the Core Web Vitals report to determine if speed improvements will help SEO.

    These are some low-cost tips for faster page speed in Shopify that everyone can follow:

    1. Resize images. Unoptimized images slow down a website because they take more bandwidth to load. You can manually resize images in picture editing tools or use apps that automatically compress images uploaded on your website. I’ve seen images with no compression be 30 times larger than the optimized version. See the size of all your images with Screaming Frog. It takes a little extra work because the images are hosted on a CDN. After your full scan, click “Bulk Export” then “All Inlinks” and filter by the “IMG” type in a spreadsheet. Copy the image file names into a .txt file. At the top select “List” from the “Mode” menu then “Start” the scan. You will get a summary of all size information. Filter the column and you may get images that standout in size like below, which is your low-hanging fruit to optimise:
    Image file size in Shopify
    1. Use liquid to load the right image size for the viewport to avoid an excessively large image on a mobile device.
    2. Choose image formats smaller in size. Use tools like Photoshop to test exporting the image in different formats. You will see size differences. An excellent example is JPEG, which takes up less memory compared to GIF or PNG for most images.
    3. Compress JavaScript and CSS. Minimize the files to eliminate whitespace, use shorter names for variables, and prevent code-waste with efficient practices.
    4. Conditionally load scripts. If a script is only used on the collections page, loading it on other pages adds an unnecessary resource. Make it conditional with code like:
    {%- if template contains 'collection' -%}
    <!-- Load script -->
    {%- endif -%}
    1. Delay the loading of non-critical scripts. If JavaScript is inserted inside the “head” tag, it may have to load before anything is seen in the browser. There are ways around this. Should a script be unnecessary for the loading of content above the fold, it may be non-critical and can be loaded before the closing “body” tag.
    2. Use resource hints wisely. Values include preload, preconnect, prefetch, and dns-prefetch. Use them in a <link> element to optimize the loading of resources. Do not overdo preloads. Here’s an example code of resource hints:
    <link rel="preload" href="{{ jquery.min.js | asset_url }}" as="script">
    <link rel="prefetch" href="{{ stylesheet.css | asset_url }}">
    <link rel="dns-prefetch" href="//cdn.shopify.com">
    <link rel="preconnect" href="//cdn.shopify.com">
    1. Limit the number of apps you have. Not all apps affect Shopify speed. When it comes to increasing your website speed, less is generally more. Check your apps in the admin to remove any that are unused. Some apps once uninstalled, leave files behind in your theme so review it for leftover code. The PageSpeed Insights tool has a section called “reduce the impact of third-party code” that can help you spot scripts from unused apps. If you discover apps that perform multiple functions, it’s best to use these instead of those that perform single functions since scripts may overlap. Eliminate apps to get the added benefit of saving money from unnecessary expenses.
    2. Simplification. Less content will always load faster than more. Don’t instantly resort to minimalism then destroy conversions. Start with a heatmap analysis of your homepage to find what elements are ignored. Many stores have a montage of a homepage filled with every type of content. If you have a list of the latest blog posts with images, chances are they can be cut.
    3. Developers can refer to Shopify’s best practices for fast themes. Shopify Plus also have a good guide to improve store speed.

    There is more speed improvements to make, but these have the most impact for most stores. What else you can do to speed up your store will vary based on the analysis. Use these tools to help the diagnosis of page speed issues:

    1. Pingdom’s FTP tool is an online version that provides a useful waterfall chart.
    2. GTmetrix is another tool to have on hand that helps you identify what affects time to first render and other bottlenecks that can be addressed to boost a page’s speed.
    3. Web developers love to use Chrome’s network and performance reports to view what is loaded and how long every element takes to load.
    Chrome network tool for speed performance

      3. Cumulative Layout Shift

      The cumulative layout shift measures visual stability by quantifying the amount of unexpected layout shift of seen page content. Google gives a funny example of someone about to cancel their order only for a textbox to appear that makes their tap complete the order.

      Review the “Core Web Vitals” report in Google Search Console for cumulative layout shifts.

      4. Navigation

      Navigation is the consistent structure at the top of a page. It is a sub-category of website architecture. Refer to the collections structure to learn how to scientifically build your navigation.

      The navigation is best refined from user research once good practices are ticked off. Do your keyword research taught in the website architecture section. Use visual styles to distinguish categories. Build links in HTML rather than jQuery to help crawling.

      5. Breadcrumbs

      A breadcrumb helps the user find a way to “retreat” their search through links that shows where they are on the website. This is different to breadcrumb structured data.

      Breadcrumbs boost SEO because they clarify website architecture, build internal link relevancy, provide related anchor text, and improve the user experience. If someone lands on a product page for booty shorts, but the shorts are not what they want, they can go back “one level” to view all shorts.

      My City Plants has breadcrumbs. In this example, I’ve navigated from the “Bright Light Plants” collection then clicked a product. There is a trail for me to return to the bright light plants collection or the homepage:

      Breadcrumb example on a product page in Shopify

      Here is a poor breadcrumb on athletic clothing store 21.15.Nine:

      Breadcrumbs 21.15.nine

      If you had a hard time spotting the breadcrumb, it is the “Back to Mens” text.

      Review a collection, tagged collection, product, blog, article, and page. Check breadcrumbs exist on each style of Shopify page. Should you need it, get a kickstart on the code to build a good breadcrumb from Shopify’s documentation, which creates a breadcrumb for all content types.

      6. Internal Links

      An internal link points to the same domain. They are an easy way to boost the SEO of a store since one link only requires one quick edit. The general rule in SEO forever has been to stay under 100 internal links per page.

      Select the homepage, and later a collections page, from your scan in Screaming Frog. On the left-side, view the figure under “SEO Elements” > “Internal” > “HTML”. Brickell have 68 on the homepage:

      Number of internal links

      You can also sort your scan by “Word Count” to see the pages with lots of text that provide link opportunities.

      A store should link between its pages when appropriate. If you mention your blue glow shorts on your long shorts page, “blue glow shorts” should be linked. Anytime there’s a new article, collection, or product, search the store for relevant keywords to add an internal link.

      For an SEO audit, manually browse the store for this step. Look at a few blog posts, product descriptions, and collections to see if the user would benefit if something written about were linked. Provide a few examples in your audit to demonstrate findings.

      7. Anchor Text

      The anchor text of a link is the clickable text of a link. Internal and external links rich with relevant keywords will help SEO.

      To review the anchor text of internal links, within Screaming Frog, go to “Bulk Export” > “Links” > “All Inlinks”.

      Filter the “Anchor” column to remove rows with no anchor text. You may want to remove all rows that have a destination URL containing /pages/ to cut through the mass header and footer links. Scroll through the anchor text to see what comes up. The biggest problem you are looking for is generic text like “click here”.

      If you want something more quantifiable and comprehensive, create a pivot table to cluster the frequency of anchor text then plot the data. Follow Joshua Titsworth’s tutorial to visualise internal link text.

      Like the previous section on internal links, the anchor text portion of the audit most often for Shopify stores is about educating the store owner, marketing manager, or content producer with guidelines to publish SEO optimal content.

      8. Image File Names

      The file name of an image is the last portion of the URL preceding a question mark when viewing an image. For the URL https://cdn.shopify.com/s/files/1/1025/1611/products/bird-of-paradise-classico-50-charcoal-01_5e8e2723-ec5f-4348-b1bd-fab6dbb79109_5000x.jpg?v=1652813012, the image file name is bird-of-paradise-classico-50-charcoal-01_5e8e2723-ec5f-4348-b1bd-fab6dbb79109_5000x.jpg.

      See the section in this Shopify SEO guide on image alt text to learn how to audit image names. Review internal and external images in Screaming Frog because the Shopify CDN gets images classified as external. An image file name should be descriptive of the image. You will find unoptimized image names.

      Shopify names an image from the image’s file name at the time of upload. If you were to upload the image below, the name should contain target keywords that reflect what people would search to find it, such as “Bird of Paradise Large Indoor Plant Classico 50 Charcoal Pot”:

      Shopify product image of bird of paradise plant

      9. Broken Links and Images

      Links and images that do not exist create a bad user experience to hurt SEO.

      Confirm your links and images are functional. The best way to do it in bulk is in Screaming Frog. Click on the “Response Codes” tab then sort by “Status Code” to identify 404 errors.

      404 errors in Shopify

      Click the “Inlinks” tab at the bottom to identify where to update the broken content:

      Locate the source of 404s in Shopify with Screaming Frog

      The most common reason I see for broken links is when a store migrates to Shopify and fails to redirect all URLs to the new platform. You need to map each old URL to the respective new URL with 301 redirects. Shopify allows you to bulk import and export redirects through a csv file.

      10. 404 Page

      The 404 page appears when someone visits a URL that does not exist. Shopify takes care of the technical aspect of using the appropriate 404 response code and not redirecting the user that I’ve seen other content management systems screw up.

      A well-designed 404 page can help SEO since it improves the user-experience. It may even become a backlink strategy as some people link to such pages as a design case study.

      Type your store’s address into a web browser with a non-existent address like mystore.com/errortest. What shows up?

      1. Does the page clearly tell you that what you’re looking for cannot be found?
      2. Does the page direct you to improve your search?

      Brickell’s 404 page can improve with search functionality, a suggestion to check the URL, and a request to contact the store if the person thinks the page should exist:

      404 Shopify example

      Digital Darts’ has a great 404 page for an effective example. I like my chubby panda.

      Digital Darts funny 404

      11. 3xx Redirect Minimisation

      In a perfect SEO world, every URL on your store produces a 200 response code. 301 and 302 response codes are not bad for SEO, but become questionable when a website is filled with them.

      Avoid 3xx response codes when possible by linking directly to the correct resource. See your Screaming Frog scan for internal and external URLs to update. Direct linking helps ever-so-slightly with speed and the user experience.

      Content

      Content is king. This sadly causes Shopify store owners to publish blogs with little methodology or purpose other than to “create content” that results in no growth.

      What makes good content for an online store? How does your content compare? This section of the SEO audit takes an analytical and conceptual approach to the content factors that drive organic search in ecommerce so you know exactly if you have a peasant or dynasty king.

      1. Keywords

      Use keywords in content if you want them to be found in Google when someone searches such words. Pages, products, articles, and videos are all types of content.

      Good keyword optimisation does not begin with tools or a density of 2.5%. That is so 2010. Look at the page you are optimising then ask yourself:

      If someone were to discover only this page on the Internet then walk away happy, what would they look for?

      Visit a few pages to see if and how, such pages contain these words. In your Screaming Frog scan, review the titles and meta descriptions of a few sample pages.

      Brickell do a moderate job of using keywords in the title tags and meta description:

      Keywords in Shopify

      Your goal is to include relevant keywords in the title tag, h1 and other heading tags, image file names, image alt text, and sprinkled throughout the content.

      Keywords can be overused. They should be relevant to the subject and readable to the average visitor.

      For more help with deciding what words to optimise for, competitor research, and volume analysis, refer to my tutorial on search query analysis.

      2. Title Tags

      Title tags are one of the biggest on-page influencers of SEO. A title tag sits between the <header> tags of a webpage like so:

      <header>
      <title>Your title is here</title>
      <meta name="description" content="Your description is here" />
      </header>

      The title tag shapes the large blue text you see in Google:

      SERP example of title tag and meta description

      Google designed snippets to highlight content of a page that relates to a user’s search query. In order to do this, a snippet can vary with different searches for a single page. Structured data and the content of a page are other sources of data Google uses to shape the blue text of a search snippet.

      You can minimize unwanted edits by Google in search results and optimize your SEO with a perfect title tag. Make it:

      1. Contain your keywords from a search query analysis and keyword research.
      2. Between 55-60 characters. Sometimes you can get away with 35-60 characters. Too few and you miss opportunities. Too many and Google edits the title.
      3. Understandable. You’re not writing for Google alone. There’s people to help.
      4. Presents the answer to the person’s search query.
      5. Matches the content on the page. This should happen when the title contains your keywords.
      6. Unique to other pages on your website.
      7. Attractive or interesting in some way to make people want to click. Interesting is often ticked off when other steps are done.

      How do most titles compare to these seven guidelines? Make note from your manual look at what needs improvement. Also refer to the “Overview” > “Page Titles” of your scan for a summary of length and duplicate issues:

      Brickell SEO title tag issues

      3. Meta Descriptions

      A meta description is often the black text you see in Google:

      SERP example of title tag and meta description

      The actual meta description is in the source code of your page and can be different to the search snippet if Google thinks it can deliver something better to the user.

      A meta description is said to have no direct affect on SEO, though it influences if someone wants to click-through to the page. The frequency someone clicks through to a page relative to its position in search results is an SEO factor. The meta description is also important because you want to sell visitors on coming to your store.

      Most stores can improve their meta descriptions because there are many pages to optimise. The same principles of a good title tag apply to meta descriptions except the length can be between 145-160 characters.

      Identify the lowest hanging fruit by visiting Search Console to see what pages rank high and have a low click-through rate. A Screaming Frog overview also summarises length and duplicate issues:

      Meta description Screaming Frog

      Refer to my Shopify guide to write hot meta descriptions.

      4. Meta Keywords

      Here’s an example of the meta keywords tag:

      <meta name="keywords" content="keyword 1, keyword 2" />

      Avoid meta keywords. They have no positive effect on SEO.

      Review the meta keywords overview in your scan or filter your scan by “Meta Keyword 1” to check the tactic is not used:

      Meta keyword Screaming Frog

      5. URL Handles

      URL handles are a source of content Google looks at to rank a webpage. A good URL handle contains the primary keywords you want the page to rank for. The improvement in URLs for Shopify stores usually come from:

      1. Search query analysis. Refer to Google Search Console to see what terms the page ranks for and determine how the URL handled can be fine-tuned with this information. Words can sometimes be removed from the URL handle if there are no search queries containing the words. On the flip-side, a word can be added to the URL handle if it is in a lot of search queries the page is ranking for.
      2. Better product names based on search query analysis, which alone helps SEO and can be carried over to more descriptive URLs.
      3. Adjusting targeted keywords from a comparison of what is done, to what could be. You discover this by keyword research, reviewing the top 3 competitors for major factors revealed in this guide, and using Google Trends.
      4. Removing stop words like “to”, “and”, and “of”. Stop words dilute keywords in URL handles.
      5. Multi-lingual stores on Shopify Markets can use the Translate & Adapt app to modify URL handles into the native language.

      Each of these improvements are done with the everyday person in mind as you make the URL readable and understandable to them. A keyword stuffed URL of /products/bop-plant-bright-light-fod-easy is unfriendly.

      Brickell have done a good job with URLs. Like every store, there’s always room for improvement. Looking at the page, /collections/barrons-collection/products/shave-cream, I did some keyword research and see “men’s shaving cream” is a better target. I wonder if it’s better to go for “shave” or “shaving”. Google Trends has the answer:

      Google trends to determine keyword targeting of mens shaving cream

      The product name from an SEO perspective is best changed to “Shaving” as opposed to “Shave”. The URL could be /collections/barrons-collection/products/mens-shaving-cream. It is a natural, aloe vera product so the last part of the URL could be /mens-natural-aloe-vera-shaving-cream. Notice how it is readable and not spammy like /mens-natural-shave-cream-aloe-vera-shaving-cream-for-men.

      6. Product Content

      Is there enough unique, valuable content for a visitor to make a purchase decision? You want to provide all the important details of a product to firstly get the sale, but preceding that, to help SEO by keeping someone on the website. Two measurements of product content for SEO are the keywords in the content and the time someone spends on a page before returning to search results.

      Here is my SEO checklist for product content. If your store ever gets manually reviewed by Google, their review team look at these factors to see how useful your store is to people:

      1. Uniqueness of product descriptions. Duplicate product descriptions happen in stores whose products are sold by others online. Copy-and-paste a snippet of the product description into Google to see what comes up. Copyscape is another way to identify websites with the same content. The tool also lets you see if a competitor plagiarised parts of a product description you wrote. In a perfect SEO world you want a description used by no one else.
      2. Quality of product descriptions. Trash can be unique so you have to check for quality. See my short guide to write excellent product descriptions that sell. In terms of length, I recommend 150 words minimum for all products. The more the better. I rarely see product descriptions too long. The only mistake with long form content is poorly written, gibberish that bores people.
      3. Product images. The photos should be clear, provide multiple angles, and be unique which you can check with a reverse image search. To do photography right, see my guide on product photos.
      4. Supplementary content. You will increase organic traffic and conversions with content beyond a product description and photo. This can be done in ecommerce by providing specifications, video, product use and care guidelines, delivery and shipping information, and reviews. All these types of information accumulate to increase visitors.

      7. Collections Content

      The content of collections is always a way to boost the SEO of collections. Do the collections have unique content or do they only display products? Does the content sell the benefits of the products, address a shopper’s concerns, and contain internal links? Review a sample of collections for relevant text at the top and bottom:

      Collections SEO Shopify example

      Best practices for collection descriptions are:

      1. Confirm to the shopper the benefits of the products in the collection.
      2. Address doubts or concerns about the products.
      3. Affirm why the shopper is at the best place to purchase from you.
      4. Link to other relevant collection pages within the collection description or as a list of links.
      5. Link to useful articles on the website related to the collection page.
      6. Keep it to 200 words or less.
      7. Do not create content for the sake of it, like sharing an in-depth history of products or the company, unless it’s helpful and related.

      Algorithms sometimes get confused when they have a list of products on top and essentially a giant article on the bottom. The algorithms have to figure out whether the intent of the page is commercial or informational. These best practices keep a strong commercial intent in collections.

      Collections content rank well in the “People Also Ask” feature of search results. Our SEO manager Matt has written about a detailed guide about how to rank for these featured snippets. This is a very effective method we’ve used to hack top rankings for Shopify clients.

      People also ask from FAQ markup

      Collections content can be split into two—one above product listings and another below. This helps usability and conversions by not burying products below content.

      To have a top and bottom layer of content around product listings, search for all instances of {{ collection.description }} within your theme. Use the Liquify – Shopify Enhanced Code Search/Editor Chrome extension to find the code.

      If the current collections content appears above product listings, you’ll replace the instances of {{ collection.description }} with:

      {{ collection.description | split: '<!-- split -->' | first }}

      Locate where you’d like the second part of the description then insert:

      {{ collection.description | split: '<!-- split -->' | last }}

      Then in your collection description, add <!-- split --> in the HTML view to designate where you want to separate the content.

      8. About Page

      An about page is one trust signal Google uses to judge the quality of your store. The page should never be a couple of sentences or dribble. You help SEO and conversions with a good about page.

      What makes a good ecommerce about page? Tell your story using dialog, names, times, and other specific details to bring the story to life. Give a personal anecdote related to the reason the visitor is interested in your products. Share your passion as though you were talking face-to-face to the person reading. Use video. Reveal your team members. Provide contact information.Shopify Conversion Rate Optimization

      My City Plants has a well-written about page:

      There are a good conversion elements included like a video of a founder that persuades someone to shop with My City Plants, a summary of five points why someone should buy or work with them, and contact information. The only SEO improvement I suggest is to use the company name in the main h1 tag, replacing “About Us” with “About My City Plants”, to attract branded searches. The about page always aligns well with branded queries. When the page also sells the brand, someone seeing it will be more likely to buy.

      9. Contact Page

      Google’s official “Search Quality Rating Program” guides reviewers with what to look for when judging a quality website. (The document is massive so don’t freak out. This audit addresses all the SEO factors in their program that you need to worry about.)

      The contact page is one trust factor Google considers to see if the store is a real company. It is a simple SEO element to review. The guidelines describe a store selling Nike Air Jordan shoes that is low in trust:

      Inaccurate information about shipping and returns, deceptive use of logos and no information about who is responsible make this shopping site appear potentially fraudulent and untrustworthy. This page is selling Nike Air Jordan shoes. However, there is inadequate contact information on the contact us page for a merchant site.

      What contact details could you include that are not listed? Good details on the contact page include the company address, Google Map of the company address, registered company name, photo of the building, email address to contact support, support phone number, support help desk, live chat hours, link to FAQs, and the good ole contact form.

      10. Shipping and Returns Page

      The shipping and returns pages are another trust signal Google looks for in an ecommerce store. Your store is considered more trustworthy in Google’s eyes when it has clear shipping and return policies plus directions. Your visitors want a good, transparent shopping experience.

      A store can have one dedicated shipping page and one returns page. I suggest splitting the two up from a marketing perspective because they serve different audiences. It also allows you to have clear FAQs that cover each topic in-depth.

      Brickell have no clear shipping or returns page. It’s not as bad as it sounds because they have a free shipping proposition in the header for US orders over $50, and after digging around I see the topic is addressed in the FAQ page. Is this satisfactory for SEO? It could be, but it could fall short. If you have a good shipping and returns policy, make it clear. You will encourage more people to buy.

      11. Articles

      Ah, content and SEO. It could only be complete with a discussion on blogging.

      A blog can be used for anything—and it unfortunately is. Blogs are a great platform to share stories, photos, personal experiences on your products, news, and bad writing. A good ecommerce SEO blog is vastly different to one that announces new products.

      The most common SEO mistake in blogging is publishing a 500-word piece by a writer that gives no value a reader couldn’t get from somewhere else. Soon enough you become discouraged then stop publishing because Google will not send traffic to such content.

      You need a clear purpose in every blog post so you can have objectives to meet those goals. The best type of ecommerce blogging for SEO has a blog built into an evergreen content hub with useful guides, statistics that are updated, and other content that remains accurate. Websites will link to your articles when you provide information that is better than anything else published.

      Your goal when covering a topic should be to answer the topic’s questions and problems twice as good as any other website. When you publish a guide, you are comforted in having built an asset that, with little maintenance, will last a lifetime. The large cost upfront pays off overtime. This mindset gets you off the hamster wheel of publishing junk to meet weekly goals.

      Each content piece should address a narrow topic in detail to be linked from a “hub” so it is organized for people. The Related Blog Posts Pro app is another good to suggest other articles of yours to help the linking of them. Portent describe this objective of the content hub. Brickell is one of few stores that have followed this content advice. They have a grooming manual, search function, list of links in the sidebar to direct people with what they should read, and their main call-to-action of a free sample.

      Ecommerce content marketing The Grooming Manual

      BACtrack and Kettle & Fire are two other examples of Shopify stores doing content well.

      I cannot emphasise enough that if you want your content to rank high in Google, it must be better than anything else published. Headings, lists, videos, useful pictures, quotes, research, links to articles, and other supplementary content make an article more valuable. A lot of time and resources can be placed in awesome content to grow the business.

      Links in the eyes of search engines are like political votes. A store with more votes has greater chance at improved ranking. Not all links are equal like political votes in Australian rural communities count more than urban votes. Some links even hurt SEO.

      1. Authority

      The US President has more authority in the US political system than you or I. This gives The President greater influence on the country. The same is true with links. A link from an authoritative website like Wikipedia or Forbes is more powerful at affecting SEO than a link from a WordPress blog created by a teenager last month.

      While we don’t know what a search engine considers to be an authoritative website, Google asks questions that indicate what is in a quality website:

      • Would you trust the information presented in this article?
      • Is this article written by an expert or enthusiast who knows the topic well, or is it more shallow in nature?
      • Would you be comfortable giving your credit card information to this site?
      • Is the site a recognized authority on its topic?
      • Would you recognize this site as an authoritative source when mentioned by name?
      • Would you expect to see this article in a printed magazine, encyclopedia or book?
      • Are the pages produced with great care and attention to detail vs. less attention to detail?

      We need a quantitative method of measuring authority to benchmark and audit a store’s SEO. The industry standard and simplest measurement is ahref’s Domain Rating metric. The metric “runs on a scale from zero to a hundred. The higher a website’s Domain Rating (DR), the stronger and more authoritative it is… Domain Rating looks at the quantity and quality of external backlinks to a website.”

      The metric can be used to assess the value of link opportunities. Most SEO experts would advise paying more for a sponsorship opportunity on a 90 DR domain compared to a 30 DR domain.

      However, for this part of the SEO guide, you will use with the DR metric with the next section of total links, to see how much more authority you will need through links to rank in the first position for your biggest keyword. Enter you domain in the ahrefs Website Authority Checker to see your domain’s authority.

      ahrefs domain rating

      Next, if you’re in the region of your market, set your IP address with a VPN like Avast SecureLine, then search the dream keyword you want to rank for in Google. For Brickell, it could be “men’s skin care”. For My City Plants, “new york plants” or “buy plants” with a New York IP address. Enter the homepage of the top three ranking websites in the authority checking tool.

      If you have a paid ahrefs subscription, use the batch analysis tool to easily assess domains in bulk. You need this to do a full backlink audit of the store and competitors to know how long it may take to rank in the top position for your top keywords. Here’s the data for My City Plants and their three top ranking competitors:

      mycityplants.com www.plantshed.com www.thesill.com greenerynyc.com
      Domain Rating 33 48 75 54

      Unless the store ranks at the top in Google, expect DR to be less than top competitors. A lower authority is one signal the store needs more quality external links to compete in rankings. Any DR metric over 60 shows a big player. A DR over 80 is very hard to beat without a large, long-term investment in SEO. Keep the ahrefs data open to do further analysis.

      2. Total Links

      The total links to a domain is one measure of authority that shapes the domain rating, plus it can indicate how far a store’s SEO is from competition.

      In the batch analysis tool of ahrefs, look at “Backlinks”:

      Domain comparison in ahrefs

      The tool explains that backlinks show “The total number of links from other websites pointing to your target”.

      mycityplants.com www.plantshed.com www.thesill.com greenerynyc.com
      Backlinks 247,510 8,491 82,264 19,150

      My City Plants has a large number of backlinks. I’d expect a large number to equate to a higher domain rating, but it doesn’t, which means they either have links from low quality domains or a lot of links on fewer domains. If you see massive number of backlinks, which happens a lot for known brands like Esquire, Sephora, and Kiehls in the men’s skin care market, competition is stiff.

      Before hope is lost, you need to see how many websites make up these backlinks. Sometimes established brands have a bloated number of backlinks from a network of websites.

      3. Links from Unique Domains

      With all SEO aspects of a domain like authority and trust being equal, two links from the same website is thought to be less valuable than a link from two websites. Multiple links from the same website is still useful, but the same number of links from more websites gives you more votes to win the SEO election. Also, links from unique domains give insight into the health of a website’s link profile.

      Look at the “Ref Domains” metric in ahrefs. The metric shows the total number of individual websites linking to a target domain:

      mycityplants.com www.plantshed.com www.thesill.com greenerynyc.com
      Ref Domains 505 1,611 6,965 640

      My suspicion with My City Plants was true. While they have a lot of backlinks, they lack a large number of referring domains, which means they have a lot of backlinks on single domains.

      The referring domains and the domain rating metric are the clearest ways to measure the size of your competition in SEO. While it’s not as simple as saying, “My City Plants should get 7,000 referring domains to rank number one”, the measurement is another source for the work required to dominate Google organic search. For example, The Sill serves multiple regions beyond New York so it’s reasonable to expect them to have more backlinks and not necessarily be ahead in the SEO game. Furthermore, a business that’s been around longer will have more referring domains that have less value overtime.

      You don’t have to dominate everyone in SEO to benefit. I’ve repeatedly seen how a few high-quality backlinks within one month can boost the whole store in search results as you gain traffic from long-tail queries. You will see position data of search queries in Google Search Console, or the 1-100 keyword rankings in ahrefs, get a little spike. This incremental increase is realistic unlike a sudden appearance in top position.

      4. Ease of Link Replication

      Over the years I’ve found one rapid way to measure backlink quality: ask yourself, “Who can get this link?” If anyone can get a link for no money or time, the link maybe low-quality. You will generally find the harder a link is to acquire, the more power it has for SEO because the domain has a higher domain rating.

      Links that are easy to acquire are not bad, but they should be acquired with caution. Furthermore, easy-to-acquire links are weaker in retaining a competitive SEO advantage since agencies like us will be looking for easy-wins for clients with paid tools to duplicate from your link profile.

      Manually review a sample of backlinks from Moz’s Link Explorer or ahref’s Backlink Checker to judge if another website could easily get a similar link.

      Backlink checker tool on ahrefs

      We have an agency account at Ahrefs and love to use it for backlink analysis. Links from a forum post, blog comment, social bookmarks, or directory submission are all sources that can be easily duplicated. My City Plants have good mentions on websites that would take effort to duplicate:

      1. https://www.bobvila.com/slideshow/10-huge-houseplants-that-make-a-statement-52621
      2. https://www.backyardpests.com/how-to-stop-ants-from-nesting-in-plant-pots/
      3. https://nymag.com/strategist/article/best-gifts-for-doctors-and-medical-professionals.html
      4. https://www.shopify.com/enterprise/10-examples-of-outstanding-omnichannel-brands

      5. Geo-location of Links

      The geo-location analysis of links is most helpful for a store penalised by Google. A store should have most of its links from websites in the regions it delivers to. It makes sense for an American, compared to an Australian, blogger or media outlet to write about a product that only ships to the USA. With that said, links from another country are fine since the IP address of the server is not an accurate measurement of locale content.

      The first goal is to spot disproportionate clusters from unexpected locations. Majestic has a great map feature insightful for ecommerce stores who deliver their products to a domestic market. The tool lets you visualise the geo-location of websites that link to the store. The US-focus for Brickell and its slight International spread is good:

      Geolocation source of backlinks

      The second goal to consider in geo-location analysis is the IP blocks of backlinks to check if unusual chunks come from the same servers. Private blog networks (PBNs), which violate Google’s guidelines, commonly have the same IP blocks.

      Ahrefs is a great tool for IP block analysis. You can dig into the report to investigate backlinks on an IP block then determine your next step.

      Referring IPs of backlinks in ahrefs

      6. Inbound Anchor Text Diversity

      Anchor text is the visible, clickable text you see on a link. From the following two link profiles, what looks unnatural to you? 50 links to a store saying “nike shoes” or 50 links with mixed text containing the store’s name, “nike shoes”, “size 15 shoes by nike”, “these bad boys”, and other variations?

      Natural inbound links have diverse anchor text. Even so, targeted keywords in anchor text help link building campaigns. The anchor text needs to be comprised of the brand’s name, URLs, and text variations otherwise a store is at risky of penalty from unnatural link building.

      To see the anchor text of links to a website, there are several tools you can use. In Moz’s Link Explorer, click “Anchor Text” from the navigation. Use the dropdown to select the scope of your search and see data for a root domain, subdomain, or exact page.

      In ahrefs, click “Anchors” beneath the “Backlink profile” category to get your report. Review the top 10 anchor text terms for the store. If your store has approximately 200 or more referring root domains, also review the top 20-50 anchor text terms.

      Anchor text report in ahrefs

      In ahrefs, I filter anchor text that contains “City” for the brand “My City Plants” to ballpark the number of backlinks with branded text. Then you can swap the filter to “does not contain” to see unbranded anchor text. If you want to take the analysis further, you can manually break down the unbranded report into keywords, none (like images), URLs, and generic (like “click here”.)  The data can be exported into a Google sheet so you can compile a pie chart for a visual of the anchor text distribution.

      Check no single type of anchor text or unbranded words dominate the store’s backlink profile. A good rule of thumb is to use 70% branded text. Spammers frequently go for the reverse of 70-100% keywords in anchor text. Google wants you to build a real brand rather than an unknown entity.

      When building links where you have control over the anchor text, mix up the context of the link. The same anchor text in the same paragraph has less value. Secondly, make the link and anchor text relevant. The anchor text should provide a short summary of what someone can expect on the page when clicking through.

      7. Paid Links

      Google says paid links do not manipulate rankings. Their link spam policies condemn exchanging money or products for links. I think most SEO experts find paid links have helped SEO.

      Be cautious of paying for links. If Google judges a paid link to violate their guidelines, they will submit a manual action for your domain in Google Search Console.

      When you do sponsorships, partnerships, or paid links, Google wants rel="nofollow" or rel="sponsored" added to the <a> tag of the link, much like some newspapers legally have to mention an ad is an “advertisement”. Very few marketers actually do this for paid links since it devalues the link and Google doesn’t know whether money exchanged hands.

      8. Spam Analysis

      Spam analysis of backlinks is an important step of an SEO audit for a penalised store. After doing the health diagnostics in this Shopify SEO guide, if you suspect your website received a Google penalty, you will greatly benefit from working with an SEO expert.

      There are many great tools like Monitor Backlinks, Cognitive SEO, Ahref’s Site Explorer and Moz’s spam analysis that analyse how likely a link is to hurt SEO. Test several tools then select one or two you find helpful. Total backlinks for a website that are less than one hundred can easily be manually reviewed.

      It is okay to see low-quality links from automated websites. There is a lot of junk on the internet that we have no idea about, which the Googlebot sees every second, so don’t freak out that Google will punish you.

      If the store has clearly suffered from a penalty and no SEO is working, nothing can replace manual investigation. Manually go through every link by visiting the page to identify risks. Sometimes a website that has been penalised, which links to yours, can result in a minor penalty. Request the webmaster to remove the spam links and disavow links you know are bad. The disavow tool is for those wise in SEO to deal with unnatural links. Use the disavow tool with caution.

      Disavow tool

      Value

      SEO is a short-term game if the store does not help people. Why should Google refer people to your store if another 100 stores sell the same gear at a cheaper price and provide more information about the products? That’s why a lot of dropshipping stores fail. Value can be measured then built into a store to improve SEO and competitive position in the market.

      1. Engagement

      What better way to tell if a website answered a person’s search query than to track if the person stopped searching or took a long-time to return to search results. Google are hush-hush about engagement as an SEO factor. The importance of engagement is clear when you think about it from a standpoint of user experience, which Google has always promoted: the goal of search is to give people what they want.

      Arthur Andreyev at SEO PowerSuite has the best article on what engagement factors influence SEO. He shares a patent by Google to prove clicks and time on site affect SEO. There’s also a test done through Twitter that manipulated engagement to take a page from ranking fourth to first.

      The simplest measurement for engagement is to look at your average session duration then consider the intent of the page. There are too many factors to say your average session duration should be “5 minutes”.

      You can create a custom Google Analytics report that looks at how engaging each page of the store is to people arriving from organic search. Pages with a low engagement rate and low average-time on page are candidates for improvement. You can run a survey on these pages, targeting people coming from organic search, to ask people what they searched for and what information is missing on the page.

      2. Quality of Business

      It is easier to rank great products in Google that people search for yet can’t find anywhere else. The need of a market is met with low competition. Compare that to a product like printed t-shirts sold by tens of thousands of websites.

      A business can only thrive with good products or services. Businesses with an awesome product that solve a problem people are searching for makes SEO easier. Initial traction can get a good product in the hands of people who socially share the product, produce citations, and get the attention of press who then create quality backlinks. For help with making awesome ecommerce products, I’ve got a YouTube video teaching the product creation formula that makes products sell like crazy.

      Let’s finish the Shopify SEO guide by answering three questions:

      1. How much effort would it take for a competitor to mimic product offering? If you dropship products that can be sold by emailing one warehouse, your business model is weak. A low barrier-to-entry equates to a high-quantity of competition in Google and the consumer’s mind. Backlinks from public relations and competitive position in the marketplace, is more favorable if you manufacture products.
      2. What do customers say about the products or business? Do customers write rave reviews, feel “meh” about their purchase, or leave a residue of hatred? Read customer reviews on the store and Google search the brand name. Your reputation online is a ranking factor.
      3. How do the products compare to competitors in value? This can be hard to honestly answer. Depend on customers in the market to tell you the truth.

      Invest in a product people love to construct the foundation of good business. You will see your search rankings—and business—soar!

      Where to Next?

      I hope you’ve enjoyed my expert guide of Shopify SEO tips. This has taken hundreds of hours to produce and maintain over the years to keep it up-to-date.

      As for next steps, firstly download the checklist:

      Get The Free Shopify SEO Checklist

      I’ve turned The Shopify SEO Expert Guide into a simple checklist for you to keep on hand. You can print it out. It is free and looks pretty so you should download it!

      Once you complete the audit, create an action plan based on the believed SEO potential and ease of change, for all the points discovered in the audit. There are no hard rules for categorisation. Do your best with what was taught in the guide. Immediately work on the biggest problems or opportunities for the quickest results. The plan will guide you through the year ahead.

      Get Shopify SEO Help

      We are a Shopify Marketing Expert as you’ve seen from this guide. Start ups, stores migrating to Shopify, and large Shopify Plus stores rely on our Shopify SEO knowledge to grow their sales. Get in contact to discuss how you can get more organic traffic from Google.

      Liked this article? Get more free Shopify guides:

      You Might Also Like Learning:

      29 Comments. Leave new

      • Joshua,

        This is a beast of guide with many valuable points. I appreciate the mention!

        Reply
      • Avatar for Steve Black
        Steve Black
        June 8, 2016 4:36 am

        Hey Joshua, amazing article! Thanks for putting it together.

        One quick question though, are collection + tag pages indexible? I found this article (https://help.shopify.com/themes/customization/collections/filtering-a-collection-with-multiple-tag-drop-down), which allows the application of multiple tags to a collection. The result is urls like this from the demo they provided: satterfield-pfeffer5655.myshopify.com/collections/mugs/shopify+less-than-50+white. Mugs is the collection and the tags are separated by plus signs. So I’m wondering if each of the urls with one or more tags are indexible? IE. these individual urls:
        pfeffer5655.myshopify.com/collections/mugs/shopify
        pfeffer5655.myshopify.com/collections/mugs/shopify+less-than-50
        pfeffer5655.myshopify.com/collections/mugs/shopify+less-than-50+white

        I’m helping a friend with a website with a large number of products. I’ve done the keyword research and we want to have a many indexible category pages,. I’m trying to figure out if we should accomplish this with just a huge number of collection pages, or a handful of high level collection pages and long tail collection + tag pages. And then to avoid duplicate content and super thin pages, every page that has 2 or more tags would have a rel canonical tag pointing back to the collection + product indexed page.

        Reply
      • The point you made about creating quality social media content to get it shared and in the hands of the people who can boost the brand recognition is well noted!

        Great Work Joshua

        Reply
      • Hi,

        The link to download the guide is not working.

        Ravindra

        Reply
      • Hi Joshua,

        I have an adult online shop and use Shopify. I have more than 2 thousand products but Google shows only 32 indexed pages, do you have an idea why?
        I suspect that it is something to do with URL Parameters, google identified
        parameter page = 213 – – with settings Let Googlebot decide
        collections/all?page=1
        collections/all?page=2
        collections/all?page=3
        collections/all?page=5
        collections/all?page=7
        collections/all?page=8
        collections/all?page=9
        collections/apparel?page=10

        I think the problem sits in collections/all as it should not be indexed as I have products sitting in various collections and don’t need to use collections/all as a duplication. Do you think I should exclude this url?

        I would appreciate any form of help.

        Regards,
        Nikolai

        Reply
      • Hi, you say that every store should use Semantic Markup for Products. When I search the shopify support documentation, there is nothing that explains how to do this in shopify. There was also a post in the forums that said Shopify does not have static pages, so you cannot go into a product page, and add code specific to that product to that page—> https://ecommerce.shopify.com/c/ecommerce-design/t/where-do-i-add-structured-data-markup-161349
        Can you explain this?

        Reply
        • Sorry for the late reply Michael. Only just saw your comment. Semantic markup for products is usually added inside the product.liquid template file. Static files are not used in any template system like WordPress because they are inferior and not required. I have added a sample of the schema markup in liquid code to this post.

          Reply
      • I have to say, this has helped me out so much! I’m new to SEO and this guide was easy to understand and follow along! Can not thank you enough man 🙂

        Reply
      • Is the default blog folder structure used by shopify need to be change and how? Im using mystore.com/blogs/blog/xxxx

        Reply
      • Excellent Shopify SEO guide!

        Reply
      • My partner and I stumbled over here from a different web address and thought I might check things out.
        I like what I see so now i am following you. Look forward to finding out about
        your web page for a second time.

        Reply
      • Optimal Shopify Guide and brilliant tips for Newbie.

        I got one good point while reading the guide and it was “Screaming Frog SEO Spider”; many website owners neglect to use or not aware of it.

        I request all the readers to use for at least once; you will be a regular user of it.

        The features and easy to use behavior are helpful to find the number of urls of a website within just few minutes along with title, meta description, Header tags, Image optimization and many more.

        Thanks for mentioning this tool in post.

        Overall, I loved the way of explanation and each point is valid and helpful for the Shopify store owner.

        Thanks,
        Pankaj

        Reply
      • Hi Josh,
        About URL extensions:
        If your collection is called “mattress toppers” is it SEO friendly to add the keyword “latex mattress toppers” in the product url extension. This way the keyword “mattress toppers” will be duplicated in the final URL. Your thoughts?

        Reply
        • I would try to integrate it in with the product name. That way it appears in the product URL, but also naturally in images, likely h1 tags, and likely as anchor text in inbound links from other websites.

          Reply
      • Just awesome and really helped answer some questions I couldn’t find anywhere else, especially about the Collections structure!

        Reply
      • Avatar for Joshua Stack
        Joshua Stack
        July 3, 2018 3:01 am

        Is there a recommendation on whether or not to use an H1 tag on the homepage for ecommerce and whether or not it should contain branded or unbranded wording?

        Reply
        • If it’s your own brand Josh, it is likely unnecessary given it may add unnecessary wording to the page for something you’re already ranking number one on. If you sell only one brand that isn’t your brand like say, Nike, I would.

          Reply
      • Avatar for SEO Corporation
        SEO Corporation
        October 26, 2018 7:59 am

        Hello guys,
        I want to edit my robots.txt file in Shopify but i unable to change the robots.txt so please can you suggest us how to change..

        Reply
      • Hey Joshua, Shopify support actually linked me to this article. Is there an SEO benefit to incorporating Shopify into a site built on a self-hosted WordPress website over building directly on Shopify’s native platform?

        Reply
        • Hi Eric. Depends what you mean by “incorporating Shopify”. If you mean using a sub-domain for Shopify while everything else on WordPress is on another domain, that is not ideal for SEO because link value and domain authority is not equal between sub-domains compared to a single domain.

          Reply
      • This blog post on Shopify SEO is a valuable resource for e-commerce businesses looking to optimize their online stores. It provides clear and actionable tips to improve search engine rankings and drive organic traffic.

        Reply
      • Your Shopify SEO Expert Guide is an absolute game-changer for Shopify store owners and digital marketers! The depth and breadth of information you’ve provided, including over 101 updated tips, make this guide an invaluable resource for anyone looking to optimize their Shopify store for search engines and maximize their online visibility. From on-page SEO techniques to keyword research strategies and technical optimization tips, your guide covers every aspect of Shopify SEO comprehensively. What’s more, the fact that it’s updated for 2024 ensures that readers are getting the latest and most relevant information to stay ahead in the ever-evolving world of SEO. Thank you for sharing such a comprehensive and actionable resource that empowers Shopify store owners to succeed in the competitive e-commerce landscape!

        Reply

      Leave a Reply

      Your email address will not be published. Required fields are marked *

      Fill out this field
      Fill out this field
      Please enter a valid email address.

      This site uses Akismet to reduce spam. Learn how your comment data is processed.