How to Add Article/BlogPosting Schema in Shopify?

How to add Article schema in Shopify requires inserting JSON-LD structured data that identifies blog posts as editorial content with author attribution, publication dates, and featured images. This guide from HiAgency covers implementation for both Article and BlogPosting schema types, improving how Google displays your blog content in search results and AI Overviews.
Article schema helps search engines understand your blog’s content structure, author expertise, and publication timeline. Shopify includes basic Article schema by default, but enhanced implementation with complete properties improves rich result eligibility and content visibility.
What Is the Difference Between Article and BlogPosting Schema?
Article and BlogPosting are closely related schema types that serve similar purposes. BlogPosting is a subtype of Article, meaning it includes all Article properties plus blog-specific attributes.

Article schema works for:
- News articles and press releases
- Long-form editorial content
- Research reports and whitepapers
- Case studies and industry analyses
BlogPosting schema works for:
- Blog posts on Shopify blog pages
- How-to guides and tutorials
- Product reviews and comparisons
- Lifestyle and opinion content
For Shopify blogs, BlogPosting is the recommended schema type because it signals informal, regularly-updated content typical of blogs. Use Article for more formal editorial content on standalone pages.
What Properties Should Article Schema Include?
Complete Article schema requires core content properties and recommended attributes that improve search visibility and E-E-A-T signals.
Required properties:
- @type: BlogPosting – Identifies the schema type
- headline – Article title
- datePublished – Original publication date
- dateModified – Last update date
- author – Content author information
- publisher – Publishing organization details
Recommended properties:
- image – Featured image URL
- description – Article summary or excerpt
- articleBody – Full article content text
- wordCount – Total word count
- articleSection – Content category or tag
The author and publisher properties are critical for Google’s E-E-A-T evaluation. These establish content authorship and organizational authority.
How to Add Basic Article Schema to Shopify

Basic implementation establishes article identity with essential publication metadata.
Step 1: Access Article Template
Navigate to your theme’s article template:
- Go to Online Store > Themes
- Click Actions > Edit code
- Open Templates/article.liquid
- For OS 2.0 themes, edit sections/main-article.liquid
Step 2: Check Existing Schema
Shopify adds basic Article schema automatically. View page source and search for “application/ld+json” to see existing markup.
If Shopify’s default schema exists, you have two options:
- Enhance existing schema by adding missing properties
- Replace default schema with complete custom implementation
Replacing ensures complete control over all properties.
Step 3: Insert BlogPosting Schema
Add this JSON-LD code before the closing </body> tag or in template head:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "{{ article.title | escape }}",
"url": "{{ shop.url }}{{ article.url }}",
"datePublished": "{{ article.published_at | date: '%Y-%m-%dT%H:%M:%S%z' }}",
"dateModified": "{{ article.updated_at | date: '%Y-%m-%dT%H:%M:%S%z' }}",
"description": "{{ article.excerpt_or_content | strip_html | truncate: 160 | escape }}",
"author": {
"@type": "Person",
"name": "{{ article.author }}"
},
"publisher": {
"@type": "Organization",
"name": "{{ shop.name }}",
"logo": {
"@type": "ImageObject",
"url": "{{ shop.brand.logo | image_url: width: 600 }}"
}
}
}
</script>
This creates basic BlogPosting schema using Shopify’s article object. The dates use ISO 8601 format required by Google.
How to Add Featured Images to Article Schema?
Featured images improve rich result eligibility and display in Google Discover feeds.
Step 1: Add Image Property
Include the article’s featured image:
{% if article.image %}
"image": {
"@type": "ImageObject",
"url": "https:{{ article.image | image_url: width: 1200 }}",
"width": 1200,
"height": {{ 1200 | divided_by: article.image.aspect_ratio | round }}
},
{% endif %}
This calculates image height automatically from aspect ratio. The conditional prevents errors for articles without featured images.
High resolution blog featured image formatted for structured data
Step 2: Add Multiple Image Sizes
Provide multiple image resolutions for different display contexts:
{% if article.image %}
"image": [
"https:{{ article.image | image_url: width: 1200 }}",
"https:{{ article.image | image_url: width: 800 }}",
"https:{{ article.image | image_url: width: 400 }}"
],
{% endif %}
Google uses different image sizes for various rich result formats. Providing multiple sizes improves flexibility.
Step 3: Set Image Requirements
Google’s image requirements for Article schema:
- Minimum width: 1200 pixels
- Aspect ratio: 16:9, 4:3, or 1:1
- Format: JPG, PNG, WebP
- File size: Under 5MB
Ensure article featured images meet these specifications for rich result eligibility.
How to Add Author Information to Article Schema?
Author details strengthen E-E-A-T signals and enable author rich results.
Step 1: Add Basic Author Property
Include author name from Shopify’s article object:
"author": {
"@type": "Person",
"name": "{{ article.author }}"
}
This pulls the author name assigned in Shopify admin when publishing articles.
Step 2: Add Author URL
Link to author bio or profile page:
"author": {
"@type": "Person",
"name": "{{ article.author }}",
"url": "{{ shop.url }}/pages/about-{{ article.author | handleize }}"
}
The handleize filter converts author names to URL-friendly slugs. Create corresponding About pages for each author.
Step 3: Add Author Social Profiles
Include author social media links:
"author": {
"@type": "Person",
"name": "{{ article.author }}",
"url": "{{ shop.url }}/pages/about-{{ article.author | handleize }}",
"sameAs": [
"https://twitter.com/authorusername",
"https://www.linkedin.com/in/authorusername"
]
}
For multiple authors, store social URLs in article metafields rather than hardcoding.
How to Handle Multiple Authors?
Articles with multiple authors require array format for the author property.
Step 1: Store Additional Authors in Metafields
Create article metafields for co-authors:
- Go to Settings > Custom data
- Select Blog posts
- Add co_author field (text type)
Step 2: Output Multiple Authors
Format author property as array when co-authors exist:
"author": [
{
"@type": "Person",
"name": "{{ article.author }}"
}
{% if article.metafields.custom.co_author %}
,{
"@type": "Person",
"name": "{{ article.metafields.custom.co_author }}"
}
{% endif %}
]
This handles both single and multiple author scenarios.
How to Add Publisher Information?
Publisher details establish organizational authority and connect articles to your brand entity.
Step 1: Add Basic Publisher Property
Include organization name and logo:
"publisher": {
"@type": "Organization",
"name": "{{ shop.name }}",
"logo": {
"@type": "ImageObject",
"url": "{{ shop.brand.logo | image_url: width: 600 }}"
}
}
Publisher logo must meet Google’s requirements: minimum 160×90 pixels, maximum 1920×1920 pixels.
Step 2: Link to Organization Schema
Reference your site-wide Organization schema:
"publisher": {
"@type": "Organization",
"@id": "{{ shop.url }}#organization",
"name": "{{ shop.name }}",
"logo": {
"@type": "ImageObject",
"url": "{{ shop.brand.logo | image_url: width: 600 }}"
}
}
The @id property connects Article schema to Organization schema, establishing clear ownership.
How to Add Article Categories and Tags?
Blog categories and tags displayed on website sidebar
Category and tag information helps search engines understand content topics.
Step 1: Add articleSection Property
Include the blog name as content section:
"articleSection": "{{ blog.title }}"
For stores with multiple blogs (News, Guides, Tutorials), this signals content category.
Step 2: Add Article Tags
Include tags as keywords:
{% if article.tags.size > 0 %}
"keywords": "{{ article.tags | join: ', ' }}",
{% endif %}
This concatenates all article tags into comma-separated keywords.
Step 3: Add About Property
Link articles about specific topics:
{% if article.tags contains 'Product Reviews' %}
"about": {
"@type": "Product",
"name": "Product Name from Article"
},
{% endif %}
Use this for product review articles to connect content with products.
How to Add Word Count and Reading Time?
Word count and reading time metadata improve user experience signals.
Step 1: Calculate Word Count
Count words in article content:
{% assign word_count = article.content | strip_html | split: ' ' | size %}
"wordCount": {{ word_count }}
This strips HTML tags and counts remaining words.
Step 2: Add timeRequired Property
Calculate estimated reading time:
{% assign reading_time = word_count | divided_by: 200 | at_least: 1 %}
"timeRequired": "PT{{ reading_time }}M"
This assumes 200 words per minute average reading speed. The PT#M format follows ISO 8601 duration standard.
How to Add Article Body Content?
Including full article text helps search engines understand content comprehensively.
Step 1: Add articleBody Property
Include complete article content:
"articleBody": "{{ article.content | strip_html | strip_newlines | escape }}"
Strip HTML tags to provide plain text. The escape filter handles quotes and special characters.
Step 2: Limit Content Length
For very long articles, consider truncating:
{% assign body_text = article.content | strip_html | strip_newlines %}
{% if body_text.size > 5000 %}
"articleBody": "{{ body_text | truncate: 5000 | escape }}",
{% else %}
"articleBody": "{{ body_text | escape }}",
{% endif %}
This prevents excessively large schema blocks on long-form content.
How to Handle Updated Articles?
Properly marking content updates signals freshness to search engines.
Step 1: Use dateModified Correctly
Shopify updates article.updated_at automatically:
"datePublished": "{{ article.published_at | date: '%Y-%m-%dT%H:%M:%S%z' }}",
"dateModified": "{{ article.updated_at | date: '%Y-%m-%dT%H:%M:%S%z' }}"
For articles never updated, dateModified equals datePublished.
Step 2: Track Significant Updates
Use article metafields for major revision tracking:
{% if article.metafields.custom.major_update_date %}
"dateModified": "{{ article.metafields.custom.major_update_date }}",
{% else %}
"dateModified": "{{ article.updated_at | date: '%Y-%m-%dT%H:%M:%S%z' }}",
{% endif %}
This allows manual control over when updates appear significant.
How to Add Comment Count and Engagement?
Engagement metrics signal content popularity and user interaction.
Step 1: Add Comment Count
Include article comment data:
{% if blog.comments_enabled? %}
"commentCount": {{ article.comments_count }},
"comment": [
{% for comment in article.comments limit: 5 %}
{
"@type": "Comment",
"text": "{{ comment.content | strip_html | truncate: 200 | escape }}",
"datePublished": "{{ comment.created_at | date: '%Y-%m-%dT%H:%M:%S%z' }}",
"author": {
"@type": "Person",
"name": "{{ comment.author }}"
}
}{% unless forloop.last %},{% endunless %}
{% endfor %}
],
{% endif %}
This includes comment count and sample comments (limited to 5 for schema size management).
How to Implement Article Schema for Different Blog Types?
Example layout of tutorial and product review blog content
Different blog purposes require adjusted schema approaches.
How-To Articles
For tutorial content, add HowTo schema alongside Article:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "{{ article.title | escape }}",
"about": {
"@type": "HowTo",
"name": "{{ article.title | escape }}",
"step": [
{
"@type": "HowToStep",
"name": "Step 1",
"text": "Description of first step"
}
]
}
}
</script>
Product Review Articles
For product reviews, add Review schema:
"review": {
"@type": "Review",
"reviewRating": {
"@type": "Rating",
"ratingValue": 4.5,
"bestRating": 5
},
"itemReviewed": {
"@type": "Product",
"name": "Product Name"
}
}
How to Validate Article Schema?
Testing ensures Article schema qualifies for rich results and AI Overview inclusion.
Step 1: Use Google Rich Results Test
Validate article markup:
- Visit search.google.com/test/rich-results
- Enter article URL
- Click Test URL
- Look for “Article detected” or “BlogPosting detected”
Check for required properties: headline, datePublished, author, publisher, and image.

Step 2: Check Schema.org Validator
Verify syntax compliance:
- Go to validator.schema.org
- Select Fetch URL
- Enter article URL
- Review results
Fix any red errors immediately. Yellow warnings indicate missing recommended properties.
Step 3: Monitor Google Search Console
Track article rich results:
- Open Search Console
- Go to Enhancements
- Check Article report
- Review valid/invalid items
Search Console updates every 1-3 days. Monitor monthly for schema health.
How to Fix Common Article Schema Errors?
Missing Required Property: datePublished
Error message: “Missing field ‘datePublished’ (required)”
Cause: Publication date missing or incorrectly formatted.
Fix: Use ISO 8601 date format:
"datePublished": "{{ article.published_at | date: '%Y-%m-%dT%H:%M:%S%z' }}"
Include timezone offset (%z) for complete date specification.
Invalid Author Value
Error message: “Invalid object type for field ‘author'”
Cause: Author property using string instead of Person object.
Fix: Structure author as Person:
"author": {
"@type": "Person",
"name": "{{ article.author }}"
}
Never use “author”: “{{ article.author }}” directly as string.
Missing Publisher Logo
Error message: “Missing field ‘logo’ in publisher”
Cause: Publisher object lacks logo ImageObject.
Fix: Always include logo in publisher:
"publisher": {
"@type": "Organization",
"name": "{{ shop.name }}",
"logo": {
"@type": "ImageObject",
"url": "{{ shop.brand.logo | image_url: width: 600 }}"
}
}
Common Questions About Article Schema in Shopify?
Should You Replace Shopify’s Default Article Schema?
Shopify includes basic Article schema automatically on blog post pages, but this default implementation lacks several important properties that improve rich result eligibility and E-E-A-T signals. Whether to replace or enhance depends on your customization needs.
Shopify’s default Article schema typically includes:
- Basic headline, datePublished, author name
- Minimal publisher information
- Featured image URL
Default schema misses:
- Author URL and social profiles
- Publisher logo ImageObject
- Article categories and keywords
- Word count and reading time
- Complete image specifications
- @id references for entity connections
Two implementation approaches:
Enhancement approach: Keep Shopify’s default schema and add missing properties by appending a second JSON-LD block. This requires finding Shopify’s schema location in theme code and adding properties adjacent to it. More complex but preserves automatic updates.
Replacement approach: Remove Shopify’s default schema entirely and implement complete custom schema. Provides full control over all properties and structure. Easier to maintain long-term.
For replacement, search theme files for existing JSON-LD blocks containing @type: Article or BlogPosting. Comment out or delete these blocks before adding custom implementation. Test thoroughly to ensure no duplicate schema exists.
Most Shopify stores benefit from replacement approach because it simplifies ongoing management and ensures consistent implementation across all blog posts.
How Does Article Schema Help with Google Discover?
Article schema significantly influences Google Discover eligibility and content performance in Discover feeds. Google Discover requires high-quality images and complete Article markup to consider content for inclusion.
Four schema properties directly impact Discover eligibility:
Image property with proper specifications: Discover requires images minimum 1200 pixels wide. The image ImageObject must include url, width, and height properties. Articles without compliant images don’t appear in Discover regardless of content quality.
"image": {
"@type": "ImageObject",
"url": "https:{{ article.image | image_url: width: 1200 }}",
"width": 1200,
"height": 800
}
datePublished and dateModified: Discover favors recent content. Clear publication dates help Google determine content freshness. The dateModified property signals updates that may warrant reconsideration for Discover distribution.
Author with credentials: Author information strengthens content authority. Including author URLs linking to bio pages with credentials and expertise signals improves E-E-A-T evaluation for Discover.
Publisher with verified logo: Publisher logo appears alongside article cards in Discover feeds. Clear brand identity through proper publisher schema improves click-through rates from Discover.
Beyond schema, Discover eligibility requires:
- Mobile-friendly pages
- High-quality images (1200px+ width)
- Engaging, in-depth content
- No deceptive tactics or clickbait
Articles meeting schema requirements don’t guarantee Discover placement, but missing requirements disqualify content entirely. Implement complete Article schema as foundation for Discover eligibility.
Can Article Schema Include Video Content?
Yes, articles containing video content should include VideoObject schema alongside Article schema to enable video rich results and improve multimedia content visibility. Videos embedded in blog posts benefit from explicit structured data.
Implementation approach depends on video hosting:
For embedded YouTube videos:
"video": {
"@type": "VideoObject",
"name": "Video Title",
"description": "Video description",
"thumbnailUrl": "https://img.youtube.com/vi/VIDEO_ID/maxresdefault.jpg",
"uploadDate": "2024-01-15T00:00:00Z",
"duration": "PT5M30S",
"contentUrl": "https://www.youtube.com/watch?v=VIDEO_ID",
"embedUrl": "https://www.youtube.com/embed/VIDEO_ID"
}
For Shopify-hosted videos:
"video": {
"@type": "VideoObject",
"name": "{{ article.title }}",
"description": "{{ article.excerpt | strip_html | escape }}",
"thumbnailUrl": "{{ article.image | image_url: width: 1200 }}",
"uploadDate": "{{ article.published_at | date: '%Y-%m-%dT%H:%M:%S%z' }}",
"contentUrl": "{{ video_url }}"
}
Video duration must use ISO 8601 format: PT#M#S (PT5M30S = 5 minutes 30 seconds). Required VideoObject properties: name, description, thumbnailUrl, uploadDate.
For articles with multiple videos, use array format:
"video": [
{
"@type": "VideoObject",
"name": "First Video"
},
{
"@type": "VideoObject",
"name": "Second Video"
}
]
Store video metadata in article metafields for easier management across multiple blog posts. This avoids hardcoding video details in template files.
How Should Author Information Be Handled for Ghost Writers?
Ghost-written content requires careful author attribution that balances proper credit with brand consistency. Three approaches work depending on your blog strategy and content marketing goals.
Approach 1: Brand as author – Use organization name instead of individual:
"author": {
"@type": "Organization",
"name": "{{ shop.name }}",
"url": "{{ shop.url }}"
}
This works for content representing company voice rather than individual perspective. Common for product announcements, company updates, and collaborative content without single author attribution.
Approach 2: Editor or content lead as author: Credit the editorial leader who oversees content:
"author": {
"@type": "Person",
"name": "Content Director Name",
"url": "{{ shop.url }}/pages/about-content-director",
"jobTitle": "Content Director"
}
This provides individual attribution while acknowledging the actual person responsible for content oversight and approval.
Approach 3: Byline with credentials: Create author personas representing content expertise:
"author": {
"@type": "Person",
"name": "Store Editorial Team",
"url": "{{ shop.url }}/pages/editorial-team"
}
Link to page explaining editorial process and team credentials. This maintains author attribution while acknowledging collaborative creation.
Never fabricate individual author identities with fake names, credentials, or social profiles. Google values transparency about content creation. If content is ghost-written, organizational or editorial team attribution maintains honesty while preserving E-E-A-T signals.
For SEO purposes, consistent author attribution matters more than specific attribution method. Choose one approach and apply it consistently across all ghost-written content.
How Often Should Article Schema Be Updated?
Article schema code in templates requires updates only when Shopify changes Liquid variables or you restructure blog content strategy. Individual article schema data updates automatically through dynamic Liquid variables pulling current information.
Review Article schema implementation biannually to verify:
Liquid variables output correctly: Test that {{ article.title }}, {{ article.author }}, and date variables produce expected values. Shopify occasionally updates object properties during platform changes.
Image specifications meet requirements: Confirm featured images still meet Google’s minimum 1200px width requirement. Theme changes or image CDN updates may affect output dimensions.
Author attribution remains accurate: Verify author name variables match current contributors. If switching from individual authors to organizational attribution, update schema structure accordingly.
Immediate updates needed when:
- Changing blog strategy: Switching from Article to BlogPosting type (or vice versa) requires schema @type updates
- Adding video content: Implementing video in blog posts requires VideoObject schema additions
- Restructuring author attribution: Moving from individual to organizational authors needs author property changes
- Implementing comment features: Enabling Shopify blog comments requires comment schema additions
Individual article updates happen automatically. When you publish new articles, schema pulls current data through Liquid variables. When updating article content, dateModified updates automatically. No manual schema intervention needed for routine publishing.
Monitor Google Search Console’s Article report monthly. Sudden increases in schema errors indicate template issues requiring investigation. Otherwise, Article schema maintains itself through dynamic variable output.
Need expert help with Shopify SEO? HiAgency’s technical SEO specialists implement schema markup, optimize site architecture, and deliver data-driven strategies that improve organic visibility. Get in touch to discuss your Shopify store’s SEO performance.
Comments
Post a Comment