Citely
Pricing
Citely
Product
GEO Audit & ScoreAI CitationsFeed ↔ page coherenceAI Merchant feedEnrichmentNLWeb / MCP agents
Solutions
Shopify brandsAgencies & partnersBy industryEnterprise
Resources
BlogGEO guidesGlossaryCase studiesChangelogDocs
Pricing
Log inSign Up
← BlogShopify

schema.org/Product: the guide for Shopify merchants

Which data to structure, and how to expose it cleanly to engines.

Citely TeamJun 18, 202610 min

Your Shopify theme shows a nice visual, a price, a buy button. But what answer engines read is another, invisible layer: `schema.org/Product` markup. It's what turns your page into data an AI can understand, compare and cite. And on most stores, that layer is incomplete — or missing. Here's what to structure, and how.

Why markup matters (especially for AI)

Structured markup isn't new: Google has used it for years for rich results (stars, price, availability). But with answer engines it takes on new importance. A model that must answer "which running shoes for wide feet?" needs named facts — size, fit, use — not a marketing paragraph. schema.org/Product is the standard format to give it those.

What Shopify already exposes — and what's missing

Good news: most recent Shopify themes already inject basic Product markup. Bad news: it's often minimal. You get the name, the price, sometimes availability — but rarely the brand, almost never the GTIN, and hardly ever the decisive attributes of your industry. Variants make it worse: a product with several sizes or colors is often poorly represented.

  • Often present: name, offers.price, sometimes availability.
  • Often missing: brand, gtin/mpn, a clean image, a factual description.
  • Almost always absent: additionalProperty (your decisive product attributes).

The properties that really matter

Identity: name, brand, gtin

These three fields anchor your product in reality. The name should be descriptive (not "Product 1"), brand associates you with your brand, and gtin (EAN/UPC barcode) is the universal identifier linking your product to comparisons, databases and other merchants. Without a GTIN, your product floats alone, hard to match.

Decisive attributes: additionalProperty

This is the most neglected field, and the most powerful for GEO. additionalProperty holds free name/value pairs: "Skin type: sensitive", "Fit: wide", "Compatibility: USB-C". These are exactly the constraints a shopper puts in a question. Fill in the 3 to 6 attributes that decide the purchase in your industry, and you give the model something to cite.

The offer: price, priceCurrency, availability

Price and availability are volatile but essential facts: an AI avoids recommending a sold-out product or one with an uncertain price. Above all, make sure they're consistent with your feed and visible page — a contradiction here is costly (see below).

JSON-LD · Product complet
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Chaussure de running — Pieds larges",
  "brand": { "@type": "Brand", "name": "Northpeak" },
  "gtin13": "0123456789012",
  "mpn": "NP-RUN-WIDE-42",
  "image": "https://cdn.example.com/run-wide.jpg",
  "description": "Chaussure de running, chaussant large, amorti…",
  "additionalProperty": [
    { "@type": "PropertyValue", "name": "Chaussant", "value": "Large" },
    { "@type": "PropertyValue", "name": "Usage", "value": "Route" },
    { "@type": "PropertyValue", "name": "Drop", "value": "8 mm" }
  ],
  "offers": {
    "@type": "Offer",
    "price": "89.00",
    "priceCurrency": "EUR",
    "availability": "https://schema.org/InStock",
    "itemCondition": "https://schema.org/NewCondition"
  }
}

This block directly answers "running shoe for wide feet, road, under €100?": fit, use, price and availability are explicit. That's the difference between being citable and being invisible.

The Shopify case: metafields over theme

On Shopify, two paths to enrich markup. Editing the theme (Liquid): doable, but fragile — every theme update can break your additions, and handling variants quickly becomes a headache. Or going through metafields: you store structured attributes on the product, and an app injects them as JSON-LD without touching the visible theme. It's more robust, additive, and survives theme changes.

That's the approach Citely favors: enriching the machine layer via metafields, from your real data, without modifying your storefront. But the principle holds whatever the tool: separate the presentation layer from the data layer.

Validating your markup

  1. Google's Rich Results Test: checks that your Product is read correctly and flags errors.
  2. Schema Markup Validator (schema.org): validates conformance to the vocabulary.
  3. Check consistency: the JSON-LD price and stock must match the page and the feed.
A nice theme seduces the shopper. Good markup convinces the machine.

Common mistakes

  • Duplicate markup: theme + app each injecting a Product, creating conflicts.
  • Price without currency or in a non-normalized format.
  • Missing GTIN when it exists on the packaging.
  • Attributes in free text in the description instead of usable additionalProperty.

Make your pages AI-citable.

Citely structures and measures your catalog from your real data — never invented.