{"schemaVersion":"1.0","canonicalUrl":"https://www.iamgeorgekelly.com/field-guide/product-identifiers-sku-gtin-variants","markdownUrl":"https://www.iamgeorgekelly.com/field-guide/product-identifiers-sku-gtin-variants/index.md","editorialNote":"AI-assisted research and drafting. Provider-specific claims link to primary sources. Frameworks are editorial proposals; worked examples are illustrative and are not employer performance results.","publication":{"name":"iamgeorgekelly","url":"https://www.iamgeorgekelly.com"},"citation":"George Kelly. SKU vs GTIN: differences, barcodes, and variant IDs iamgeorgekelly. Updated 2026-09-24. https://www.iamgeorgekelly.com/field-guide/product-identifiers-sku-gtin-variants","slug":"product-identifiers-sku-gtin-variants","title":"SKU vs GTIN: differences, barcodes, and variant IDs","description":"Learn the difference between SKU and GTIN, map Shopify variant IDs, and keep product groups separate. Includes a worked example and downloadable identity ledger.","answer":"A SKU identifies an item in your own catalog; a GTIN identifies an assigned trade item across organizations. They are not interchangeable. Keep each sellable variant distinct from its parent group, and verify that any GTIN belongs to that exact product before submitting it.","category":"Product data","status":"published","published":"2026-09-13","updated":"2026-09-24","author":"George Kelly","sections":[{"id":"five-identities","title":"SKU vs GTIN: what is the difference?","paragraphs":["A merchant SKU and a GTIN answer different questions: which item do we manage in this catalog, and which trade item was assigned this global identifier? A Shopify variant ID is another key. Matching strings alone do not prove that these identifiers refer to the same selection.","In Google Merchant Center, a stable SKU can supply the product id when it uniquely identifies that item. It is not a replacement for an assigned gtin. Use a separate id for each variant and an item_group_id for the related group."],"table":{"headers":["Identifier","What to identify","Review before reuse"],"rows":[["Merchant item / SKU","One sellable selection in a defined catalog","Uniqueness, stability, string preservation"],["GTIN","An assigned trade item","Standard, check digit, exact assignment"],["Parent group","Related variants of one product","True sibling relationship; separate child IDs"],["MPN + brand","The manufacturer’s part","Manufacturer evidence; preserve original value"],["Offer identity","The seller’s particular offer","Seller context; avoid price-dependent IDs"]]},"sources":["google-id","google-gtin","shopify-variant"],"download":{"url":"/downloads/product-identity-ledger.json","label":"Download the product identity ledger (JSON, fictional example)"}},{"id":"sku-gtin-common-questions","title":"Can I use a SKU as a GTIN?","paragraphs":["Do not copy your internal SKU into the gtin field to fill a blank. Confirm whether the exact product has an assigned GTIN. If it does, use that value; if you cannot establish it, preserve the unknown and follow the destination’s requirements.","Shopify exposes SKU and barcode as separate variant fields. Inspect the barcode value and the product evidence before mapping it to gtin. A populated field or a passing check digit alone does not establish the correct assignment."],"sources":["google-gtin","shopify-variant"],"links":[{"slug":"product-feed-field-reference","label":"Compare SKU, GTIN, and group fields across destinations","reason":"Use the field reference when turning these identities into a feed mapping."}]},{"id":"sku-gtin-upc-barcode","title":"Is a GTIN the same as a UPC or barcode?","paragraphs":["GTIN is the identifier family. UPC commonly refers to the 12-digit GTIN used in North America; EAN commonly refers to a 13-digit GTIN. A barcode is a machine-readable representation, so the barcode field’s name alone does not establish which identifier it contains.","Keep the assigned identifier as a string, including any leading zeros. A merchant’s internal SKU can differ between stores selling the same trade item. Do not substitute that store-specific code for the manufacturer-assigned GTIN."],"sources":["google-upi","google-gtin"]},{"id":"shopify-source","title":"Inspect the source before choosing a key","paragraphs":["Shopify’s versioned ProductVariant documentation exposes an ID, SKU, barcode, and selected options. Treat these as source fields to investigate. A barcode field may contain something other than an assigned GTIN; a SKU needs a uniqueness check before it becomes your destination identity.","Maintain an explicit mapping table across systems. If an ID changes, retain the relationship to the prior record and investigate the operational effect. Do not regenerate every identifier during routine price or inventory updates."],"sources":["shopify-variant","google-id"]},{"id":"worked-identity-ledger","title":"Follow a fictional two-variant ledger","paragraphs":["Example Workshop makes one demonstration mug in blue and white. Example Retailer sells both. The following values are fabricated identifiers for explaining the mapping; none is a real product assignment. GTIN is deliberately unknown rather than invented."],"table":{"headers":["Selection","Item ID","Parent ID","Manufacturer part","Seller offer"],"rows":[["Blue mug","DEMO-MUG-BLUE","DEMO-MUG","DEMO-350-B","RETAILER-DEMO-BLUE"],["White mug","DEMO-MUG-WHITE","DEMO-MUG","DEMO-350-W","RETAILER-DEMO-WHITE"]]}},{"id":"checksum-is-not-assignment","title":"A correct check digit is not an assignment","paragraphs":["A GTIN check digit is calculated from the preceding digits using alternating weights of three and one from the right. The final digit makes the weighted sum divisible by ten. Valid GTIN formats contain 8, 12, 13, or 14 digits.","An all-zero synthetic string can satisfy that arithmetic. It still provides no evidence of an assigned, authentic trade item. Do not turn a passing checksum into a product identity claim. Confirm assignment and product match using authoritative records.","Keep identifiers as strings from extraction through export. If a spreadsheet has already removed a leading zero, a later string conversion cannot establish what was lost. Return to the original source."],"sources":["openai"]},{"id":"keep-groups-distinct","title":"Keep parents and selected options distinct","paragraphs":["In Google feed terminology, the item group ID ties variants together while each selected product has its own ID. The native OpenAI representation uses group_id alongside item_id, with explicit selected-option fields. Check the destination contract before transforming.","Do not group products merely because their names look similar. A mug and a replacement lid are not automatically variants of one item. Each child needs its own selected values, price, stock, URL, and image evidence."],"sources":["google-group","openai"]},{"id":"decision","title":"Record why a match is accepted or held","paragraphs":["For every identity relationship, retain the source, extraction time, intended entity, and reason for accepting the match. Hold unresolved relationships instead of creating an identifier that looks plausible.","The linked field reference explains destination names. The portability experiment shows a parent/child collision and numeric identifier loss that a format conversion cannot safely repair."],"links":[{"slug":"product-variant-acceptance-test","label":"Test the selected variant on its destination page","reason":"A valid identifier still needs to point to the intended offer."}]}],"sources":[{"id":"openai","title":"OpenAI: Stable product file-upload specification","url":"https://developers.openai.com/commerce/specs/file-upload/products","note":"Native discovery fields and the distinct Google-compatible path. This edition is a selected comparison, not the complete upload contract.","checked":"2026-09-13"},{"id":"shopify-variant","title":"Shopify Admin API 2026-07: ProductVariant","url":"https://shopify.dev/docs/api/admin-graphql/2026-07/objects/ProductVariant","note":"Variant identity, SKU, barcode, selected options, media, inventory, and pricing context. A source field does not prove destination eligibility.","checked":"2026-09-20"},{"id":"google-id","title":"Google Merchant Center: Product ID","url":"https://support.google.com/merchants/answer/6324405?hl=en","note":"Stable distinct product identifiers, including separate variant IDs.","checked":"2026-09-20"},{"id":"google-group","title":"Google Merchant Center: Item group ID","url":"https://support.google.com/merchants/answer/6324507?hl=en","note":"Variant groups, identifying attributes, and matching landing-page values.","checked":"2026-09-13"},{"id":"google-gtin","title":"Google Merchant Center: GTIN","url":"https://support.google.com/merchants/answer/6324461?hl=en","note":"Assigned trade-item identifiers, correct variant matching, and instructions not to guess a missing GTIN. The example ledger deliberately leaves assignment unknown.","checked":"2026-09-24"},{"id":"google-upi","title":"Google Merchant Center: Unique product identifiers","url":"https://support.google.com/merchants/answer/160161?hl=en","note":"Distinguishes store-specific SKUs from manufacturer-assigned identifiers and describes UPC/GTIN-12 and EAN/GTIN-13.","checked":"2026-09-24"}],"related":["product-feed-field-reference","product-feed-portability-experiment","product-variant-acceptance-test"]}