Ce que Shopify genere deja (et ce qu'il manque)

Si vous utilisez un theme officiel Shopify recent (Dawn, Sense, Craft, Refresh), votre boutique injecte deja un schema JSON-LD Product basique sur les fiches produits. Vous pouvez le verifier en faisant clic droit, "Code source" et en cherchant application/ld+json dans le HTML.

Le schema par defaut contient generalement :

Ce qui manque, et qui est devenu critique en 2026 pour etre eligible aux recommandations ChatGPT Shopping et Google Shopping :

Important : depuis fin 2024, Google Shopping refuse les produits sans GTIN ni MerchantReturnPolicy dans les annonces gratuites. Pour ChatGPT Shopping, c'est encore plus strict : sans schema complet, votre produit n'est tout simplement pas indexe dans leur corpus produit.

Methode 1 : editer theme.liquid directement

La methode la plus directe. Vous allez ajouter un bloc script type="application/ld+json" dans le template product.liquid ou main-product.liquid de votre theme.

Etape 1 : sauvegarder votre theme

Avant toute modification, dupliquez votre theme. Dans Shopify Admin : Boutique en ligne › Themes › Actions › Dupliquer. Travaillez sur la copie pour eviter de casser votre boutique en production.

Etape 2 : trouver le template produit

Dans le theme dupliquer : Actions › Modifier le code. Cherchez dans la colonne de gauche :

Etape 3 : ajouter le bloc schema enrichi

Tout en bas du fichier (avant la balise de fermeture du dernier bloc), collez le code complet fourni en section 5. Il utilise les variables Liquid Shopify pour remplir dynamiquement les champs.

Astuce : certains themes ont deja un bloc schema par defaut. Pour eviter le doublon, cherchez d'abord "@type": "Product" dans le fichier et soit modifiez le bloc existant, soit ajoutez un schema complementaire (Google et les moteurs IA acceptent plusieurs schemas par page).

Methode 2 : metafields Shopify + injection Liquid

Cette methode est plus propre si vous voulez stocker les valeurs (GTIN, politique de retour) au niveau du produit individuel sans modifier le template pour chaque variation. Idéal si vos politiques de retour varient selon le produit.

Etape 1 : creer les metafield definitions

Dans Shopify Admin : Parametres › Metafields personnalises › Produits › Ajouter une definition. Creez ces champs :

Etape 2 : remplir les valeurs sur les produits

Sur chaque fiche produit, en bas, vous verrez maintenant la section "Metafields". Remplissez les 4 champs pour chaque produit. Vous pouvez aussi le faire en bulk via un export/import CSV.

Etape 3 : injecter dans le schema Liquid

Dans le template produit, utilisez la syntaxe Liquid pour acceder aux metafields :

{% raw %}"gtin13": "{{ product.metafields.seo.gtin }}",
"hasMerchantReturnPolicy": {
  "@type": "MerchantReturnPolicy",
  "returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow",
  "merchantReturnDays": {{ product.metafields.seo.return_days | default: 14 }},
  "returnMethod": "https://schema.org/ReturnByMail",
  "returnFees": "{% if product.metafields.seo.return_free %}https://schema.org/FreeReturn{% else %}https://schema.org/RestockingFees{% endif %}"
}{% endraw %}

Les champs obligatoires en 2026

Voici la liste mise a jour des champs que Google Shopping et ChatGPT Shopping considerent comme obligatoires en 2026 pour qu'un produit soit eligible aux annonces gratuites et aux recommandations IA :

Niveau Product

Niveau Offer

Niveau MerchantReturnPolicy (nouveau en 2025)

Niveau OfferShippingDetails (nouveau en 2025)

Le code complet copy-paste

Voici le bloc complet a coller dans votre main-product.liquid ou product.liquid. Il utilise des metafields pour les valeurs personnalisables avec des fallbacks raisonnables.

{% raw %}<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "{{ product.title | escape }}",
  "description": "{{ product.description | strip_html | strip_newlines | escape }}",
  "image": [
    {% for img in product.images limit:5 %}
    "https:{{ img | img_url: '1200x' }}"{% unless forloop.last %},{% endunless %}
    {% endfor %}
  ],
  "brand": {
    "@type": "Brand",
    "name": "{{ product.vendor | escape }}"
  },
  "sku": "{{ product.selected_or_first_available_variant.sku }}",
  {% if product.metafields.seo.gtin %}"gtin13": "{{ product.metafields.seo.gtin }}",{% endif %}
  "offers": {
    "@type": "Offer",
    "url": "{{ shop.url }}{{ product.url }}",
    "priceCurrency": "{{ shop.currency }}",
    "price": "{{ product.selected_or_first_available_variant.price | money_without_currency | replace: ',', '.' }}",
    "priceValidUntil": "{{ 'now' | date: '%Y' | plus: 1 }}-12-31",
    "availability": "{% if product.available %}https://schema.org/InStock{% else %}https://schema.org/OutOfStock{% endif %}",
    "itemCondition": "https://schema.org/NewCondition",
    "hasMerchantReturnPolicy": {
      "@type": "MerchantReturnPolicy",
      "applicableCountry": "{{ product.metafields.seo.shipping_country | default: 'FR' }}",
      "returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow",
      "merchantReturnDays": {{ product.metafields.seo.return_days | default: 14 }},
      "returnMethod": "https://schema.org/ReturnByMail",
      "returnFees": "{% if product.metafields.seo.return_free %}https://schema.org/FreeReturn{% else %}https://schema.org/RestockingFees{% endif %}"
    },
    "shippingDetails": {
      "@type": "OfferShippingDetails",
      "shippingRate": {
        "@type": "MonetaryAmount",
        "value": "0",
        "currency": "{{ shop.currency }}"
      },
      "shippingDestination": {
        "@type": "DefinedRegion",
        "addressCountry": "{{ product.metafields.seo.shipping_country | default: 'FR' }}"
      },
      "deliveryTime": {
        "@type": "ShippingDeliveryTime",
        "handlingTime": { "@type": "QuantitativeValue", "minValue": 0, "maxValue": 1, "unitCode": "DAY" },
        "transitTime": { "@type": "QuantitativeValue", "minValue": 2, "maxValue": 5, "unitCode": "DAY" }
      }
    }
  }
}
</script>{% endraw %}

Ce bloc remplit automatiquement tous les champs requis a partir des donnees Shopify natives (prix, stock, images, vendor) et utilise les metafields pour GTIN et politique de retour quand ils sont remplis.

Comment valider votre schema

Une fois le code en place, testez immediatement :

1. Rich Results Test de Google

Allez sur search.google.com/test/rich-results, collez l'URL d'une de vos fiches produits, attendez quelques secondes. L'outil affichera :

2. Schema.org Validator

Plus permissif que Google, validator.schema.org verifie la conformite avec la specification schema.org sans les contraintes Google. Utile pour s'assurer que ChatGPT Shopping et Perplexity Shopping pourront parser votre schema.

3. Google Search Console

Apres deploiement, surveillez l'onglet Amelioration › Produits dans Google Search Console pendant 7 a 14 jours. Google y signale les erreurs detectees sur vos schemas en condition reelle de crawl.

Astuce : les rich snippets n'apparaissent pas immediatement dans les resultats Google. Comptez 2 a 6 semaines apres validation pour voir les premiers snippets enrichis sur vos fiches. Pour ChatGPT Shopping et Perplexity, le delai est plus rapide (quelques jours).

Quand passer a un outil dedie

La methode manuelle fonctionne pour des boutiques de 10 a 100 produits et des marchands a l'aise avec le code. Mais elle a ses limites :

Si votre catalogue depasse 200 produits ou si vous voulez automatiser la generation de FAQ et de descriptions enrichies, un outil dedie comme Seotif fait le travail en quelques minutes au lieu de plusieurs heures.

Schema JSON-LD complet en 1 clic

Seotif genere automatiquement le schema Product + MerchantReturnPolicy + OfferShippingDetails + FAQPage sur chaque fiche produit Shopify, sans editer votre theme.

Essai gratuit — 10 fiches offertes

Si vous prefiez rester en manuel, n'hesitez pas a consulter notre guide complet sur l'optimisation des fiches produits Shopify et notre analyse de comment apparaitre dans ChatGPT Shopping.