Skip to main content
WooCommerce guide

BlogPosting Schema for WooCommerce Stores

By ยท Updated ยท 7 min read

What Makes BlogPosting Schema Different on WooCommerce

WooCommerce runs on WordPress, which means BlogPosting schema implementation inherits both WordPress's flexibility and its fragmentation. Unlike hosted platforms such as Shopify, WooCommerce has no native structured data manager โ€” schema output depends entirely on whichever combination of SEO plugin, theme framework, and custom code the store happens to use. That creates both opportunity and conflict.

WooCommerce stores typically run blog content alongside product pages, making BlogPosting schema directly relevant whenever editorial content supports the catalog. A buying guide, a tutorial post, or a brand story post all qualify for BlogPosting markup. The challenge is ensuring that markup fires correctly on those post types without colliding with the Product schema WooCommerce already outputs on product pages.

How WooCommerce Outputs Schema by Default

Out of the box, WooCommerce injects Product and BreadcrumbList schema on product and category pages. It does not inject BlogPosting or Article schema on standard WordPress blog posts. That gap is intentional โ€” WooCommerce treats the blog as a WordPress-native feature, not a commerce feature, so no structured data is added there automatically.

Most WooCommerce stores rely on SEO plugins to fill this gap. Yoast SEO outputs Article schema on posts by default, but marks them as type Article rather than BlogPosting unless configured otherwise. Rank Math gives explicit control over schema type per post, including a BlogPosting option. Without one of these plugins, or without a theme that injects schema via its own template hooks, blog posts on WooCommerce stores go out with zero structured data.

Themes built on frameworks like Divi, Avada, or GeneratePress sometimes add their own schema snippets through theme functions. This creates a duplication risk: the SEO plugin and the theme both fire schema on the same URL, producing invalid or conflicting markup that Google's Rich Results Test flags as an error.

Plugin Options for Adding BlogPosting Schema in WooCommerce

Yoast SEO (free and premium) is the most common starting point. It outputs Article schema on posts automatically, but switching the type to BlogPosting requires editing the schema graph in Yoast's settings or using the Yoast Schema API to filter the output in a custom plugin. The free version does not expose a per-post schema type selector; that level of control requires either a paid tier or a code-level filter.

Rank Math handles this more directly. Each post has a schema block in the editor sidebar where the operator can select BlogPosting, add author details, and set datePublished and dateModified explicitly. Rank Math also supports schema templates, so a store can apply BlogPosting configuration globally to all posts without touching each one individually.

Schema Pro is a third option that sits on top of any SEO plugin. It lets operators create schema rules that target specific post types, categories, or tags โ€” useful when only certain content categories (e.g., tutorials or guides) should carry BlogPosting markup while general news posts carry Article or NewsArticle. This separation matters for stores running editorially diverse blogs alongside a product catalog.

Custom Post Types and WooCommerce-Specific Conflicts

Some WooCommerce stores extend their content architecture with custom post types โ€” lookbooks, how-to guides stored in a separate CPT, or vendor-created content. By default, SEO plugins apply schema rules to standard WordPress post types (post, page). Custom post types require explicit configuration inside the plugin or a custom filter to receive BlogPosting markup.

WooCommerce product pages output Product schema with an @type of Product. Problems arise when a post is used to describe a product โ€” common in headless or hybrid setups โ€” and both BlogPosting and Product schema fire simultaneously. Google does not support stacking conflicting types on one URL, so the correct approach is to choose one primary type and suppress the other. In practice this means adding a conditional check in the plugin's schema filter to detect WooCommerce product post types and skip BlogPosting injection there.

Page builders like Elementor add another layer. Elementor's Theme Builder feature includes a Blog Post template with optional schema widgets. If a store uses Elementor for post layout while also running Yoast or Rank Math, schema can be emitted twice. Disable schema output in whichever tool is secondary โ€” typically the page builder โ€” and let the dedicated SEO plugin own the structured data layer.

Required Fields and WooCommerce-Specific Implementation Details

A valid BlogPosting block for a WooCommerce store post must include: @context (schema.org), @type (BlogPosting), headline, author (with @type Person or Organization and name), datePublished, dateModified, and url. Adding image (with @type ImageObject, url, width, and height) improves eligibility for image-rich search features. WooCommerce's featured image system maps cleanly to this field if the plugin is configured to pull it.

The publisher field should reference the store's Organization entity, not the individual post author, since the store โ€” not the writer โ€” owns the publication. In Rank Math, the Organization details are set once under General Settings and referenced automatically. In Yoast, the same configuration lives under SEO > Search Appearance > Knowledge Graph. Maintaining a consistent Organization entity across all pages creates a coherent schema graph, which is the standard Google expects.

DateModified is frequently omitted on WooCommerce stores because WordPress shows a last-modified timestamp only if the theme or plugin explicitly requests it. Rank Math reads this from the post's modified date field in the database. Yoast does the same. Stores managing content through REST API endpoints or headless frameworks need to confirm that their publishing pipeline passes the correct modified timestamp, since automated imports sometimes reset it to the import date.

Actionable Steps to Deploy BlogPosting Schema Correctly on WooCommerce

Start by auditing current schema output. Run a representative blog post URL through Google's Rich Results Test and Schema Markup Validator. Note whether any schema fires, which plugin or theme is emitting it, and whether duplicates exist. This baseline prevents guesswork and confirms which tool to configure.

Choose one authoritative schema tool โ€” Rank Math or Yoast SEO โ€” and disable schema output in all other sources (theme settings, page builders, conflicting plugins). In the chosen plugin, set the default post schema type to BlogPosting. Add conditional logic to exclude WooCommerce product post types from BlogPosting injection. Configure the Organization entity once at the site level so publisher details populate consistently across all posts.

After deployment, re-test three to five representative posts in the Rich Results Test. Verify that headline, author, datePublished, dateModified, image, and url are all present and correctly populated. Submit the updated XML sitemap through Google Search Console to prompt recrawling of affected URLs. Monitor the Enhancements section of Search Console over the following two to four weeks for any structured data errors or warnings.

Frequently asked questions

Does WooCommerce add BlogPosting schema to blog posts automatically?

No. WooCommerce does not inject BlogPosting or Article schema on standard WordPress blog posts. It adds Product and BreadcrumbList schema only on product and category pages. A dedicated SEO plugin โ€” Rank Math, Yoast SEO, or Schema Pro โ€” is required to add BlogPosting markup to post content on a WooCommerce store.

Which plugin gives the most direct control over BlogPosting schema type in WooCommerce?

Rank Math provides the most direct per-post control, exposing a schema block in the WordPress editor sidebar where the operator selects BlogPosting explicitly. It also supports global schema templates, so the type can be applied to all posts at once without editing each individually. Yoast SEO requires either a premium tier or a custom filter to achieve the same per-post type selection.

Can BlogPosting and Product schema coexist on the same WooCommerce URL?

No. Google does not support conflicting schema types on a single URL. If a page is a WooCommerce product page, it should carry Product schema. If it is a blog post, it should carry BlogPosting. Conditional logic in the SEO plugin should detect the post type and suppress BlogPosting on product URLs to avoid validation errors.

What causes duplicate BlogPosting schema on WooCommerce stores?

Duplicate schema most commonly comes from running both a dedicated SEO plugin and a page builder (Elementor, Divi) or a schema-injecting theme simultaneously. Both fire their own structured data output on the same post. The fix is to disable schema output in the secondary tool โ€” typically the theme or page builder โ€” and assign full schema responsibility to one SEO plugin.

Does BlogPosting schema on WooCommerce blog posts affect product page rankings?

BlogPosting schema on a blog post does not directly alter rankings for separate product pages. The benefit is confined to the post itself โ€” improving how Google interprets the content type, authorship, and publication date. Indirectly, well-structured editorial content can support topical authority for the store's domain, which may influence how product pages rank in related queries.

MG
Written by

Matt is the founder of RunOctopus. He built All Angles Creatures from zero to page-1 rankings in reptile feeder insects in under 60 days using exactly this method โ€” turning a hard, entrenched niche into RunOctopus's proof store for programmatic SEO and AI search citation.

Connect on LinkedIn →

See what Otto would build for your store

Free architecture preview. No card required. Five minutes.

Generate Preview →