Yoast Schema Markup: What It Generates, What It Misses, and How to Fix Both
Last Updated: February 25, 2026 · 15 min read
Yoast SEO is installed on over 13 million WordPress sites. When you install it, it starts generating structured data for you automatically — which sounds like a solved problem, but the reality is more complicated. Yoast generates a solid schema foundation, but it has real gaps, makes assumptions you may not have configured, and can conflict with other plugins. This guide tells you exactly what Yoast is doing with schema, what it gets right, what it gets wrong, and how to fill in the holes.
1. What Yoast Generates Automatically
Yoast builds what it calls a "schema graph" — an interconnected set of schema types that link to each other via @id references. This is actually the right approach. Instead of loose, disconnected schema blocks, Yoast creates a structured hierarchy where your WebSite relates to your Organization, and each WebPage or Article relates to both of those.
On every page, Yoast outputs:
WebSiteDefines your site name and URL. Enables sitelinks searchbox if you have Yoast's search settings configured.Organization or PersonSet in Yoast → General → Site Representation. This is your brand entity. Yoast links it to your logo, social profiles, and every page on the site.WebPageApplied to every page type. For posts it becomes Article or BlogPosting, for products it becomes ItemPage, for tag archives it stays WebPage.BreadcrumbListGenerated automatically using your WordPress category and permalink structure. One of the most useful things Yoast does.
On blog posts and pages, Yoast adds Article or BlogPosting schema with the post title, date published, date modified, author, and publisher. On WooCommerce product pages (with Yoast WooCommerce SEO), it adds Product and Offer schema. On category pages and archives, it adds breadcrumbs.
2. Setting Up Yoast Schema Correctly — the Settings Most People Skip
1. Site Representation (Organization or Person)
Go to Yoast SEO → General → Site Representation. This is where you tell Yoast whether your site represents an Organisation or a Person. Most businesses should choose Organisation. Add your organisation name exactly as it appears on your Google Business Profile. Upload your logo — Yoast uses this as the logo in all generated schema.
Why this matters so much
If you leave Site Representation on the default "Company or person" placeholder and never configure it, Yoast outputs an Organization block with an empty name. That is an error in every validator and will prevent your brand Knowledge Panel from triggering.
2. Author profiles
Yoast generates Person schema for each post author, but only if the author has a complete WordPress user profile. Go to Users → Profile for each author and fill in their biographical info and — critically — their website URL. For authors who publish health, legal, or financial content, also link to their LinkedIn and professional profiles via the social media fields. This builds the E-E-A-T signals Google cares about.
3. Article type per post
On each individual post, Yoast lets you set the article type in the Yoast SEO → Schema block in the post editor sidebar. By default it uses Article or BlogPosting depending on your settings. If you publish news, change relevant posts to NewsArticle — this is required for Top Stories eligibility. If you publish technical documentation, use TechArticle.
4. Page type per page
For static pages (Contact, About, Services), Yoast lets you set the page type. The About page should be set to AboutPage. Contact should be ContactPage. The homepage often gets WebPage when it should be the entity anchor for your Organisation — check this in the homepage's Yoast schema settings.
3. Where Yoast Falls Short
📌 WooCommerce star ratings
Even with Yoast WooCommerce SEO installed, Yoast does not add AggregateRating to Product schema from WooCommerce's native review system. You get product price and availability but no stars in search. You need to add this manually or use a specialist plugin.
Fix:
Add a functions.php filter (see our WooCommerce schema guide) or install a dedicated Product Reviews Schema plugin.
📌 FAQ schema
Yoast Premium added a FAQ block in the WordPress editor years ago. However, as of 2024 Google restricted FAQ rich results to government and health websites. The Yoast FAQ block still generates FAQPage schema, but the chance of it showing as expandable dropdowns on a typical site is low.
Fix:
Still add FAQ schema — it helps Google understand Q&A content even without the visual dropdown. But do not make it your primary rich result strategy.
📌 HowTo schema
Yoast Premium has a How-To block, but HowTo rich results on desktop were discontinued. They still show on mobile. The Yoast How-To block outputs valid schema, so use it for tutorial content.
Fix:
Use the Yoast How-To block for genuinely step-based instructional content on mobile-heavy audiences.
📌 Recipe schema
Yoast does not generate Recipe schema. Food blogs need a dedicated recipe plugin such as WP Recipe Maker or Tasty Recipes to get Recipe schema and recipe card rich results.
Fix:
Install WP Recipe Maker (most popular) or Tasty Recipes. These output complete Recipe JSON-LD including ingredients, steps, nutrition, and timing.
📌 Event schema
Yoast has no event schema support at all. If you publish event listings, you need a separate events plugin such as The Events Calendar or add custom JSON-LD to event pages.
Fix:
The Events Calendar with the Schema & Structured Data for WP & AMP plugin generates Event schema. Alternatively, add custom JSON-LD per event page.
📌 Product shippingDetails and return policy
Even Yoast WooCommerce SEO doesn't add shippingDetails or hasMerchantReturnPolicy. These fields are increasingly important for Google Shopping and product rich result eligibility.
Fix:
Add shippingDetails via a WooCommerce Shipping Schema plugin or a custom functions.php filter. See our WooCommerce schema guide for the exact code.
4. Adding Custom JSON-LD Alongside Yoast
Yoast does not prevent you from adding custom JSON-LD. You can add additional schema blocks on top of what Yoast generates. The key rule is to avoid duplicating the same type on the same page — two Article blocks on the same post page will confuse Google.
The cleanest way to add custom schema that Yoast does not cover is to use wp_head in your theme's functions.php, or the "Insert Headers and Footers" plugin to inject JSON-LD into specific page templates:
// functions.php — add Event schema to pages with a specific template
function add_event_schema() {
if ( is_page_template( 'template-event.php' ) ) {
$schema = array(
'@context' => 'https://schema.org',
'@type' => 'Event',
'name' => get_the_title(),
'startDate' => get_post_meta( get_the_ID(), '_event_start', true ),
'location' => array(
'@type' => 'Place',
'name' => get_post_meta( get_the_ID(), '_event_venue', true ),
),
);
echo '<script type="application/ld+json">'
. wp_json_encode( $schema, JSON_UNESCAPED_UNICODE )
. '</script>';
}
}
add_action( 'wp_head', 'add_event_schema' );5. Checking What Yoast Is Actually Outputting
Do not assume Yoast has everything set up correctly just because you have installed it. Many sites have Yoast configured incorrectly for years without realising. Here is how to audit what it is actually outputting:
View source of your homepage. Search for "application/ld+json". You should see a schema graph block. If it is missing, Yoast schema output may be disabled by a setting or conflicting plugin.
Check that the Organization block has a name field with your actual business name. If it is empty or shows "undefined", go fix Site Representation in Yoast settings.
Paste your homepage URL into SchemaValidator.org or the Google Rich Results Test. Check for errors on the Organization, WebSite, and WebPage types.
Open a blog post and view its source. Check the Article block has author.name populated. If it shows "Anonymous" or the WordPress admin username, fix the author profile.
Open Google Search Console → Enhancements. Check the Article, Product, and BreadcrumbList reports for errors. Errors here mean Yoast is outputting invalid schema on your live pages.
6. Yoast Free vs Yoast Premium — Schema Differences
| Schema feature | Free | Premium |
|---|---|---|
| Organization / Person entity graph | ✅ | ✅ |
| Article / BlogPosting on posts | ✅ | ✅ |
| BreadcrumbList | ✅ | ✅ |
| WebSite + SearchAction | ✅ | ✅ |
| Set article type per post | ✅ | ✅ |
| FAQ block with FAQPage schema | ❌ | ✅ |
| How-To block with HowTo schema | ❌ | ✅ |
| Internal linking suggestions | ❌ | ✅ |
| WooCommerce Product schema | ❌ (needs Yoast WooCommerce SEO) | ❌ (separate plugin) |
| Recipe schema | ❌ (not supported) | ❌ (not supported) |
Frequently Asked Questions
Does Yoast SEO Free give me all the schema I need?▼
For basic sites (blogs, company websites), Yoast Free generates a solid entity graph: Organization/Person, WebSite, WebPage, Article, and BreadcrumbList. Where it falls short: WooCommerce product schema requires the paid Yoast WooCommerce SEO plugin; FAQ and HowTo blocks are Premium-only; Recipe schema is not covered at all. Many sites need to supplement with custom JSON-LD or specialist plugins regardless of Yoast tier.
How do I fix an empty Organization name in Yoast schema?▼
Go to WordPress Admin → SEO → General → Site Representation. Under “Organization” settings, ensure you have filled in the organization name (must match your Google Business Profile exactly). Upload your logo. Save. Then verify the fix by viewing page source and searching for application/ld+json — the Organization name should now appear correctly.
Can I use Yoast alongside another schema plugin?▼
With caution. Two schema plugins generating the same @type on the same page creates duplicate schema blocks, which Google may interpret incorrectly. If adding a second plugin (e.g. a Product Reviews schema plugin), ensure it handles a @type that Yoast does not output on that page type. Always validate after installing any new schema plugin to check for conflicts.
Does Yoast Premium’s FAQ block still work after Google’s 2023/2024 FAQ restrictions?▼
The FAQ block still outputs valid FAQPage schema, but Google stopped showing FAQ rich result dropdowns for most commercial and general websites from 2023 onward. The schema itself is not harmful — it still helps Google understand Q&A content structure. But you should not rely on it to produce visible FAQ dropdowns in SERPs for most site types.
How do I add Product star ratings to WooCommerce with Yoast?▼
Even Yoast WooCommerce SEO doesn’t add AggregateRating from WooCommerce native reviews. You need either: (1) Judge.me, Okendo, or Loox (all inject AggregateRating schema from their review data automatically), or (2) a custom functions.php filter that reads WooCommerce review data and generates the AggregateRating block. The custom approach requires development but gives you full control.
Yoast is generating schema with errors in GSC. How do I debug it?▼
First, check which schema type has errors in GSC Enhancements. Then use GSC → URL Inspection on an affected URL and look at the Structured Data tab. Copy the specific JSON-LD block Google parsed and paste it into SchemaValidator.org to see the exact error. Common Yoast issues: empty author.name (fix author profile), missing Organization name (fix Site Representation), or incorrect dateModified (check if a plugin is overriding post dates).
Should I disable Yoast schema on certain page types?▼
Sometimes yes. Yoast generates schema on tag archives, author archives, and 404 pages where schema is not useful. For 404 pages especially, schema is pointless. You can disable Yoast schema for specific page types using the yoast/schema/pieces filter in functions.php, which lets you remove specific schema pieces conditionally. This is an advanced customisation recommended only if you have a schema conflict or specific GSC error on those pages.
Does Yoast support Schema.org types that are not in its built-in list?▼
Yoast’s built-in schema generation covers WebSite, Organization, Person, WebPage, Article, BlogPosting, and some others. For schema types outside this set (Event, Recipe, Course, JobPosting), Yoast does not generate them. You must add custom JSON-LD via functions.php, a dedicated plugin, or a code injection tool. Yoast’s schema graph will not conflict with a separate JSON-LD block for a different @type.
Check What Yoast Is Actually Outputting
Enter your page URL to see a full report of every schema type Yoast has generated, including any errors or missing fields.
Validate Yoast Schema →