Why Google Still Says Your Product Is Missing Brand or SKU, Even After You Added It
You added the brand. You added the SKU. You ran Google's Rich Results Test again and it still says missing. Before you assume Shopify dropped your change, there's a structural reason this happens specifically on products with variants, and it trips up more than store owners. It tripped up our own scanner too, before we caught it.
The part that's easy to miss: a variant product isn't one block of data
If your product comes in more than one size or color, its structured data isn't a single flat entry. Google's own recommended pattern, published on their developer blog, is to represent it as a ProductGroup: one parent entity for the product as a whole, with a separate Product node underneath it for each individual variant.
That split exists on purpose. Fields that are true for every variant, like the brand and the product name, belong on the parent ProductGroup. Fields that differ per variant, like price, availability, and the SKU or GTIN, belong on each individual Product node underneath.
Where this goes wrong
A tool that only reads the first structured-data block it finds on the page, ours included in an earlier version, sees one of two things depending on which node happens to come first: either the parent ProductGroup, which correctly has no SKU because SKU is a variant-level field, or a single variant Product node, which correctly has no top-level brand because brand lives one level up.
Either way, the tool reports a field as missing that was never missing. It was one level away from where the tool happened to be looking.
We found this exact bug in our own scanner during testing, before it ever reached a live page. The fix was to walk every JSON-LD node on the page, ProductGroup and Product both, and only call a field missing if it's absent from all of them, not just the first one checked.
How to check this on your own store correctly
- Open a product page that has size or color variants.
- View page source and search for
application/ld+json. A variant product usually has more than one of these blocks, or one block containing an array of several nodes, not just one. - Look at the
@typeof each node. You should see oneProductGroupand oneProductentry per variant underneath it. - Check for
brandon the ProductGroup node specifically, not on the individual variants. - Check for
sku,gtin,price, andavailabilityon each individual Product variant node, not on the parent.
If you find the field, just on a different node than you expected, your data is actually fine and no fix is needed. Google's Rich Results Test should confirm this too, since it correctly reads across all the nodes.
When it's actually missing
If a field genuinely isn't on any node, that's a real gap, not a false alarm. For GTIN specifically on Shopify, fill in the Barcode (ISBN, UPC, GTIN, etc.) field under a product's Inventory section, and Shopify writes it into the ProductGroup or Product schema automatically on standard Online Store 2.0 themes. Brand and MPN don't have a dedicated Shopify field, so a genuine gap in either one usually needs a metafield or a small theme edit.
We wrote up the GTIN and MPN gap specifically, with the two-minute fix, in our post on missing GTIN and MPN data.
Run your own product page through Google's Rich Results Test or our free scan at setello.com/scan to see which of your fields are actually missing, and which ones are just sitting on a different node than you'd guess.