What does a missing recommended property in JSON-LD cost?
Missing recommended property “<name>” for <Type> page
The issue
A JSON-LD object missing its recommended properties passes validation and says less than it could. A product with no offers has no price to show, and an article with no image gives a search engine nothing to show beside it. The block is read, but the result built from it is thinner, and nothing on the page looks wrong.
The cause is usually a template or plugin that fills in the minimum. Required properties make the object valid; recommended ones carry the details a search engine or an AI system would use to describe the thing.
Scope
Each object is checked against its own type, including nested objects of a type probeo knows, such as an Offer inside a Product. A property that is present but empty, or null, counts as missing. A missing recommended property is a warning, so the block still counts as valid.
How to check you have it
- In probeo: the page reports
Missing recommended property "<name>" for <Type>, as a warning, naming the property and the type. Each missing property is its own finding. - By hand: view the page source, find each
<script type="application/ld+json">block, and compare its properties with the list for its type below. - With a tool: Google’s Rich Results Test lists missing optional fields as warnings for the result types it supports.
The fix
Add each recommended property that the page can truthfully fill.
Take the value from what the page already shows: the product’s price and availability, the article’s lead image and last-updated date, the organization’s logo. A recommended property the page has no honest value for is better left out than filled with a placeholder.
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "How to file an annual report",
"author": { "@type": "Person", "name": "Dana Reyes" },
"datePublished": "2026-03-02",
"dateModified": "2026-09-18",
"image": "https://example.com/images/annual-report.jpg",
"publisher": { "@type": "Organization", "name": "Example Co" }
}Done when: every object carries the recommended properties the page has real values for, and the check above comes back clean or lists only properties the page can’t support.
Do not
- Do not fill a recommended property with a placeholder or a value the page doesn’t show.
- Do not add properties to a template that some pages built from it can’t fill.
- Do not treat a warning-free block as proof that a rich result will appear.
Recommended properties by type
Probeo’s list for the common types. It is probeo’s own list, close to what search engines document but not copied from any one of them.
| Type | Recommended |
|---|---|
| Article, BlogPosting | image, dateModified, publisher |
| NewsArticle | dateModified, publisher |
| Product | description, image, offers, aggregateRating, sku, brand |
| Offer | availability, url, validFrom, priceValidUntil |
| Organization | url, logo, sameAs |
| LocalBusiness | telephone, url, openingHours, geo, image, priceRange, aggregateRating |
| Person | url, image, jobTitle, worksFor, sameAs |
| Event | endDate, description, image, url, offers, performer, organizer, eventStatus, eventAttendanceMode |
| Recipe | prepTime, cookTime, totalTime, recipeYield, nutrition, aggregateRating |
| JobPosting | employmentType, validThrough, baseSalary, experienceRequirements |
FAQ
Is a missing recommended property an error?
No. Probeo reports it as a warning, and the block still counts as valid. A missing required property is the error; see add required property.
Should every recommended property be filled?
Only where the page has a true value for it. A recommended property is worth adding when the page shows the information; inventing it to clear a warning makes the markup less trustworthy, not more.
Why does a nested object get its own warnings?
Because it is checked as an object of its own type. An Offer inside a Product is checked against the Offer list, so a product can be complete while its offer is missing availability.
Does probeo check recommended properties for every schema.org type?
Only for the types it knows. A type outside that set is reported as unknown instead; see type.
Which product detects this
Probeo checks this on every page of your site as part of Site Clarity. This page explains one instance; the product tells you every page that has it.