---
title: "Shopify Liquid et SEO : snippets utiles pour thèmes (2026)"
description: "5 zones SEO de Shopify vivent dans Liquid, pas dans l"
canonical: https://lionelz.com/fr/blog/shopify-liquid-seo/
lang: fr
---

SEO

# Shopify Liquid et SEO : snippets utiles pour thèmes (2026)

5 zones SEO de Shopify vivent dans Liquid, pas dans l'admin. Snippets pour meta tags, JSON-LD, hreflang et OG qui scalent à des milliers d'URL.

**Lionel Fenestraz** · 1 juin 2026 · 9 min de lecture · Mis à jour : juin 2026 Google Partner · CXL Certified Optimizer · plus de 7 ans sur Google Ads et Meta Ads

![Éditeur de code montrant des snippets Liquid dans un fichier theme.liquid de Shopify](https://lionelz.com/images/blog/2026/05/shopify-seo-ecommerce-pillar.webp)

Dans cet article

[Qu’est-ce qui rend Liquid pertinent pour le SEO ?](#quest-ce-qui-rend-liquid-pertinent-pour-le-seo) [Comment générer title, description et canonical dynamiques en Liquid ?](#comment-générer-title-description-et-canonical-dynamiques-en-liquid) [Comment injecter du JSON-LD à grande échelle avec Liquid ?](#comment-injecter-du-json-ld-à-grande-échelle-avec-liquid) [Comment gérer hreflang dans Shopify avec Liquid ?](#comment-gérer-hreflang-dans-shopify-avec-liquid) [Comment configurer un Open Graph dynamique en Liquid ?](#comment-configurer-un-open-graph-dynamique-en-liquid) [Quelles erreurs dans theme.liquid blessent le plus le SEO ?](#quelles-erreurs-dans-themeliquid-blessent-le-plus-le-seo) [Questions fréquentes](#questions-fréquentes) [Sources](#sources)

Dans cet article

[Qu’est-ce qui rend Liquid pertinent pour le SEO ?](#quest-ce-qui-rend-liquid-pertinent-pour-le-seo)[Comment générer title, description et canonical dynamiques en Liquid ?](#comment-générer-title-description-et-canonical-dynamiques-en-liquid)[Comment injecter du JSON-LD à grande échelle avec Liquid ?](#comment-injecter-du-json-ld-à-grande-échelle-avec-liquid)[Comment gérer hreflang dans Shopify avec Liquid ?](#comment-gérer-hreflang-dans-shopify-avec-liquid)[Comment configurer un Open Graph dynamique en Liquid ?](#comment-configurer-un-open-graph-dynamique-en-liquid)[Quelles erreurs dans theme.liquid blessent le plus le SEO ?](#quelles-erreurs-dans-themeliquid-blessent-le-plus-le-seo)[Questions fréquentes](#questions-fréquentes)[Sources](#sources)

Revue gratuite · 30 min

Je passe en revue votre site avec vous et je vous dis quoi corriger en premier.

[Réserver un appel →](https://calendar.app.google/G3jeffmFY52dg38GA)

Liquid est ce qui sépare un Shopify avec un SEO improvisé d’un Shopify qui passe bien à l’échelle sur des milliers d’URL. L’interface d’admin de Shopify n’expose qu’une partie de ce que le thème contrôle : les title tags, meta descriptions, canonicals, schema.org, hreflang et Open Graph vivent dans Liquid, pas dans le panneau d’administration. Toucher à ces fichiers fait la différence entre un thème générique et un thème optimisé.

Ce guide rassemble les snippets Liquid que j’utilise le plus souvent quand j’audite ou que je réécris le SEO technique d’un Shopify. Chacun résout un problème concret que l’UI Shopify ne permet pas de corriger correctement.

> **En 30 secondes :**
> 
> -   Liquid est le langage de templates open-source de Shopify, en production depuis 2006 et écrit en Ruby ([Shopify Liquid, 2024](https://shopify.github.io/liquid/))
> -   5 domaines SEO clés dépendent de Liquid : meta tags dynamiques, schema.org, hreflang, Open Graph et robots customisé
> -   Shopify expose des dizaines d’objets Liquid (product, collection, shop, page, blog, article, request, canonical\_url…) qu’on peut combiner pour du SEO dynamique ([Shopify Liquid Reference, 2025](https://shopify.dev/docs/api/liquid/objects))
> -   Le fichier `theme.liquid` est le plus rentable à optimiser : les changements se propagent à toutes les URL
> -   Les snippets de cet article nécessitent l’accès au theme code editor (Online Store > Themes > Edit code) ou de travailler sur un thème custom

---

## Qu’est-ce qui rend Liquid pertinent pour le SEO ?

Liquid est le langage de templates que Shopify utilise pour rendre du HTML dynamiquement. Quand un utilisateur ouvre une page produit, Shopify exécute le thème avec l’objet `product` peuplé et renvoie du HTML statique au navigateur. Pour le SEO, cela signifie que toutes les balises que Google et les crawlers IA lisent sont construites dans Liquid avant le rendu.

Contrairement à d’autres CMS, Shopify n’a pas de plugins SEO universels. Yoast n’existe pas ici. Les apps SEO de Shopify (SEO Manager, Smart SEO, etc.) sont des wrappers qui injectent du code dans le thème. Si vous comprenez Liquid, vous n’avez pas besoin de l’app, et vous obtenez presque toujours un contrôle plus fin.

Les objets Liquid que j’utilise le plus en SEO technique sont `product`, `collection`, `shop`, `page`, `request.canonical_url`, `current_page` et `localization`. Combinés avec les filtres comme `default`, `escape`, `strip_html`, `truncate` et `image_url`, ils couvrent 90 % des besoins.

---

## Comment générer title, description et canonical dynamiques en Liquid ?

Les templates par défaut de Shopify génèrent des titres génériques du type « Produit X – Ma Boutique ». Ça gaspille l’espace SERP. Le snippet suivant, placé dans le `<head>` de `theme.liquid`, génère des titres optimisés avec des fallbacks explicites par template :

```
{% if template contains 'product' %}
  <title>{{ product.title }} – {{ product.vendor }} | {{ shop.name }}</title>
  <meta name="description" content="{{ product.description | strip_html | truncate: 155 }}">
{% elsif template contains 'collection' %}
  <title>{{ collection.title }} | {{ shop.name }}</title>
  <meta name="description" content="{{ collection.description | strip_html | default: collection.title | truncate: 155 }}">
{% elsif template == 'index' %}
  <title>{{ shop.name }} – {{ shop.description }}</title>
  <meta name="description" content="{{ shop.description | truncate: 155 }}">
{% else %}
  <title>{{ page_title }} | {{ shop.name }}</title>
  <meta name="description" content="{{ page_description | default: shop.description | truncate: 155 }}">
{% endif %}

<link rel="canonical" href="{{ canonical_url }}">
```

Trois détails importants ici. D’abord, le filtre `strip_html` évite que du HTML de l’éditeur enrichi pollue la meta description. Ensuite, `truncate: 155` garde la description dans la limite SERP. Enfin, `{{ canonical_url }}` est la variable native de Shopify et respecte automatiquement le domaine principal et les paramètres UTM exclus, donc vous n’avez pas à la construire manuellement.

---

## Comment injecter du JSON-LD à grande échelle avec Liquid ?

Le schema.org dans Shopify est l’un des endroits où on perd le plus de trafic de recherche enrichie. La plupart des thèmes incluent un Product schema basique, mais il manque BreadcrumbList, FAQ et Organization. Le snippet suivant, dans un bloc `{% if template contains 'product' %}` dans le head, couvre le cas produit :

```
{% if template contains 'product' %}
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": {{ product.title | json }},
  "image": {{ product.featured_image | image_url: width: 1200 | prepend: 'https:' | json }},
  "description": {{ product.description | strip_html | json }},
  "sku": {{ product.selected_or_first_available_variant.sku | json }},
  "brand": {
    "@type": "Brand",
    "name": {{ product.vendor | json }}
  },
  "offers": {
    "@type": "Offer",
    "url": {{ shop.url | append: product.url | json }},
    "priceCurrency": {{ shop.currency | json }},
    "price": {{ product.selected_or_first_available_variant.price | money_without_currency | replace: ',', '.' | json }},
    "availability": "{% if product.available %}https://schema.org/InStock{% else %}https://schema.org/OutOfStock{% endif %}"
  }
}
</script>
{% endif %}
```

Qu’est-ce qui rend ce snippet différent de la sortie par défaut de Shopify ? Le filtre `| json`. Il échappe les caractères spéciaux (guillemets, sauts de ligne, accents) qui sinon casseraient le JSON-LD. Sans ce filtre, une description avec une apostrophe libre laisse le schema invalide et Google arrête de le lire. Si vous voulez approfondir comment combiner Product, BreadcrumbList et FAQ avec le même pattern, j’ai écrit un guide dédié sur [le schema markup dans Shopify](https://lionelz.com/fr/blog/schema-markup-shopify/).

**Quand le schema échoue en silence.** Beaucoup de boutiques ont un schema mal formé et ne le savent pas parce que le preview dans Google Rich Results Test semble correct. L’erreur fréquente : prix avec une virgule au lieu d’un point (`"price": "29,99"` casse, `"price": "29.99"` fonctionne). Le filtre `replace: ',', '.'` du snippet évite cette erreur.

---

## Comment gérer hreflang dans Shopify avec Liquid ?

Shopify Markets a produit la plus grande amélioration SEO multi-langue depuis des années, mais les balises hreflang automatiques ne sont pas toujours correctes, surtout quand on a des domaines différents par marché. Le snippet suivant dans `theme.liquid` génère un hreflang dynamique à partir de l’objet `localization` :

```
{% if localization.available_languages.size > 1 or localization.available_countries.size > 1 %}
  {% for language in localization.available_languages %}
    <link rel="alternate"
          hreflang="{{ language.iso_code }}"
          href="https://{{ shop.domain }}/{{ language.iso_code }}{{ canonical_url | remove_first: shop.url }}">
  {% endfor %}
  <link rel="alternate" hreflang="x-default" href="{{ canonical_url }}">
{% endif %}
```

Trois règles que je vois violer à chaque audit d’un Shopify international. Une : chaque URL traduite doit avoir un hreflang **bidirectionnel** (fr ↔ en, pas seulement fr → en). La boucle `for` résout ça. Deux : la balise `x-default` est obligatoire si plusieurs langues existent. Trois : l’`iso_code` doit être valide (`en-GB`, `en-US`, pas `en-UK` ni `english`). L’objet `language` de Shopify renvoie des codes valides par défaut.

Si votre boutique utilise des sous-domaines ou des domaines séparés par marché plutôt que des sous-répertoires, le snippet ci-dessus ne fonctionne pas — il faut mapper chaque marché à son domaine dans un bloc `case/when`. Je couvre ça plus en détail dans [Shopify SEO pour ecommerce 2026](https://lionelz.com/fr/blog/shopify-seo-ecommerce-2026/).

---

## Comment configurer un Open Graph dynamique en Liquid ?

Les cartes Facebook, LinkedIn et les previews WhatsApp dépendent d’Open Graph. Shopify ne génère pas d’OG correct par défaut sur les anciens thèmes. Le snippet :

```
<meta property="og:title" content="{{ page_title | default: shop.name | escape }}">
<meta property="og:description" content="{{ page_description | default: shop.description | escape | truncate: 155 }}">
<meta property="og:url" content="{{ canonical_url }}">
<meta property="og:site_name" content="{{ shop.name | escape }}">
<meta property="og:type" content="{% if template contains 'product' %}product{% elsif template contains 'article' %}article{% else %}website{% endif %}">

{% if template contains 'product' and product.featured_image %}
  <meta property="og:image" content="{{ product.featured_image | image_url: width: 1200 | prepend: 'https:' }}">
  <meta property="og:image:width" content="1200">
  <meta property="og:image:height" content="{{ 1200 | divided_by: product.featured_image.aspect_ratio | round }}">
  <meta property="product:price:amount" content="{{ product.price | money_without_currency }}">
  <meta property="product:price:currency" content="{{ shop.currency }}">
{% elsif settings.share_image %}
  <meta property="og:image" content="{{ settings.share_image | image_url: width: 1200 | prepend: 'https:' }}">
{% endif %}

<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="{{ page_title | default: shop.name | escape }}">
<meta name="twitter:description" content="{{ page_description | default: shop.description | escape | truncate: 155 }}">
```

Le filtre `escape` évite que les guillemets dans le titre cassent le HTML. L’`og:type` change selon le template, ce que LinkedIn et Facebook attendent. La hauteur calculée avec `aspect_ratio` garde la bonne proportion sans recadrage.

---

## Quelles erreurs dans theme.liquid blessent le plus le SEO ?

J’ai audité des dizaines de Shopify et les patterns qui reviennent sont toujours les mêmes. Les cinq plus coûteux :

Le premier, c’est le **filtre `escape` manquant sur les meta tags**. Une seule apostrophe dans `page_title` casse le HTML du head, et j’ai vu des sites perdre les rich snippets pendant des mois à cause exactement de ça. Le second : schema.org dupliqué, quand les apps SEO installent leur propre JSON-LD sans désinstaller celui du thème et que deux schemas `Product` apparaissent sur la même page. Google lit ça comme ambigu et arrête d’afficher le prix dans la SERP.

-   **Canonical pointant vers l’URL avec paramètres de tracking.** L’astuce : utiliser `{{ canonical_url }}` (variable native) au lieu de `{{ request.path }}` ou de la construire manuellement. La variable native exclut déjà les paramètres UTM.
-   **Images sans lazy loading ni attributs `width`/`height`.** Liquid peut générer les deux automatiquement avec le filtre `image_url` et les modificateurs `width`. Faire ça améliore les Core Web Vitals.
-   Et le plus coûteux de tous : **blocs noindex oubliés en production**. Une balise `<meta name="robots" content="noindex">` mise pendant le développement et jamais retirée est la cause numéro un des boutiques qui ne rankent rien après le lancement. Cherchez-la toujours dans un audit initial — plus d’une fois ç’a été le seul vrai problème.

Si vous voulez une revue systématique du theme code avant de toucher à quoi que ce soit, un [audit SEO technique de Shopify](https://lionelz.com/fr/audit-seo/) économise des heures de tests. La plupart des problèmes Liquid se détectent en moins de 30 minutes quand on sait où regarder.

---

## Questions fréquentes

### Faut-il savoir coder pour éditer theme.liquid ?

Éditer des fichiers `.liquid` pour le SEO ne nécessite pas d’être développeur, mais il faut connaître le HTML basique et comprendre la logique Liquid (`{% if %}`, `{% for %}`, filtres). Les snippets de cet article fonctionnent en copier-coller, mais je recommande toujours de **dupliquer le thème avant** (Online Store > Themes > Actions > Duplicate) pour avoir un rollback si quelque chose casse.

### Dans quels fichiers du thème va-t-on travailler ?

La plupart des snippets SEO vont dans `layout/theme.liquid`, à l’intérieur de la section `<head>`. Pour les schemas spécifiques par template, vous pouvez créer un snippet séparé (ex : `snippets/seo-schema.liquid`) et l’appeler avec `{% render 'seo-schema' %}` depuis theme.liquid. Pour du SEO spécifique au produit, les templates `templates/product.liquid` ou `sections/main-product.liquid` sont aussi valables.

### Les apps SEO de Shopify remplacent-elles l’édition de Liquid ?

Seulement partiellement. Les apps comme SEO Manager ou Smart SEO injectent du code dans le thème automatiquement. Elles fonctionnent bien pour les sites sans développeurs, mais limitent la personnalisation. Si votre site a 5 000+ produits, des exigences de schema avancées ou des marchés internationaux avec plusieurs langues, vous allez presque toujours devoir toucher Liquid directement.

### Comment tester que les changements Liquid ne cassent rien ?

Trois étapes avant de publier : (1) utiliser le preview du thème dupliqué, (2) valider le JSON-LD dans [Google Rich Results Test](https://search.google.com/test/rich-results) et [Schema.org Validator](https://validator.schema.org/), et (3) vérifier le `<head>` avec view-source sur un produit, une collection et la home. Si vous avez Search Console connecté, regardez la section Enhancements 1 à 2 semaines plus tard pour des erreurs nouvelles.

### Et Shopify 2.0 et les thèmes Online Store 2.0 ?

Les thèmes Online Store 2.0 (Dawn, Sense, Refresh, etc.) utilisent des sections modulaires et des `metafields` plus accessibles. La logique Liquid reste la même ; seul l’endroit où vous placez le code change. Pour les schemas produits enrichis, les metafields de Shopify 2.0 permettent de capturer des attributs spécifiques (matériau, ingrédients, GTIN) directement depuis l’admin et de les rendre dans le JSON-LD via Liquid.

### En quoi le SEO Liquid diffère-t-il du SEO WordPress ?

Liquid génère le HTML sur le serveur de Shopify, sans plugins JavaScript. C’est plus proche d’un thème PHP de WordPress que de Gutenberg moderne. L’avantage : le SEO est rendu en statique et rapide. L’inconvénient : tout changement nécessite l’accès au code editor du thème ou un développeur. J’ai comparé les deux approches dans [SEO Shopify vs WordPress](https://lionelz.com/fr/blog/shopify-seo-vs-wordpress-seo/).

---

## Sources

1.  Shopify. _Liquid : Open-source template language._ [https://shopify.github.io/liquid/](https://shopify.github.io/liquid/). 2024.
2.  Shopify Dev. _Liquid objects reference._ [https://shopify.dev/docs/api/liquid/objects](https://shopify.dev/docs/api/liquid/objects). 2025.
3.  Shopify Dev. _Liquid reference (objects, tags, filters)._ [https://shopify.dev/docs/api/liquid](https://shopify.dev/docs/api/liquid). 2025.
4.  Google Search Central. _Product structured data documentation._ [https://developers.google.com/search/docs/appearance/structured-data/product](https://developers.google.com/search/docs/appearance/structured-data/product). 2025.
5.  Google Search Central. _Tell Google about localized versions of your page._ [https://developers.google.com/search/docs/specialty/international/localized-versions](https://developers.google.com/search/docs/specialty/international/localized-versions). 2025.

---

Votre Shopify ne classe pas et vous ne savez pas si c’est le thème ou les URL ? Je propose des [audits SEO techniques pour boutiques Shopify](https://lionelz.com/fr/audit-seo/) — revue systématique du theme code, schema, hreflang et performance. 30 minutes d’appel initial gratuit pour voir si ça a du sens.

Audit gratuit

De la marge d'amélioration dans votre compte ?

30 minutes pour l'analyser. Sans engagement.

[Réserver un appel →](https://calendar.app.google/G3jeffmFY52dg38GA)

Sans engagement · 30 min · Google Meet

Partager

[LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https://lionelz.com/fr/blog/shopify-liquid-seo/) [X / Twitter](https://twitter.com/intent/tweet?url=https://lionelz.com/fr/blog/shopify-liquid-seo/&text=Shopify%20Liquid%20et%20SEO%20%3A%20snippets%20utiles%20pour%20th%C3%A8mes%20\(2026\))

Service lié

**Audit SEO**

Revue technique, contenu et on-page avec des priorités claires.

[Voir le service →](https://lionelz.com/fr/audit-seo/)

## Articles connexes

[

![](https://lionelz.com/images/blog/2026/09/claude-auditar-competidores-seo-mobile-hero.webp)

SEO

### Auditer le SEO des concurrents avec Claude : méthode

septembre 2026

](https://lionelz.com/fr/blog/claude-auditar-competidores-seo/)[

![](https://lionelz.com/images/blog/2026/09/shopify-site-speed-auditoria-mobile-hero.webp)

SEO

### Shopify site speed : audit et correctifs réels

septembre 2026

](https://lionelz.com/fr/blog/shopify-site-speed-auditoria/)[

![](https://lionelz.com/images/blog/2026/09/shopify-black-friday-seo-checklist-mobile-hero.webp)

SEO

### Shopify Black Friday SEO : checklist technique 2026

septembre 2026

](https://lionelz.com/fr/blog/shopify-black-friday-seo-checklist/)

![Lionel Fenestraz — Consultant Google Ads & Meta Ads Freelance](https://lionelz.com/images/lionelfenestraz.webp)

Lionel Fenestraz

Consultant PPC & CRO Freelance · Google Partner · CXL Certified · Google Ads Search Certified

Plus de 7 ans à gérer des campagnes Google Ads et Meta Ads pour des marques de location saisonnière, B2B et ecommerce. Trilingue ES/EN/FR.

[LinkedIn](https://www.linkedin.com/in/lionelfenestraz/) [À propos](https://lionelz.com/fr/a-propos/) [Certif. Google Ads ↗](https://skillshop.credential.net/20a1e11a-8586-42e3-a5ae-ac63b6074518) [Réserver un appel →](https://calendar.app.google/G3jeffmFY52dg38GA)

Ils m’ont fait confiance

-    Logo OVO Network, client 
-    Logo Sun Chemical, client 
-    Logo Brildor, client 
-    Logo Powergym, client 
-    Logo USU, client 
-    Logo Luman Technology, client 
-    Logo Suites and Villas, client 
-    Logo Chef Tours, client 
-    Logo Trasteando, client 
-    Logo C-System, client 
-    Logo ConfiVet, client 
-    Logo Luxury Homes London, client 

Premier appel gratuit

## Vos campagnes publicitaires  
_pourraient-elles mieux performer ?_

30 minutes pour analyser votre situation et vous dire exactement ce que je changerais. Sans pitch, sans proposition commerciale.

[Réserver un appel →](https://calendar.app.google/G3jeffmFY52dg38GA) 30 min · Google Meet · Sans engagement

---

> Version Markdown de https://lionelz.com/fr/blog/shopify-liquid-seo/ (même contenu que la page HTML). Index du site pour les agents : https://lionelz.com/llms.txt · contenu complet : https://lionelz.com/llms-full.txt · plan du site : https://lionelz.com/sitemap-index.xml
