Short answer. Most missing-field messages on a Shopify product are the expected output of a stock theme: Shopify's markup filter emits a fixed, fairly small set of properties, and everything outside it is reported absent forever. But the advice that warnings can simply be ignored only holds for one of Google's two product result types. Merchant listings require name, image and an offer with a price above zero β and a missing required property there makes the item invalid, not merely plainer.
Open the structured data section of Search Console on almost any Shopify store and you will find a list of messages that has not changed in months. Missing field "priceValidUntil". Missing field "shippingDetails". Missing field "aggregateRating". The advice attached to all of them tends to be the same. Reading the first page of results for this problem on 12 September 2026 β two theme vendors' help centres, several community threads and a handful of practitioner posts β the recurring answer is that these are warnings, that warnings are not errors, and that they can be ignored.
That advice is half right, and the half that is wrong is the expensive half. This page is the reference we kept needing: what each family of message actually means on a Shopify store, which ones are structural and will never go away, which ones mean something on your store changed, and how to tell the two apart in about five minutes.
The distinction the report is actually making
The document that defines this report does not sort the messages by severity labels. It sorts them by consequence. Google's rich result report overview puts non-critical issues in a table called "Improve item appearance" and critical ones under "Why items are invalid", and defines the dividing line in one sentence: "A valid item is an item that doesn't have any critical issues and can appear on Google as a rich result." An invalid item, in the same document's words, "has at least one critical issue preventing it from appearing as a rich result."
So the real question is never "is this an error or a warning". It is whether Google counted the item as invalid. That is printed in the report, next to the message, and it is the single most useful thing on the screen β and it is the thing every "you can ignore warnings" answer skips past.
Google also publishes a reference list of the messages this report can show, with a remedy for each. It is written for the whole web rather than for any platform: it gives the generic meaning of Missing field "property name" and does not mention Shopify at all. Which is the gap this page exists to fill, because on Shopify a good number of those properties are absent by design.
The same message, two verdicts
Here is the part that makes "ignore warnings" unsafe as a general rule. Google evaluates a product page against more than one result type, and they do not ask for the same things.
For product snippets, the required set is small: name, plus one of review, aggregateRating or offers. image appears in that page's examples but not in its required or recommended property tables at all.
For merchant listings, the bar is higher. name, image and a nested Offer are required; inside that offer, price and priceCurrency are required. The page states the two constraints that separate it from product snippets in as many words: "Product snippets accept an Offer or AggregateOffer but merchant listings require an Offer", and "Unlike product snippets, merchant listing experiences require a price greater than zero."
Those two requirement tables are Google's own, and they disagree about image. So Missing field "image" is not a message with a fixed severity. It is a message whose severity depends on which result you were hoping for β and a Shopify merchant who runs Shopping is hoping for the stricter one.
This is not hypothetical. A merchant posted the exact shape of it to the Shopify community on 30 November 2023: Merchant Listing > "1 invalid item detected" > Missing field "image", across almost every product on the store. A second merchant reported the same thing in March 2024. The thread ends without an answer. A reader who had been told that missing fields are optional had no reason to treat that one differently, and the report was telling them the item was invalid the whole time.
If you are not sure which of the two reports you are looking at, that is worth settling first β we covered the split in merchant listings or product snippets: which Search Console report your Shopify products are in.
Want to know what your product pages actually serve Google right now? We parse the structured data on every product URL in your public catalog and flag the properties that are missing or malformed β read-only, no admin access, about 2 minutes. β free scan
What a stock Shopify theme actually emits
Everything below rests on one documented fact, and it is worth reading before the tables. Shopify's structured_data Liquid filter β the single line that generates product markup in Dawn and most themes built on it β emits a fixed set of keys:
@context, @id, @type, brand, category, description,
image, name, offers, url
offers: @id, @type, availability, price, priceCurrency, url
The same reference also documents that a product is output as a Product when it has no variants and as a ProductGroup when it has one or more.
That list is the whole diagnostic. A property outside it was never going to be there, so its absence says nothing about your store. A property inside it that Google reports as missing means the markup Google parsed is not the markup a stock theme would have produced β and that is a finding.
Group A: messages that are normal on a stock Shopify store
These name properties the filter does not emit. They will be reported on a healthy store, indefinitely, and none of them is required for either result type.
| Message | What it means | Where the fix lives |
|---|---|---|
Missing field "priceValidUntil" |
No expiry is declared for the price, so Google decides for itself how long to treat it as current. | Theme markup, or leave it β what a stale priceValidUntil actually does. |
Missing field "shippingDetails"Missing field "hasMerchantReturnPolicy" |
Shipping and return terms are not declared in the page markup. | Usually not the theme at all β Google reads settings before markup. |
Missing field "aggregateRating"Missing field "review" |
No review data is present on the page. | A review app, not the theme β and see why stars disappear once you have one. |
No global identifier provided (e.g., gtin, mpn, isbn) |
No product identifier is declared. Recommended, not required, for both result types. | The product record β and Merchant Center limits reach separately for it. |
Two of these deserve a caveat rather than a shrug. Shipping and returns are the case where fixing the theme can change nothing at all, because Google publishes an order of precedence that puts Merchant Center and Search Console settings above page markup β the detail is in the dedicated page, and it is the reason the pasted-snippet fix so often fails. And identifiers are recommended for rich results while still affecting how far Merchant Center will distribute the product, which is a different system making a different decision about the same absent value.
Group B: messages that mean something on your store broke
These name properties that a stock theme does emit. If Google reports one missing, the served page is not producing what the filter would have produced, and on merchant listings name, image, offers, price and priceCurrency are required β so the item is invalid, not plainer.
Missing field "image"β required for merchant listings. Either the product has no image assigned in the admin, or the block Google parsed is not the theme's.Missing field "name"β required for both result types. The filter always emits it, so its absence means the block Google parsed is not the one the filter produced.Missing field "offers","price"or"priceCurrency"β required for merchant listings, and for product snippetsoffersis one of the three properties you must have at least one of. Before treating this one as broken, check whether the product has variants: the filter outputs aProductGroupin that case, and where the offer sits differs from the single-product shape most advice assumes. We went through that in the report comparison.Missing field "description"β emitted by the filter, so its absence points at a description field left empty on that product. Recommended rather than required, so this one costs appearance rather than eligibility.
The pattern across all four is the same: the product looks completely normal in the admin β active, priced, photographed, published β while the page it serves is missing something Google requires.
Group C: messages about the shape of a value, not its absence
The third family does not say a property is missing. It says the value that is there cannot be used β Invalid ISO 4217 currency code, Value in field "property name" must be positive, Duplicate field "property name", Invalid enum value in property "property name", Invalid URL in field "property name".
These name a value the structured_data filter would not produce: it builds each value from the product record, so a currency code, a price or an enumerated value it emits is already well formed. A malformed one points at a different source on the same page β an app block, a hand-rolled snippet in the theme, or a migration that left an old block sitting next to a new one. Two of this family already have their own pages here:
- Unparsable structured data β the block did not parse at all, which is the most severe version of this family: Google discards the whole thing silently.
- A price of zero reaching Google β the Merchant Center side of the same defect, and the case where "must be positive" and the merchant listing floor of a price above zero meet.
Across full-catalog scans of more than 90,000 Shopify product pages, missing or invalid product schema is among the most common critical findings we see. It is not an exotic failure, and it is not usually the merchant's doing.
How to check your own store in five minutes
- Note which report the message came from. Open it in Search Console and read two things: Merchant listings or Product snippets, and whether the item is counted as invalid or only flagged for appearance. Everything else follows from those two facts.
- Read the markup Google actually receives. Run one affected URL through the Rich Results Test and read the parsed output rather than your theme source. Count the blocks while you are there: more than one product block on the page is a common reason the parsed markup differs from what the theme was supposed to produce.
- Compare the named property against the filter's key list. Outside the list from the section above, the absence is structural. Inside it, something removed it.
- Fix the structural ones at their real source. Shipping and returns can be supplied through Merchant Center or Search Console settings, which Google reads ahead of your markup. Identifiers live on the product record. Review data comes from a review app.
- Treat a missing required property as a broken page. If
name,image,offers,priceorpriceCurrencyis absent, find the block that dropped it and repair that block. Adding a second block on top is how stores end up in Group C.
One caution on reading raw HTML. If you check by fetching the page source rather than through the Rich Results Test, remember that markup injected by JavaScript can be absent from the fetch and present in Google's rendered view, or the reverse. A plain source view is not proof either way β which is the same trap behind the phantom noindex, where the admin and the served page disagree about something equally basic.
Why this list comes back
Group A is stable. Once you know which properties your theme will never emit, those messages stop being information and you can stop reading them.
Group B and Group C are not stable, and that is the whole argument for watching them rather than auditing them. Installing a review app adds a block. A theme update replaces the file holding a hand-rolled snippet. Retiring the last variant of a product changes whether the page declares a Product or a ProductGroup. Removing a photo during ordinary merchandising drops a property that merchant listings require; emptying a description drops one they only recommend. None of these is an error anyone makes; they are routine store operations, and each one can change what the page declares to Google.
What makes it expensive is that nothing announces the change. Search Console reports structured data on its own crawl schedule, so the report you read today describes pages Google fetched some time ago. The Shopify admin has no screen at all for the shape of your markup. The product looks fine in every place you would think to look, which is exactly the shape of failure the rest of this cluster documents, and the reason a merchant can read "warnings are optional" in March and still be invalid in September.
StoreCanary does not tell you which Search Console report a page appears in β that number is Google's and we do not have it. What we do is read the structured data your product URLs actually serve, on your whole catalog rather than a sample, and tell you when a property that was there yesterday is not there today.
Next in this cluster
- Merchant listings or product snippets: which report your Shopify products are in
- shippingDetails and hasMerchantReturnPolicy: why the theme fix may change nothing
- priceValidUntil on Shopify: why Google keeps showing the wrong price
- "Unparsable structured data" in Search Console: the Shopify causes
- Every status in Search Console's Page indexing report, explained
Not sure what your product pages are serving Google right now?
Scan my store for free