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 :
@type: Productavec name, description, image, url- Un
Offeravec price, priceCurrency, availability - Le
brand(souvent le nom de la boutique, pas la vraie marque)
Ce qui manque, et qui est devenu critique en 2026 pour etre eligible aux recommandations ChatGPT Shopping et Google Shopping :
- GTIN / barcode : code-barres unique du produit (EAN, UPC, ISBN)
- MerchantReturnPolicy : delai de retour, gratuit ou payant, conditions
- OfferShippingDetails : delais de livraison, zones, frais
- FAQPage : 3 a 5 questions / reponses frequentes sur le produit
- aggregateRating : note moyenne et nombre d'avis (si vous en avez)
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 :
- Pour les themes recents (Dawn et derives) :
sections/main-product.liquid - Pour les themes anciens :
templates/product.liquid
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.
"@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 :
seo.gtin(type : Single line text) - le code-barresseo.return_days(type : Integer) - delai de retour en joursseo.return_free(type : Boolean) - retour gratuit ou nonseo.shipping_country(type : Single line text) - pays de livraison principal
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
name- nom du produit (60-70 caracteres ideal)description- description riche (250+ mots)image- URL absolue de l'image principale (HD, fond blanc preferable)brand- marque reelle du produit (pas le nom de votre boutique)gtin13ougtin8ougtin14- code-barressku- reference internecategory- categorie Google Taxonomy (ex : "Apparel & Accessories > Clothing > Shirts & Tops")
Niveau Offer
price- prix en chiffre (pas de symbole)priceCurrency- code ISO 4217 (EUR, USD)availability-https://schema.org/InStockou OutOfStockitemCondition-https://schema.org/NewConditionpriceValidUntil- date de fin de validite du prix (recommande pour rich snippets)
Niveau MerchantReturnPolicy (nouveau en 2025)
returnPolicyCategory- politique de retourmerchantReturnDays- delai en jours (14 minimum en UE)returnMethod- mode de retour (ReturnByMail le plus courant)returnFees- FreeReturn ou RestockingFees
Niveau OfferShippingDetails (nouveau en 2025)
shippingRate- frais de port (objet avec value et currency)shippingDestination- pays ciblesdeliveryTime- delais min/max de livraison
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 :
- Le type detecte (Product, Offer, etc.)
- Les champs obligatoires presents / manquants
- Les warnings (champs recommandes manquants)
- L'apercu Rich Snippet potentiel dans Google
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.
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 :
- Maintenance : a chaque changement de theme, vous devez re-appliquer les modifications
- Variations : chaque variant produit peut necessiter un schema specifique (taille, couleur, prix different)
- FAQ automatique : generer 3-5 questions/reponses pertinentes par produit prend du temps
- Mise a jour des standards : les exigences Google evoluent (nouveaux champs en 2025, en 2026, etc.)
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 offertesSi 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.