The failure
The observed Woobles Product entities used Beginner as brand. That describes skill level, not the commercial brand. Rhode’s two Glazing Milk sizes exposed different offers with the same observed SKU. Both patterns make entity matching harder.
Identifier ownership
| Identifier | Correct scope | Bad substitute |
|---|---|---|
| brand/vendor | product manufacturer or merchant brand | audience, skill level, collection |
| SKU | sellable inventory variant | product title copied to every variant |
| GTIN/barcode | globally assigned trade item | invented number |
| Shopify variant ID | internal stable variant relation | displayed as a customer SKU |
| MPN | manufacturer part number | Shopify product ID |
Shopify path
Products → select product → review Vendor, Category, Variants, SKU, and Barcode.
Move audience, skill level, fit, and compatibility into typed metafields. Do not invent a GTIN for a product that has none.
Public check
curl -sSL https://example.com/products/item -o product.html
rg -n '"brand"|"sku"|"gtin|"mpn"|variant=' product.html
Compare every identifier with the selected variant. If size variants use separate inventory records, each should have a recoverable SKU.
Expected result
- brand matches visible merchant/manufacturer identity
- each sellable variant has a stable SKU where the business maintains one
- GTIN and MPN appear only when real
- product category is not stored as brand
- offer URL selects the corresponding variant
Failure output
Variant 44178822004974: size 4.2 oz, SKU RHS00025-SC1
Variant 47921600856302: size 1.7 oz, SKU RHS00025-SC1
Result: needs review; distinct offers share observed SKU
Rollback
Export product records before bulk edits. SKU changes can affect fulfilment, feeds, ERP mapping, and returns; restore from the export if downstream mappings fail.
Community discussion
Add to the article
Ask a technical question, share a storefront result, or challenge a conclusion with evidence.