All JSON-LD Schema.org types match page content with critical properties present
Why it matters
A JSON-LD block with the wrong @type or missing critical properties like name, description, and url is worse than no schema at all — it tells search engines you have content structure, then fails to describe it. Google's schema-org BlogPosting and Product parsers skip incomplete records for Rich Results eligibility. A product page with a generic Thing type instead of Product receives zero structured-data SERP benefit. Incomplete schema is technical debt that accumulates silently until a Rich Results Test exposes it.
Severity rationale
High because schema type mismatches and missing critical properties directly disqualify pages from Rich Results, eliminating structured-data SERP gains even when the scaffolding is present.
Remediation
Audit each JSON-LD block against the Schema.org type specification. Update incomplete blocks in the relevant page component — app/blog/[slug]/page.tsx for articles, app/products/[slug]/page.tsx for products. At minimum, every object needs name, description, and url:
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Widget Pro",
"description": "High-performance widget for professional use",
"url": "https://yoursite.com/products/widget-pro",
"offers": {
"@type": "Offer",
"price": "29.00",
"priceCurrency": "USD"
}
}
Never use Thing where a specific type applies. The Google Rich Results Test will flag type mismatches; fix them before they compound across pages.
Detection
-
ID:
schema-completeness -
Severity:
high -
What to look for: Enumerate every JSON-LD block found across the site. For each block, verify the
@typeis appropriate for the page content (e.g., Product for product pages, BlogPosting for blog posts, Organization for home page). Count the critical properties present:name,description, andurlmust exist for most schema types. Check that no genericThingtype is used where a more specific type (Product, BlogPosting, Article) would apply. -
Pass criteria: All JSON-LD schema types are content-appropriate for their pages, and at least 3 critical properties (
name,description,url) are present in every schema object. No genericThingtypes where a more specific type applies. Report: "X of Y schema blocks have complete critical properties." -
Fail criteria: Schema type is generic or mismatched (e.g., Product schema on a blog post), or fewer than 3 critical properties are present in any schema object.
-
Do NOT pass when: Schema types technically match but required sub-properties are empty strings or contain only whitespace.
-
Skip (N/A) when: No JSON-LD schema is present on any page (covered by the
jsonld-presentcheck). -
Cross-reference: For schema syntax validation and parsing errors, see the
structured-data-validcheck in the Crawlability category. -
Detail on fail: Name the pages and issues. Example:
"Blog post uses generic 'Thing' type instead of 'BlogPosting'; 'description' property missing from Product schema on /products/item1". -
Remediation: Each schema type has required and recommended properties per the Schema.org specification. Update your JSON-LD blocks in
app/page.tsxor the relevant page component. For BlogPosting:{ "@context": "https://schema.org", "@type": "BlogPosting", "headline": "Article Title", "description": "A brief summary of the article", "datePublished": "2024-01-15", "author": { "@type": "Person", "name": "Author Name" }, "image": "https://yoursite.com/image.jpg" }
External references
- schema-org · BlogPosting — BlogPosting type with required properties
- schema-org · Product — Product type with required properties
Taxons
History
- 2026-04-18·v1.0.0·Initial import from seo-advanced·automated