# All JSON-LD Schema.org types match page content with critical properties present

- **Pattern:** `ab-002485` (`seo-advanced.structured-data.schema-completeness`)
- **Severity:** high
- **Lifecycle:** active
- **Last modified:** 2026-04-18
- **Canonical URL:** https://auditbuffet.com/patterns/ab-002485
- **License:** CC-BY-4.0 — attribute to AuditBuffet Pattern Catalog (https://auditbuffet.com/patterns/ab-002485)

## 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`:

```json
{
  "@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 `@type` is 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`, and `url` must exist for most schema types. Check that no generic `Thing` type 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 generic `Thing` types 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-present` check).
- **Cross-reference:** For schema syntax validation and parsing errors, see the `structured-data-valid` check 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.tsx` or the relevant page component. For BlogPosting:

  ```json
  {
    "@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
- schema-org Product

Taxons: findability

HTML version: https://auditbuffet.com/patterns/ab-002485
