Is your markup eligible for a rich result?
Valid JSON-LD is not enough. Google requires specific fields per rich-result type: a Product needs an offer, an Article needs an image and a date. This checks each type against those requirements.
Reads the JSON-LD on the page and checks each type against Google's required fields. Nothing is stored.
Not connected. Sign in and Connect Search Console to read Google's own verdict for this page. The check below still runs from public signals without it.
How this check works
Shipwork parses every JSON-LD block, finds each typed node, and checks it against the fields Google requires for that rich result: Product needs offers, Article needs headline, image and datePublished, FAQPage needs mainEntity, and so on. It reports which types are eligible and which are missing a required field.
What the rich results test checks
The test reads the JSON-LD blocks on one page and finds every node with a type. For each type it looks for the fields a search engine requires for that rich result: Product needs a name and offers, Article, BlogPosting and NewsArticle need a headline, an image and a date, FAQPage needs mainEntity, BreadcrumbList needs itemListElement, and so on through the types it supports.
When a required field is missing, the test checks whether your page already states it elsewhere, such as the title, the canonical URL, the Open Graph image or the published date, and names that value as a suggestion. It never invents a value: a missing price, address or rating stays manual work. It does not send the page to any external service.
How to read an eligibility result
An eligible type means the node carries every field the test knows is required, so it meets the markup bar for that rich result. That is the limit of the claim: eligibility is not the same as being shown. A search engine still decides per query and per site whether to display a rich result.
A finding names the type, the missing fields and, where it can, the value on your page that could fill them. A JSON-LD block that is not valid JSON is reported as an error and ignored entirely, because nothing inside it can be read. The test reads one page's markup, so a clean result there says nothing about the rest of the site.
Common causes and why they matter for search
Themes and plugins emit different schemas, and product markup that omits offers is valid JSON-LD yet ineligible. Articles often miss an image or a published date. Nesting can hide a type, and a node placed outside the main graph may not be found. These are markup gaps rather than content gaps.
Missing required fields keep a page out of eligible rich results, which can reduce how prominently it appears and how many clicks it earns. Well-formed markup alone is not enough. Because the test reads the page's own facts, it can point you to a value you already publish rather than asking you to invent new data.
How to fix ineligible markup
Add the missing fields to the JSON-LD for that type. Use real values from the page and keep them consistent with the visible content: the same price, the same product name, the same dates. For a Product, include an offers object with a price and currency; for an Article, include an image and a date.
On Shopify, the theme and apps can both emit markup, so look for duplicate or conflicting blocks before editing. In WooCommerce, the SEO plugin usually owns the product schema. After changing a template or plugin, rerun the test on a product page and on an article page. Do not add fields you cannot support with visible content.
When to use related markup checks
Use the structured data check when the question is whether your JSON-LD is well formed, and schema coverage to see which page types carry markup at all. This check is narrower: required fields for rich-result eligibility.
For the product case, read product schema, explained and the schema generator when you need to build a block. For returns and shipping fields on a store, see returns and shipping markup.
Questions
How is this different from the structured-data check?
Which types does it check?
Does eligibility guarantee a rich result?
How do I test rich results for my page?
Does passing mean I will get a rich result?
Which schema types are supported?
Why is a Product with no offers not eligible?
Does the test use my live page or a Google tool?
Keep reading
What this reads
- Checks the page's JSON-LD against Google's required fields for each rich-result type.
- Names the fields already present, so you know what is missing.
- Reads the raw markup, the same block a search engine parses.
Cool, just ran an audit and got some insights! Let’s see if I can fix them :)
Whoah! this site is crazy, nothing to roast at all
cool as heck, tried it on my blog and the insights it gave are helpful and not bluff.