Why Shopify blog posts underperform in search

Shopify's built-in blog section is technically functional but structurally weak for SEO. The default setup creates blog posts at /blogs/news/post-title — a URL structure that buries posts under a double subfolder. There is no native tag or category URL that functions as a proper hub page. Blog posts are typically isolated from product and collection pages, receiving neither internal links from commercial pages nor passing equity back to them. Most Shopify blog posts are written to fill a content calendar rather than to rank for specific queries — they target topics without matching search intent, use no structured data, and have no FAQ schema despite being the ideal page type for FAQ rich results.

The Shopify blog URL structure problem

Shopify creates blog post URLs in the format /blogs/[blog-name]/[post-handle]. The default blog name is 'news', creating URLs like /blogs/news/how-to-care-for-leather-shoes. This is a weak URL structure for SEO: it contains the word 'news' which signals date-sensitive content when the post is evergreen, it buries the post three levels deep, and the /blogs/ prefix is not a descriptive keyword. The ideal fix is to rename the blog handle to something descriptive — /blogs/guides/, /blogs/advice/, /blogs/resources/ — giving posts a URL like /blogs/guides/how-to-care-for-leather-shoes. This is a simple change in Shopify Admin (Online Store > Blog Posts > Manage Blogs) that significantly improves URL clarity.

Writing Shopify blog posts that rank vs posts that don't

Blog posts that rank on Shopify typically: target a specific informational or comparison query with clear search demand (verified in Search Console or a keyword tool), open with a direct answer to the query in the first paragraph, use a clear H1 that matches the target query, structure the content with descriptive H2 subheadings that match related query variants, include at least 3 internal links to relevant product and collection pages, and end with a clear CTA linking to the commercial page the post is designed to support. Posts that don't rank target topic areas rather than specific queries, are written to a word count target without considering structure, and have no internal link strategy.

Internal linking between Shopify blog and commercial pages

The highest-value internal links on a Shopify store flow from blog posts to collection and product pages, and from collection pages to relevant blog posts. Blog posts covering product questions, care guides, buying advice, and comparison content are natural internal link sources for the products and collections they discuss. Most Shopify stores have this link structure backwards — they link from homepages to blog posts but not from blog posts to collections. A blog post about 'how to choose a running shoe' should contain 3-5 links to running shoe collection pages. A buying guide for kitchen knives should link to the kitchen knife collection. This link flow passes topical authority from the content to the commercial pages.

How to rename the Shopify blog handle for better URLs

Changing the blog handle is a one-way door — any existing blog post URLs will change, requiring redirects from the old URLs to the new ones. Plan this change before your blog has significant traffic, and set up redirects immediately if posts are already indexed.

Step-by-step:

  1. In Shopify Admin, go to Online Store > Blog Posts.
  2. Click “Manage Blogs” (the link appears near the top right of the Blog Posts page).
  3. Click the name of your blog (usually “News”).
  4. Change the “Handle” field from news to something descriptive: guides, advice, resources, or journal. The handle determines the URL prefix — /blogs/guides/ is cleaner and more descriptive than /blogs/news/.
  5. Save the blog.
  6. All existing blog post URLs will now use the new prefix. Shopify does not automatically create redirects — you must add them manually under Online Store > Navigation > URL Redirects, or via a redirect app.

After the rename, submit an updated sitemap to Google Search Console to accelerate re-crawl of the new URLs. Monitor GSC for coverage errors over the following two to four weeks.

For stores with multiple blogs (Shopify supports multiple separate blogs), apply the same logic: rename each blog handle to reflect its content purpose. A blog for product updates, a blog for guides, and a blog for industry news should have handles like updates, guides, and industry rather than the default news, blog2, blog3.

Adding Article schema to Shopify blog posts via theme.liquid

Shopify’s Dawn theme and most commercial themes don’t output Article JSON-LD schema by default. Adding it requires editing the article.liquid template in your theme.

Navigate to Online Store > Themes > Edit Code. Find templates/article.liquid or, in newer Dawn versions, the sections/main-article.liquid file.

Add the following JSON-LD block inside the main article section, within a <script type="application/ld+json"> tag:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": {{ article.title | json }},
  "author": {
    "@type": "Person",
    "name": {{ article.author | json }}
  },
  "datePublished": "{{ article.published_at | date: '%Y-%m-%dT%H:%M:%S+00:00' }}",
  "dateModified": "{{ article.updated_at | date: '%Y-%m-%dT%H:%M:%S+00:00' }}",
  "description": {{ article.excerpt_or_content | strip_html | truncate: 200 | json }},
  "image": "{{ article.image | image_url: width: 1200 }}",
  "publisher": {
    "@type": "Organization",
    "name": {{ shop.name | json }},
    "logo": {
      "@type": "ImageObject",
      "url": "{{ settings.logo | image_url: width: 200 }}"
    }
  },
  "mainEntityOfPage": {
    "@type": "WebPage",
    "@id": "{{ shop.url }}{{ article.url }}"
  }
}
</script>

Validate the output with the Rich Results Test after adding. The author field should contain the post author’s name — ensure your Shopify author names are set correctly in the blog post editor.

Adding meta descriptions to Shopify blog posts

Shopify allows manual meta descriptions for blog posts via the Search Engine Listing Preview section at the bottom of the blog post editor in the Admin. However, the default blog post template in many themes doesn’t output this meta description correctly.

In theme.liquid, verify this tag exists in the <head>:

{% if page_description %}
  <meta name="description" content="{{ page_description | escape }}">
{% endif %}

For blog posts, page_description is populated by whatever you enter in the SEO description field in the blog post editor. If this tag is missing or conditional logic is wrong, meta descriptions won’t appear for blog posts even when manually set. Test by viewing the page source of a blog post that has a description set — search for <meta name="description".

If the theme doesn’t handle it, add the conditional tag to the <head> section of theme.liquid.

Keyword research approach for blog content

Effective Shopify blog content is built around informational queries that exist in the purchase journey for the products you sell. The research process:

Step 1: Start with your top-selling collections. For each major collection, identify the informational questions buyers have before purchasing. A running shoes collection generates informational queries like “how to choose running shoes”, “how often to replace running shoes”, “neutral vs stability running shoes”. These are the target queries for blog content.

Step 2: Verify search demand. Use Google Search Console to check whether queries in these topic areas are already generating impressions for your site. Alternatively, use a keyword tool (Ahrefs, Semrush, Ubersuggest) to check monthly search volume. Prioritise queries with 100+ monthly searches.

Step 3: Check search intent. Not all informational queries lead to purchase intent. “History of running shoes” has informational intent but minimal commercial connection. “How to choose running shoes for flat feet” has direct commercial intent — the answer involves specific product recommendations. Prioritise queries where the content can naturally recommend or link to specific collections and products.

Step 4: Map blog topics to commercial pages. Every blog topic should have a clear commercial destination — the collection or product the post will link to. Before writing, confirm which internal links the post will contain. If a topic doesn’t have a natural commercial destination in your store, it’s a lower priority.

The link architecture that delivers the most SEO value for a Shopify store runs in both directions: commercial pages should link to relevant blog content, and blog content should link back to commercial pages.

The highest-value link flows:

  • Blog post (informational query) → Collection page (commercial page for the product category)
  • Blog post (buying guide) → Specific product pages (for products recommended in the guide)
  • Collection page → Blog post (as “Buying guide” or “How to choose” supplementary content)
  • Homepage → Key blog posts (for topical authority signals)

Most Shopify stores link from the homepage to the blog section and from the blog to itself (related posts). The link from blog to collection is almost always missing. Adding 2-4 contextual internal links per blog post to relevant collections and products is the highest-return internal linking change most Shopify stores can make.

In practice: go through your 10 most-visited blog posts. For each one, identify which collection is most relevant to the post’s topic. Add a contextual link to that collection within the post body (not just at the end as a CTA). This change alone has been associated with measurable ranking improvements for the linked collections within 4-8 weeks of crawl.

Blog post structure that ranks

Posts that consistently rank for informational queries share a structural pattern:

Opening paragraph: Answer the query directly in the first 50-100 words. Users and AI systems scan the opening paragraph to determine whether the content matches their query. A post that buries the answer three paragraphs in signals poor content structure.

H2 subheadings as query variants: Each H2 should correspond to a related query or sub-question. “How to choose running shoes” as a parent query generates H2s like “What type of running shoe do you need?”, “How to check your gait before buying running shoes”, “Running shoes for different surfaces”, “How much should you spend on running shoes”. These subheadings match secondary queries and improve the breadth of ranking signals.

FAQ section: Add a dedicated FAQ section at the end of every post targeting 3-5 specific questions related to the topic. These questions should be phrased as real user queries. FAQ sections are the primary source for FAQ rich results and AI Overview citations.

CTA at article end: Every post should end with a contextual call to action linking to the relevant collection. “Ready to find your running shoes? See our full range of running shoes.” This is both a conversion mechanism and an internal link.

What to do with underperforming old blog posts

Most Shopify stores accumulate blog posts that receive little or no organic traffic. A data-driven triage approach:

Posts with impressions but no clicks (in GSC): These posts are ranking somewhere but not getting clicked. Check the average position — if position 8-20, the post needs better title/meta optimisation and stronger content to move into the top 5. Update the title to be more specific and query-matched. Add a proper FAQ section. Update any outdated information.

Posts with no impressions (in GSC, over 6+ months): These posts are either not indexed, or ranking below position 100 for any query. Check whether they’re indexed (URL Inspection in GSC). If indexed but not ranking, the post likely targets a topic without sufficient search demand, has structural problems (no clear query target, thin content), or is cannibalising a better page on the same topic. Consolidate with a stronger post or redirect to a relevant collection.

Seasonal posts: Posts written for a specific season or promotion that receive traffic only during that period. Keep them but don’t invest update effort until the season approaches.

Duplicate topics: If you have two or three posts that all loosely cover the same topic, consolidate into one comprehensive post and 301-redirect the others. Consolidation concentrates ranking signals rather than splitting them.

The blog tags and duplicate content problem

Shopify blog tags create archive pages at /blogs/[blog-name]/tagged/[tag-name]. By default, these tag archive pages are indexed and often contain very thin content — just a list of posts for that tag.

Tag archive pages frequently create duplicate or near-duplicate content issues when multiple tags cover similar topics. They also fragment link equity by creating additional URLs that compete with the actual blog posts.

The standard fix: add <meta name="robots" content="noindex"> to blog tag archive pages in your theme. In theme.liquid, this can be done conditionally:

{% if current_tags %}
  <meta name="robots" content="noindex, follow">
{% endif %}

This noindexes tag archive pages while still allowing Googlebot to follow links from them. The blog posts themselves remain indexed and unaffected. This is a low-risk change that eliminates a common source of indexed thin content without redirecting or removing any post URLs.

Quick answer

Shopify SEO becomes operational when the constraint is clear, the right page type is fixed, the output is tested and the commercial impact is reported.

What you will do

  • Prioritise technical SEO work by page type and business value.
  • Fix crawl, indexation, metadata, template, image and internal-link problems in the right order.
  • Decide when a tool is needed and when native Shopify controls are enough.

What to check first

  • Shopify admin for search listings, redirects, products, collections and theme settings.
  • Google Search Console for indexing, queries and landing-page movement.
  • GA4 or Shopify reports for commercial impact.
  • Research tools for keyword, competitor and audit processes.
  • TinyIMG where image handling is the repeated constraint.

Work through it in this order

  1. Choose the page type being fixed: collection, product, blog, page, filter, vendor or migration URL.
  2. Check crawlability, indexability, canonical, title, H1, internal links, schema and page speed.
  3. Compare Search Console queries with the page intent.
  4. Fix the template or content pattern before editing dozens of individual pages.
  5. Retest the page in a crawler, browser, structured data validator and Search Console where relevant.
  6. Record the change date, owner, expected impact and next review date.

Real-world notes

  • Most Shopify SEO gains come from page architecture and template fixes, not from installing another SEO app.
  • Collection pages usually carry the commercial opportunity; product pages usually supply evidence and conversion detail.
  • A technical fix that is not tied to a page type and a commercial priority becomes backlog noise.

Final checks

  • Page type selected.
  • Primary query intent confirmed.
  • Canonical and indexability checked.
  • Title, H1 and meta reviewed.
  • Internal links updated.
  • Schema output checked.
  • Image weight reviewed.
  • Change logged for reporting.

Watch-outs

  • Do not index every filter combination. Create clean collections for valuable facets instead.
  • Do not change handles on ranking pages unless the redirect and internal-link update are ready.
  • Do not trust app-generated schema until you inspect the final page output.
Next action

Use the Shopify SEO Audit Checklist, then move into the roadmap, URL structure or collection guide for the page type in front of you.

Field questions

Does Shopify's blog affect ecommerce SEO rankings?

Yes, when structured correctly. Blog content that ranks for informational queries drives top-of-funnel traffic, and internal links from blog posts to collection and product pages pass topical authority to commercial pages. However, blog posts written without a clear target query, without internal links to commercial pages, and without structured data provide very little SEO value.

Should Shopify blog posts use the same template as guide pages?

Ideally, yes. Shopify's default blog template is often stripped-down compared to the product and collection templates. If your blog is being used for SEO content (not just news or announcements), add FAQ schema output to the blog post template, ensure all posts have meta descriptions, add Article schema (author, datePublished, dateModified), and add a related products section linking to commercial pages.

How do I add FAQ schema to Shopify blog posts?

Shopify blog posts don't support structured FAQ fields natively. To add FAQPage schema to blog posts, add a JSON-LD script block to the blog post template in your theme (theme.liquid or the article.liquid template). You can either: hardcode FAQ content in the JSON-LD for specific posts using metafields, or use a schema generation app that reads FAQ content from the post body and outputs JSON-LD.

What is the ideal length for Shopify blog posts targeting SEO?

Word count is less important than content completeness for the target query. A post that directly and thoroughly answers a specific question in 600 words will outperform a 2,000-word post that covers the topic vaguely. For competitive informational queries in ecommerce, 800-1,500 words with clear structure (H2s, lists, FAQ section) typically performs well. Focus on covering the query comprehensively rather than hitting a word count.

Should I use Shopify's blog for every type of content, or are there alternatives?

Use Shopify's blog for: product guides, care and maintenance content, buying guides, comparison content, and how-to articles that link to products. Consider separate pages (not blog posts) for: evergreen resource hubs, size guides, category explainer pages, and anything you want at a clean URL without the /blogs/ prefix. Shopify pages (not posts) give you full URL control and are better for permanent, high-value content.