/ โ† JSON-LD Fixes / Missing Required Fields
In this guide
  1. Three different meanings of "required"
  2. Required fields for common types
  3. Why hand-written and plugin markup loses fields
  4. Required fields inside nested objects
  5. Reading the report without chasing noise
  6. The fix, step by step
  7. When the data genuinely does not exist
  8. Keeping required fields filled
  9. Questions and answers

Three different meanings of "required"

Much of the confusion around this finding comes from the word itself. Three different parties can call a property required, and they rarely agree.

Who says soWhat "required" meansWhat happens if it is missing
schema.orgNothing. The vocabulary defines which properties a type can have, but none is mandatory.The block is still valid schema.org. validator.schema.org will not raise an error.
Google (and other consumers)A property a specific search feature needs before it will show an enhanced result, listed in that feature's documentation as required.The page is not eligible for that rich result. Search Console reports an error in the feature's report.
Google, "recommended"A property that improves the result or its chances but is not a condition.A warning, shown as a missing field marked optional. The result can still appear.

This is why two validators can disagree. The Schema Markup Validator checks vocabulary and passes a bare Event with only a name. The Rich Results Test checks Google's feature rules and fails the same block because startDate and location are absent. The JSON Checker reports both layers, so you can see which rule a finding comes from.

๐Ÿ’ก Requirements belong to a feature, not a type. Product has one set of required fields for product snippets and a stricter set for merchant listings, and Article has none at all for Google.

Required fields for common types

These are the properties Google's documentation lists as required for common features at the time of writing. Google revises its guidelines, so treat this as a working checklist and confirm against the feature's own page when something does not add up.

FeatureRequiredOften overlooked
ArticleNone; all properties are recommended.Warnings for image, author and dates are advice, not errors.
Product snippetsname, plus one of offers, review or aggregateRating.A bare Product on non-product pages fails this.
Merchant listingsname, image, offers with price and priceCurrency.Price must sit inside the Offer, not on the Product.
Eventname, startDate, location.For a physical event the Place needs an address.
Recipename, image.Blogs that set no featured image lose eligibility.
JobPostingtitle, description, datePosted, hiringOrganization, jobLocation.Fully remote roles use jobLocationType and applicantLocationRequirements instead of a location.
Local businessname, address.An address written as a single string rather than a PostalAddress.
BreadcrumbitemListElement; each ListItem needs position and name, and item on every crumb except the last.Positions that restart at 0 or skip numbers.
Videoname, thumbnailUrl, uploadDate.Embeds from video platforms that output no date.
Review snippetauthor, reviewRating with ratingValue, and itemReviewed when the review is not nested inside the item.author given as plain text instead of a Person or Organization.

If a type your pages use is not in the table, look up the feature in Google's search gallery documentation. If Google offers no rich result for the type at all, there is nothing "required" in Google's sense, and a missing property is at most a gap in how completely you describe the page.

Why hand-written and plugin markup loses fields

Markup produced by a theme, plugin or custom template rarely omits a field because someone forgot it. It omits it because the data behind it was empty, or because the value was printed somewhere the consumer does not look.

Required fields inside nested objects

Many requirements apply to an object inside the main one. The finding names the top-level type, but the fix is one or two levels down. This Event shows the shape that satisfies the rules for an in-person event, with the required values at the level where they are read:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Event",
  "name": "Spring Pottery Open Studio",
  "startDate": "2027-04-17T10:00:00+01:00",
  "endDate": "2027-04-17T16:00:00+01:00",
  "eventStatus": "https://schema.org/EventScheduled",
  "eventAttendanceMode": "https://schema.org/OfflineEventAttendanceMode",
  "location": {
    "@type": "Place",
    "name": "Millbrook Clay Works",
    "address": {
      "@type": "PostalAddress",
      "streetAddress": "4 Canal Yard",
      "addressLocality": "Millbrook",
      "postalCode": "MB1 2CW",
      "addressCountry": "GB"
    }
  },
  "image": "https://www.example.co.uk/images/open-studio-1200.jpg",
  "offers": {
    "@type": "Offer",
    "price": "0",
    "priceCurrency": "GBP",
    "url": "https://www.example.co.uk/events/open-studio/",
    "availability": "https://schema.org/InStock"
  }
}
</script>

The common nesting mistakes, and where each value should live:

Written asReported asShould be
Product.priceMissing field "offers"Product.offers.price
Event.addressMissing field "location"Event.location.address
Review.ratingMissing field "reviewRating"Review.reviewRating.ratingValue
JobPosting.companyMissing field "hiringOrganization"JobPosting.hiringOrganization.name
ListItem.urlMissing field "item"ListItem.item

If the nested object is referenced by @id rather than written in place, the definition it points to must carry the required values. A reference to an entity that is not defined anywhere is a separate problem, covered in the dangling references guide.

Reading the report without chasing noise

A large site can show hundreds of missing field entries. Most come from a small number of templates, so group before you fix.

  1. Sort errors from warnings. In Google's tools, a required field appears as an error, and a recommended one appears with "(optional)" after the name. Fix errors first; they are the ones that remove eligibility.
  2. Group by template. Take the affected URLs and note which page template each uses: product, post, event, category, location. If every URL in the group shares a template, one change fixes them all.
  3. Group by source. Check whether the failing block comes from the theme, a plugin, an app or a hand-written snippet. The JSON Checker shows each block separately, so you can tell a theme's Product apart from a review app's Product on the same page.
  4. Look at one good page. If some pages on a template pass, compare the source data of a passing page with a failing one. The difference is usually an empty admin field.
โš ๏ธ A page with two blocks of the same type can pass in one and fail in the other. If a plugin prints a complete Product and the theme prints a bare one, the bare one still produces errors. Remove the duplicate rather than completing it; the competing schemas guide covers that choice.

The fix, step by step

Step 1

List the types each template outputs

Pick one representative URL for every page template on the site, such as home, post, product, category, event and contact, and run each through the JSON Checker. Write down every type each template prints and where it comes from. This quickly shows types that should not be there at all, like a Product on a category page, which are better removed than completed with values that do not exist.

Step 2

Separate errors from optional warnings

For each type, split the findings into required fields, which remove rich result eligibility, and recommended fields marked optional, which do not. Check which Google feature each requirement belongs to, because Product snippets and merchant listings need different things. Work on required fields first, and treat recommended ones as later improvements you add only when you have genuine data to support them on every page.

Step 3

Check nesting and property spelling

Before assuming the data is absent, search the block for the value. Check that each property name matches schema.org exactly, including capitals, and that it sits inside the right object: price in the Offer, address in the Place, ratingValue in the Rating. Many missing field reports are fixed by moving or renaming one line in the template, with no new data needed at all.

Step 4

Map each missing field to a data source

For every genuinely missing field, find the admin field, custom field, plugin setting or database column that should supply it. Note whether it is empty for all pages, which points to an unfinished setting, or only for some, which points to incomplete content. Check that the value is also shown on the page, because structured data should describe what visitors can see rather than add facts found nowhere else.

Step 5

Fill the source or drop the type

Where the information exists, complete the source field, plugin setting or template so every page on that template supplies it. Where it does not exist, such as an event with no confirmed date or a product that is not for sale, remove the type or switch to one whose requirements you can meet. Never fill a required field with a placeholder, a fake date or a zero price to silence the error.

Step 6

Retest one page per template

Test the same representative URLs again in the JSON Checker and the Rich Results Test, and confirm the required fields now appear with sensible values. Then open each affected enhancement report in Search Console and choose Validate fix, so Google rechecks the listed pages as it recrawls them. Keep the list of test URLs, because it becomes your regression check after theme, plugin or app updates.

When the data genuinely does not exist

Some missing fields cannot be fixed honestly. Google's guidelines expect structured data to reflect the visible page and real facts, and markup that invents values can lead to a manual action that removes rich results across the site. Better options:

Keeping required fields filled

Questions and answers

1. Why does the Schema Markup Validator pass my block when Google reports a missing field?

The two tools test different things. The Schema Markup Validator checks your markup against the schema.org vocabulary, which has no mandatory properties, so a bare Event with only a name is valid there. Google tests against the rules for its own search features, which do list required properties. A block can therefore be valid schema.org and still ineligible for a rich result. Use the vocabulary check for correctness and Google tools for eligibility.

2. What is the difference between a missing field error and a missing field warning?

An error means a property that the search feature requires is absent, so the page cannot show that rich result until it is added. A warning, shown with the word optional after the field name, means a recommended property is absent. The result can still appear, though it may carry less information. Fix errors first, then add recommended fields only where you have real data for them across every page on the template.

3. Does Article schema have any required fields?

Not for Google. Its Article documentation lists every property as recommended, including headline, image, author and the publish and modified dates. That means missing fields on Article markup produce warnings rather than errors. They are still worth adding, because a clear headline, a real author and accurate dates help search engines and AI systems understand and attribute the content, but no single missing Article property on its own makes the page ineligible.

4. Can I use a placeholder value to clear a required field error?

No. Structured data should describe real information that visitors can also see on the page. A fake date, a zero price, a default image used everywhere or an invented address may silence the validator, but it misrepresents the page and breaks Google guidelines, which can lead to rich results being removed through a manual action. If the real value does not exist, leave the type out or use a type whose requirements you can meet honestly.

5. The value is in my markup, so why is it reported as missing?

Usually because it is in the wrong place or spelt slightly wrong. Property names are case-sensitive, so startdate is not startDate. Values also have to sit inside the object that the rule expects: a price belongs in the Offer rather than on the Product, and an address belongs in the event location rather than on the Event. Search the block for the value, then check both its name and the object it sits inside.

6. Why are my category pages showing missing field errors for Product?

Many themes print a Product block on every template, including categories and collections, where there is no single price, image or offer to describe. Those half-empty blocks trigger missing field errors in the Product snippets report. The fix is to stop printing Product markup on listing pages rather than to fill it in. Mark up each product on its own page, and use ItemList or BreadcrumbList on categories if you want structured data there.

7. How long does it take for Search Console to clear the errors?

Search Console only updates a page once Google recrawls it, which can take anything from a day to a few weeks depending on how often the pages are visited. After fixing the template, test a sample URL live with URL Inspection to confirm the change, then choose Validate fix in the relevant report. Google then works through the listed pages and reports progress, and the error count falls as each page passes.

See which required fields each block is missing

The JSON Checker parses every JSON-LD block on your page, validates the syntax, checks each type against schema.org, verifies required fields, detects conflicting types and runs the result against Google rich result criteria.

Open JSON-LD Fixes โ†’
๐Ÿ’ฌ Got a problem?
Related Guides: All JSON-LD Fixes  ·  Invalid schema.org Types  ·  Dangling References  ·  JSON-LD Schema Guide  ·  Learning Hub

About aiwebpageseo

aiwebpageseo.com is a data-driven SEO and AEO (Answer Engine Optimisation) platform providing a free suite of technical SEO tools. Rather than relying on AI-theorised assumptions, the platform analyses live URL performance, delivering objective diagnostics, page speed metrics, CLS debugging, and site crawl data alongside actionable technical tutorials.