La première fois que j’ai plongé dans les entrailles d’un sitemap XML pour un site e-commerce, j’ai cru devenir fou. 30000 URLs, des pages produits avec des paramètres de tracking, des catégories avec pagination… et Googlebot qui ne voyait que le bazar. Spoiler : le problème ne venait pas du nombre d’URLs, mais de leur organisation. Depuis, j’ai structuré des sitemaps pour des catalogues allant de 500 à 500000 produits. Voilà ce que j’ai appris.
Points clés à retenir
- Un sitemap XML n’est pas une fin en soi : c’est un filtre d’exploration
- Séparer les types de contenu (produits, catégories, blogs) dans des sous-sitemaps dédiés
- Exclure systématiquement les URLs avec paramètres de session, panier, ou pagination
- Un sitemap index est obligatoire au-delà de 50000 URLs
- Prioriser les URLs par
et fréquence de mise à jour, pas par - Tester avant d’envoyer : Google Search Console + validation manuelle
Pourquoi un sitemap XML e-commerce est différent
Un blog avec 100 articles ? Tu crées un fichier, tu balances tout, c’est fini. Un site e-commerce, c’est une autre bête. Entre les fiches produits, les variantes (tailles, couleurs), les catégories à plusieurs niveaux, les filtres, les pages de marque, les articles de blog… le nombre d’URLs explose. Et Googlebot a un budget d’exploration limité – environ 10 à 50 pages par crawl, selon la popularité du site.
Je me souviens d’un client avec 150 000 produits. Son sitemap était une bouillie : fiches produits mélangées aux pages de filtres, aux URLs de checkout (❗), et aux pages de catégories vides. Résultat ? Google indexait des pages de panier vides et ignorait ses fiches les plus vendues. Perte nette de trafic : 40 % pendant 3 mois.
Le principe fondamental : un sitemap XML e-commerce ne liste pas toutes les URLs. Il liste les URLs utiles pour l’indexation. Celles qui génèrent du trafic organique. Les pages produits, les catégories pertinentes, les pages de contenu. Le reste – filtres, tris, paramètres – doit être exclu.
La règle des 50 000 URLs
Google impose une limite de 50 000 URLs par sitemap. Au-delà, il faut créer un sitemap index qui regroupe plusieurs sous-sitemaps. C’est la base, mais peu de gens l’appliquent intelligemment. J’ai vu des sites avec 2 sitemaps de 49 000 URLs chacun – un pour produits, un pour catégories – alors que le catalogue en avait 200 000. Résultat : des milliers d’URLs jamais explorées.
Quand j’ai commencé avec un site de 300 000 URLs, j’ai créé 6 sous-sitemaps : 3 pour les produits (100 000 chacun), 1 pour les catégories, 1 pour les marques, 1 pour le blog. Puis j’ai compressé avec gzip. Taille totale du fichier après compression : 1,2 Mo – parfait pour Google. Et le temps d’exploration est passé de 3 semaines à 4 jours.
Structurer par type de contenu
La première erreur que j’ai faite ? Mélanger tout dans un seul sitemap. Produits, catégories, pages de filtres avec /?color=bleu&size=m, pages de blog… tout dans le même panier. Googlebot s’y perdait. J’ai mis 6 mois à comprendre qu’il fallait séparer les flux.
Ma structure actuelle (pour tout projet e-commerce) :
- sitemap-products.xml : uniquement les fiches produits canoniques (pas de variantes si elles sont sous des paramètres)
- sitemap-categories.xml : catégories principales + sous-catégories pertinentes (pas les pages de filtres)
- sitemap-brands.xml : pages de marque (si elles existent en page dédiée)
- sitemap-blog.xml : articles, guides, pages de contenu
- sitemap-static.xml : pages statiques (CGV, contact, à propos)
Pour un site avec 200 000 produits, j’ai créé 7 sous-sitemaps produits (car chaque fichier ne peut dépasser 50 000 URLs). Le sitemap index les référence tous. Google voit d’un coup d’œil : « Ah, ici c’est du produit, là c’est du contenu ». Résultat : le taux d’indexation des fiches produits est passé de 60 % à 92 %.
Que faire des URLs avec paramètres (filtres, tris, panier) ?
Franchement, la plupart des sites e-commerce laissent ces URLs dans leur sitemap. Erreur mortelle. Les paramètres de session (?sessionid=…), de panier (?add=…), de filtres (?couleur=rouge&taille=m) ne doivent jamais figurer dans un sitemap. Pourquoi ? Google les considère comme des URLs distinctes, dilue le PageRank, et peut indexer des pages de recherche internes vides.
J’ai testé sur un site : exclusion des paramètres de filtres dans le sitemap. Augmentation de 25 % du trafic organique vers les fiches produits en 2 mois. Pourquoi ? Googlebot a consacré son budget d’exploration aux pages utiles au lieu de crawler 10 000 combinaisons de filtres inutiles.
Méthode : dans votre CMS ou outil technique, générez vos sitemaps en excluant toutes les URLs contenant ?q=, ?sort=, ?page= (sauf si la pagination est utile – mais c’est rare). Pour les variantes de produits, utilisez les URLs canoniques uniquement. Les moteurs de recherche suivent le canonical, pas le sitemap.
Priorités et fréquences de mise à jour
Les balises <priority> et <changefreq> sont souvent mal utilisées. J’ai vu des sites mettre priority=1.0 sur toutes les pages. Ça ne sert à rien. Google l’ignore presque complètement. Ce qui compte vraiment, c’est <lastmod> – la date de dernière modification.
Quand un produit change de prix, de stock, ou de description, mettez à jour son
Ma hiérarchie de priorité (pour mon usage uniquement) :
- Fiches produits :
mis à jour à chaque modification (prix, stock, contenu) - Catégories :
mis à jour si un produit est ajouté/retiré de la catégorie - Blog :
mis à jour à chaque article, pas à chaque commentaire - Pages statiques :
une fois, sauf changement de contenu
Les valeurs de
Exemple de code XML pour un sitemap e-commerce
Voici un extrait d’un sous-sitemap produits que j’ai généré pour un client dans la mode :
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://www.example.com/robe-ete-rose-12345</loc>
<lastmod>2024-11-15</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.example.com/pull-laine-noir-67890</loc>
<lastmod>2024-11-14</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
</urlset>
Rappel crucial : les URLs doivent être absolues et encodées. Pas de caractères spéciaux dans les
Le sitemap index : quand et comment l’utiliser ?
Si votre catalogue dépasse 50 000 URLs, un sitemap index est obligatoire. Mais même en dessous, je recommande de l’utiliser si vous avez plusieurs types de contenu. Voici un exemple de sitemap index que j’ai mis en place :
<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<sitemap>
<loc>https://www.example.com/sitemap-products.xml</loc>
<lastmod>2024-11-16</lastmod>
</sitemap>
<sitemap>
<loc>https://www.example.com/sitemap-categories.xml</loc>
<lastmod>2024-11-16</lastmod>
</sitemap>
<sitemap>
<loc>https://www.example.com/sitemap-blog.xml</loc>
<lastmod>2024-11-15</lastmod>
</sitemap>
</sitemapindex>
Astuce bonus : mettez à jour le
Les outils pour créer et vérifier son sitemap
Je ne code jamais mes sitemaps à la main. Trop d’erreurs. Selon la taille de votre catalogue, utilisez :
- Pour les petits sites (moins de 10 000 URLs) : un générateur en ligne comme XML-Sitemaps.com. Mais attention : il ne gère pas bien les paramètres.
- Pour les CMS : Yoast SEO (WordPress), le module Sitemap natif de PrestaShop, ou Shopify qui le génère automatiquement. Mais leur logique est souvent trop permissive – j’ai vu Shopify inclure des pages de « collections » vides.
- Pour les gros catalogues : un script maison en Python ou PHP qui interroge votre base de données et génère les fichiers. Moi, j’utilise un script qui exporte les URLs depuis MySQL, les filtre (exclusion des paramètres), et génère les sitemaps compressés en gzip. Gain de temps : 90 % par rapport à un générateur manuel.
Pour vérifier : Google Search Console > Sitemaps > tester le fichier. Et un validateur en ligne comme l’outil de sitemaps.org pour vérifier la syntaxe. J’ai perdu une semaine une fois à cause d’une balise fermée en trop – Google ne l’a jamais signalée, mais les sitemaps n’étaient pas lus.
Dernière erreur à éviter : les URLs dynamiques
Un sitemap XML e-commerce peut inclure des URLs générées dynamiquement par des filtres ou des tris. Ne le faites pas. J’ai vu un site avec 500 000 URLs de filtres (/?categorie=vetements&couleur=rouge&taille=m) dans son sitemap. Google a indexé 200 000 d’entre elles. Résultat : des pages de recherche interne sans contenu unique, du duplicate content, et un classement en chute libre. Il a fallu 5 mois pour récupérer.
Si vous avez des URLs dynamiques que vous voulez indexer (par exemple des pages de catégorie avec des filtres populaires), créez des pages statiques canoniques avec un contenu unique. Et ne les mettez dans le sitemap que si elles apportent une valeur réelle.
Et voilà. Depuis que j’applique cette structure – sitemaps séparés par type, exclusion des paramètres, priorité au