Boost your article visibility with valid JSON-LD. Connect your content to authors and publishers for better E-E-A-T signals.
Everything you need to know about implementing BlogPosting schema correctly — from choosing the right Article subtype to wiring up E-E-A-T signals and deploying across WordPress, Shopify, and Magento.
BlogPosting is a more specific subtype of the generic Article schema, which itself inherits from CreativeWork. The key difference is precision: Article is a broad catch-all suitable for investigative journalism or white papers, while BlogPosting explicitly tells Google the page is dynamic, editorial blog content — making crawl intent clearer and indexing more confident.
Using the most specific type also unlocks additional blog-specific properties that Article alone does not support, such as commentCount and keywords. Google's own Article structured data documentation lists BlogPosting as a recommended subtype for standard blog content.
BlogPosting. If it was published as a one-off editorial feature or news item, reach for NewsArticle.
Google's structured data guidelines are explicit: always use the most specific schema type that accurately fits your content. The more precise the type, the stronger the semantic signal. Use this reference to make the call:
| Schema Type | Best for |
|---|---|
BlogPosting |
Standard blog articles, opinion pieces, editorial posts, and brand content. |
NewsArticle |
Breaking news, time-sensitive journalism, and content distributed via Google News. |
HowTo |
Step-by-step guides, tutorials, recipes, and instructional content. |
TechArticle |
Technical walkthroughs, software manuals, API documentation, and code-intensive tutorials. |
Article |
Generic fallback — only use when no subtype accurately fits the content. |
For standard business or personal blogs, BlogPosting is the correct and optimal choice. Avoid falling back to the generic Article type if a more precise classification exists.
Freshness is one of Google's core ranking signals for informational queries. These two date fields do very different jobs — and both matter:
Both fields must use ISO 8601 format: YYYY-MM-DDThh:mm:ss+TZD — for example, 2026-05-19T09:00:00+01:00. This generator handles the conversion automatically from your shorthand date input.
Google's Search Quality Evaluator Guidelines place heavy weight on E-E-A-T (Experience, Expertise, Authoritativeness, Trustworthiness). BlogPosting schema directly feeds these signals by connecting content to verifiable, named entities. The key properties that drive E-E-A-T are:
author → Person entity — Link the author by name and URL, with a #person ID that connects to your dedicated Person schema on the author bio page.author.sameAs — Declare the author's verified social profiles (LinkedIn, Twitter/X, Wikipedia if applicable). Each link strengthens the entity connection in Google's Knowledge Graph.publisher → Organization entity — Reference your homepage Organization schema using its @id (e.g. yourdomain.com/#organization) to confirm a trustworthy publisher.image → ImageObject — A featured image declared in schema demonstrates production quality and editorial investment, which Google associates with genuine authorship.Together, these properties transform a standalone blog post into a connected node in your site's entity graph — which is how topical authority is built at scale.
Place your BlogPosting JSON-LD inside a <script type="application/ld+json"> block in the <head> of each individual blog post's HTML document. Each post needs its own unique schema block — unlike Organization schema, which lives only on your homepage.
@id values. For example: "publisher": { "@id": "https://yourdomain.com/#organization" }. This creates a clean linked data network with zero redundancy.
WordPress is the most plugin-rich environment for schema markup. The three most widely used options are:
All three auto-detect your post metadata and generate valid BlogPosting JSON-LD dynamically. To maximise E-E-A-T gains, configure each author's WordPress user profile in full — including a bio, website URL, and social links — so the plugin can map them into sameAs fields automatically.
sameAs values in the post-level schema settings.For block-theme WordPress installs or headless setups, inject the schema directly into your post template's <head> using the wp_head hook or a custom ACF field piped into a JSON-LD template.
Shopify blogs sit within your Liquid theme templates. For a manual implementation, open the theme code editor and locate the article.liquid or sections/main-article.liquid file. Add the following JSON-LD block using Shopify's native Liquid variables:
{{ article.title }} — pulls the post title from Shopify's article object directly.{{ article.published_at | date: '%Y-%m-%dT%H:%M:%S+00:00' }} to output ISO 8601 format.{{ article.image | img_url: 'master' }} to reference the post's featured image at full resolution.{{ article.author }} — returns the author's display name as configured in Shopify Staff accounts.For a no-code approach, apps like Hello Rich Snippets and Webrex SEO Optimizer in the Shopify App Store handle this automatically with a toggle — no Liquid editing required.
Magento does not natively include a blogging module, so a third-party blog extension is required. The two most robust options that include built-in structured data support are:
Once installed, navigate to your Magento Admin Panel → the blog post editing view → and expand the Search Engine Optimization or Rich Snippets section. Select BlogPosting as the structured data type. The extension automatically maps the post database fields — author name, publish date, modification date, and category taxonomy — into valid JSON-LD output.
<head> via your frontend framework's head management (e.g. React Helmet or Next.js Head component).