scalpel@labs: ~/glossary/schema-completeness.mdx5 sections

Schema Completeness: Required vs Recommended Properties

Schema completeness measures whether a structured data block includes Google's required properties for its type, and how many recommended properties are also present. Required properties gate rich-result eligibility; recommended ones shape how the rich result renders.

extension: Scalpel SEOupdated: 2026-08-14read_time: 2 min
less schema-completeness.mdx

Why it matters

A schema block missing even one required property isn't a degraded rich result. It's ineligible. Completeness is a binary gate disguised as a checklist. Recommended properties don't block eligibility, but they often control what actually appears: an image, a star rating, a byline. Skip them and you get the barest version of the rich result, even with every required field present.

How it works

Google documents required and recommended fields for each schema type in its Search Gallery. Required properties are the minimum to show a rich result. Missing one, and the markup fails validation. Google won't attempt to render a rich result from it. Recommended properties enhance the display: an Article without a byline is still eligible, but add author and publication date and the rich result gets richer.

Google's Rich Results Test validates your markup and shows which fields are present or missing. Missing a required field? The tool marks the block as ineligible and suggests what to add.

What does not matter

Valid JSON-LD and complete-enough-for-rich-results are different bars. You can have syntactically correct, parseable JSON that omits a required property. Google won't error. It simply won't show a rich result. Adding properties beyond those documented doesn't help or hurt. Google ignores unknown fields.

The order of properties in JSON-LD and microdata doesn't matter. Google looks each property up by name, so rearranging your fields doesn't affect validation.

Code example

Here is a Product schema missing a required field:

// Incomplete: missing offers.availability (required for Product)
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Excellent Boots",
  "image": "https://example.com/boots.jpg",
  "offers": {
    "@type": "Offer",
    "priceCurrency": "USD",
    "price": "99.99"
  }
}
</script>

The Rich Results Test marks this as ineligible because offers.availability is required. Adding it fixes the issue:

// Complete: all required fields present
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Excellent Boots",
  "image": "https://example.com/boots.jpg",
  "offers": {
    "@type": "Offer",
    "priceCurrency": "USD",
    "price": "99.99",
    "availability": "https://schema.org/InStock"
  }
}
</script>

Now the Rich Results Test passes it as eligible. Adding recommended properties like aggregateRating or brand doesn't change eligibility, but enriches the rich result that does appear.

How Scalpel shows it

The Schema tab displays each detected block with a required-vs-recommended properties checklist. Required fields are marked as pass/fail; recommended fields show completion percentage. Blocks missing required properties are flagged as ineligible.