Guide Shopware SEO
How SEO fonctionne on Shopware 6 — the native contrôle it ships (Twig-templated SEO URLs, canonical handling, XML sitemaps, hreflang via the Sales Channel/Domain model, and, in recent versions, native robots.txt and JSON-LD), the version gates que decide ce que vous en réalité obtenir, the traps (rebuild the index après a template modifier, variant contenu dupliqué, seo_url table growth), and pourquoi headless (Composable Frontends) moves the whole SEO checklist into the Nuxt couche.
Langues
Shopware 6 ships an unusually grand amount of native SEO technique pour a self-hosted platform — Twig-templated SEO URLs per entity type, canonical handling, three-strategy XML sitemap generation, and hreflang derived from the Sales Channel/Domain model — but what's 'native' dépend heavily on votre version: per-domain robots.txt seulement arrived in 6.7.1.0 and JSON-LD données structurées (replacing Microdata) in 6.7.9.0 behind a fonctionnalité flag. The recurring traps are spécifique: vous doit rebuild the SEO index (dal:refresh:index) après modification une URL template, product variants chaque obtenir leur propre URL and can't be canonicalized straight to the parent sans a template override, and the seo_url table grows roughly with variants times languages. Going headless with Composable Frontends (Vue + Nuxt) moves the entier SEO checklist — sitemap, canonical, meta tags, données structurées — into the Nuxt rendering couche, où none of the admin SEO settings appliquer the même façon.
Evidence for this claim Shopware 6 provides configurable SEO URL templates and sitemap settings, with behavior dependent on version and sales-channel configuration. Scope: Shopware 6 administration; plugins and release versions can change output. Confidence: high · Verified: Shopware documentation: SEO Evidence for this claim Shopware release notes document material SEO-related changes across 6.7 releases, so exact native behavior must be checked by installed version. Scope: Shopware 6.7 release line, not all earlier installations. Confidence: high · Verified: Shopware 6.7 release notesTL;DR — Shopware is an ecommerce platform (construit in Germany) que comes with a lot of SEO construit in: it peut construire votre product URLs, écrire votre sitemap, handle balise canonicals, and définir up hreflang pour multiple languages. The two choses to know going in: qui fonctionnalités vous obtenir dépend on votre Shopware version (some arrived seulement recently), and a few tasks — comme tidying up duplicate variant pages — encore besoin a plugin or a developer.
Ce que “Shopware SEO” signifie
Shopware is an open-source-core ecommerce platform. The current version is Shopware 6. Unlike Shopify or BigCommerce — qui host everything pour vous — Shopware is usually installed on votre propre hosting (or Shopware’s cloud), qui signifie vous obtenir plus contrôler and plus responsibility.
“Shopware SEO” is simplement the normal fonctionner of getting votre products and category pages trouvé, crawled, indexé, and ranked — applied to a store que runs on Shopware. It’s worth its propre guide parce que Shopware rend a lot of SEO choices pour vous out of the box, and vous devez know qui boxes it déjà ticks, qui it leaves vide, and qui ones seulement apparaître si you’re on a recent-enough version.
Ce que Shopware fait pour vous
- Clean URLs. Shopware builds “SEO URLs” pour votre products and categories en utilisant templates vous pouvez edit in the admin. Vous contrôler the format.
- Sitemap. Shopware generates an XML sitemap of votre products and categories and
garde it at
https://yourdomain.com/sitemap.xml. Vous simplement submit it to Google. - Balise canonicals. Pour categories, Shopware picks the correct principal URL automatically quand a product sits in plus que un category.
- hreflang pour languages. Si vous sell in multiple languages, Shopware peut ajouter the tags que tell Google qui language version to montrer — construit from votre “sales channel” and domain setup.
- robots.txt (newer versions seulement). From Shopware 6.7.1.0 onward vous pouvez edit
votre
robots.txtcorrect in the admin. - Données structurées (newer versions seulement). From Shopware 6.7.9.0 onward Shopware peut output modern JSON-LD “rich result” données pour products.
Ce que vous encore have to do yourself
- Fill in votre titles and descriptions. Shopware donne vous the fields; vous écrire the copy. There’s aucun native façon to bulk-set les by a pattern à travers thousands of products.
- Handle duplicate variant pages. Every product variant (chaque size, chaque color) obtient its propre URL, and leur descriptions are souvent near-identical, so ils peut compete with chaque autre. Shopware doesn’t entièrement fix ce pour vous.
- Vérifier votre version. Parce que robots.txt and JSON-LD are recent additions, advice vous lire online may be out of date pour votre store — or ahead of it.
The chose la plupart personnes obtenir incorrect
Personnes assume que parce que Shopware “has good SEO,” everything is handled. Two catches trip up nearly everyone. Premier, modification une URL template doesn’t mettre à jour votre existing URLs jusqu’à vous rebuild Shopware’s SEO index — a step that’s facile to forget. Second, si vous go “headless” (a modern Vue/Nuxt storefront), almost none of the admin SEO settings appliquer the même façon — SEO becomes a job pour votre developer to construire in the nouveau frontend.
Vouloir the practitioner version — the exact Twig templates, the variant-canonical fix, le sitemap strategies and CLI commands, the version gates, and the headless catch? Switch to the Avancé tab.
Evidence for this claim Shopware 6 provides configurable SEO URL templates and sitemap settings, with behavior dependent on version and sales-channel configuration. Scope: Shopware 6 administration; plugins and release versions can change output. Confidence: high · Verified: Shopware documentation: SEO Evidence for this claim Shopware release notes document material SEO-related changes across 6.7 releases, so exact native behavior must be checked by installed version. Scope: Shopware 6.7 release line, not all earlier installations. Confidence: high · Verified: Shopware 6.7 release notesTL;DR — Shopware 6 ships plus native SEO technique que la plupart self-hosted platforms — but “native” is heavily version-gated. SEO URLs are Twig templates per entity type (product / category / landing page), configurable globally or per sales channel; modifier a template and vous doit rebuild the index (
dal:refresh:index) or existing URLs won’t mettre à jour. Canonical is a separate system from URL templates: automatic pour categories, semi-manual pour variants (vous peut point un variant at un autre as canonical, but pas straight at the parent sans a template override). The XML sitemap has three refresh strategies (scheduled / live / manual, withsitemap:generatepour manual) and Shopware explicitly disclaims quelconque indexation guarantee. robots.txt n’est pashing-automatic avant 6.7.1.0 (manual fichier + server rewrite) and native per-domain admin editing après. Données structurées simplement migrated from Microdata to JSON-LD in 6.7.9.0 behind theJSON_LD_DATAflag. hreflang comes from the Sales Channel > Domain model, with a cross-sales-channel gap que spawned paid plugins. And going headless (Composable Frontends, Vue + Nuxt) moves the whole SEO checklist into the Nuxt rendering couche.
The frame: native, version-gated, and où vous encore do the fonctionner
La plupart Shopware SEO content is soit a screenshot walkthrough of the admin settings or a pitch from a Shopware agency. Neither indique vous the two choses que en réalité matter: ce que Shopware ships natively dépend on votre version, and the remaining gaps are spécifique and predictable. Sort every task into three buckets — native-and-current, native-only-if-you’re-on-a-recent-version, and still-your-job — and the platform arrête being mysterious.
Shopware itself frames the native side generously: it dit the platform “inclut nombreux SEO fonctionnalités out of the box – from country- and language-specific URLs to meta données, hreflang, and performances optimizations, allowing vous to construire strong SEO sans additional plugins.” That’s largely vrai — with the version caveats ci-dessous, and with a short liste of choses (bulk meta, variant canonicals, cross-channel hreflang, headless rendering) que encore besoin plugins or code.
Parce que Shopware is self-hosted and open-source-core, it sits differently from the
hosted platforms. Où Shopify forces /products/ and /collections/ prefixes and
won’t let vous natively edit robots.txt, and BigCommerce hands vous an editable
robots.txt and custom Structure d’URLs on a managed stack, Shopware donne vous plus
contrôler que quelconque of les — vous pouvez override storefront templates directement — at the
cost of owning plus of the outcome, notamment votre propre hosting, indexation rebuilds,
and (on headless) votre propre rendering pipeline. It’s closer in spirit to Magento or a
self-hosted WooCommerce store que to Shopify.
Structure d’URL: SEO URL templates
SEO URLs live at Settings > Shop > SEO, and they’re configurable per sales channel or globally. Là are three separately-templated entity types — product detail pages, category pages, and landing pages — and the templates utiliser Twig syntax. Shopware’s docs put it plainly: “In the SEO settings vous pouvez define the structure pour the SEO URLs of the product detail pages and categories. Pour ce objectif vous have a variety of variables at votre disposal.”
The mechanics worth knowing:
- The par défaut product template is
{{ product.name }}, and là are 50+ product variables disponible (product number, EAN, manufacturer nom, breadcrumb/categories, custom fields, release date, and plus). - Multi-level variables doit be typed by hand. Clicking the variable picker seulement
inserts the incomplete parent token —
{{ product.translated.name }}has to be finished manually. - Vous pouvez truncate long noms. Pour a product nom plus long que, dire, 50 characters,
Shopware documents
{{ product.translated.name[:50] }}to shorten it in l’URL. - The category par défaut uses the breadcrumb:
{% for part in category.seoBreadcrumb %}{{ part }}/{% endfor %}. - Twig filters fonctionner pour normalization — Par exemple
{{ product.translated.name|lower }}/{{ product.productNumber }}— and Shopware notes “in general you can use the available Twig filters.” - Conditional (SI) logic handles manquant fields; the docs give a variant-aware
exemple en utilisant
{% if product.canonicalProductId is not null %}.
The trap almost everyone hits: “Après vous have made changements to the SEO template,
it is necessary to rebuild the index so que l’URLs are mis à jour. Vous pouvez do ce from
the console en utilisant the command php bin/console dal:refresh:index.” Editing a template
seulement affecte newly generated URLs — existing products garder leur old slugs jusqu’à vous
rebuild. Si vous modifier the template and “nothing happened,” ce is pourquoi.
Sous the hood, SEO URLs live in a seo_url database table with a dual-URL concept:
a technical path_info (the réel route) and a human seo_path_info (the slug), plus
sales_channel_id, language_id, is_canonical, and is_deleted/is_modified
flags. Custom or dynamic SEO URL routes are ajouté by developers via a
SeoUrlRouteInterface implementation registered with the shopware.seo_url.route
container tag. Vous don’t besoin ce pour a normal store, but it explique the scale
behavior in the pitfalls section ci-dessous.
Balise canonicals
Canonicalization on Shopware is a separate mechanism from l’URL templates — ce is the unique la plupart misunderstood partie of Shopware SEO. Shopware’s propre docs même define the concept the façon Google fait: “UNE URL canonique is l’URL of lune page que the moteur de recherche assumes is the la plupart representative of several duplicated pages on votre site.”
Three choses to garder straight:
- Categories are canonicalized automatically. Quand a product is reachable via multiple categories (and therefore multiple URLs), Shopware’s marketing describes it as detecting ce and “automatically marks the correct URL, automatically preventing SEO technique problèmes.” Treat the marketing phrasing as a claim to confirmer on votre propre store, but the automatic-category behavior is réel.
- Variants are seulement semi-manual. Chaque variant obtient its propre SEO URL, and the
built-in “Variant for Canonical URL” picker lets vous nominate un variant as
the canonical target. Ce que it fait pas do is let vous pouvezonicalize a variant
straight back to the parent product — a gap practitioners fix by overriding
product-detail/meta.html.twig(or with a plugin) so variants canonicalize to the parent’s SEO URL quand un exists. Si votre variant pages are near-duplicates competing with chaque autre, ce is the fix. - There’s a global 301 behavior toggle. Sous “Forwarding behavior,” Shopware peut
“output an HTTP 301 redirect when URLs are changed” plutôt que leaving old URLs
live après a template edit — the setting que pairs with the
dal:refresh:indexrebuild ci-dessus.
Ce maps directement onto Google’s propre stance que canonicalization is a hint and que duplicate variant/parameter URLs are normal in ecommerce — the general mechanics are in canonicalization, qui ce article is the Shopware-specific companion to.
XML sitemap
Le sitemap lives at Settings > Shop > Sitemap. Shopware “generates a standard sitemap que is compressed and mis en cache in the fichier system,” and pour grand catalogs “the sitemap is divided into several files and can be generated in the background” — the multi-file split que garde chaque fichier à l’intérieur le sitemaps.org / Google limites of 50 000 URLs and 50 MB uncompressed.
Là are three refresh strategies, and the difference matters:
- scheduled — generated automatically on a scheduled task at a définir interval.
- live — créé quand none exists, and recreated une fois the refresh temps elapses.
- manually — automatic generation is off entirely; “le sitemap va seulement be
créé si vous appel the suivant command manually:
php bin/console sitemap:generate. In ce cas, it is necessary to run ce command à nouveau chaque temps a nouveau URL is ajouté or an old un is supprimé.”
Two choses personnes miss:
- The public URL is
sitemap.xml, and there’s aucun human-facing/sitemappage. Shopware is explicit: “Shopware 6 ne fait pas provide a visitor sitemap (suffix/sitemapaprès votre domain). The index fichiersitemap.xmlis créé pour evaluation by Google.” - A sitemap guarantees nothing. Shopware states outright que it “ne peut pas guarantee que every URL va be crawled and indexé. Ce toujours dépend on the moteur de recherche provider.” A sitemap is a discovery aid, pas an indexation promise — même as on every autre platform.
Ajout or excluding custom URLs (au-delà products/categories) isn’t an admin toggle —
it’s developer fonctionner via custom UrlProvider classes, documented in Shopware’s
developer sitemap guides.
robots.txt — vérifier votre version premier
Ce is the la plupart version-sensitive partie of Shopware SEO, so date-stamp it avant vous advise anyone.
- Avant 6.7.1.0 (la plupart older installs): nothing is generated automatically.
Shopware’s docs dire “the robots fichier n’est pas créé automatically in Shopware 6, but
has to be créé manually as a text fichier” placed in
/public/. Pour multi-domain setups vous serve a per-domain fichier with a server rewrite — ApacheRewriteRule ^robots\.txt$ robots/%{HTTP_HOST}.txt [NS]or the NGINX equivalentrewrite ^/robots\.txt$ /robots/$host.txt— pointing at a/public/robots/<domain>.txtstructure. - From 6.7.1.0 onward (July 2025 release): native per-domain robots.txt management shipped in the admin — vous “peut define individual robots.txt rules pour chaque domain in the Admin sous Settings > General > Basic information.” Ce commencé as a Hacktoberfest 2024 community contribution.
So the myth “Shopware doesn’t let you edit robots.txt” is seulement vrai pre-6.7.1.0.
Confirmer the store’s version avant telling someone to “just edit it in the admin” —
older stores encore besoin the manual-file-plus-rewrite approach. The admin field (“Rules
pour robots.txt” sous Settings > General > Basic information) is a free-text area
merged straight into que domain’s robots.txt, so it accepts complet User-agent: /
Allow: / Disallow: blocks, pas simplement flat rules — confirmed les deux in Shopware’s
current docs and in a 6.7.10.0 fix (éviter duplicate robots.txt directives pour user-agent blocks) que specifically reproduces the bug en utilisant per-user-agent blocks
in que field.
Données structurées: the Microdata → JSON-LD migration
Shopware went via a réel architecture shift ici in 6.7.9.0: the storefront
déplacé from scattered inline Microdata to JSON-LD emitted as a
<script type="application/ld+json"> block in the <head>. It’s behind a fonctionnalité flag,
JSON_LD_DATA, and is off by par défaut — with the flag on, JSON-LD is injected
and the old Microdata is supprimé. The Microdata is deprecated and slated pour removal in
6.8.0.0.
Une fois vous flip the flag, the JSON-LD output is substantially richer que the old Microdata:
Product— tout product images,VideoObjectpour product videos,AggregateRatingwithratingCount, up to the 10 la plupart recentReviewitems,OfferShippingDetails/ShippingDeliveryTimepour single-price products,DimensionsasQuantitativeValue,itemCondition, typed seller info, andgtin13(EAN) /mpnquand présent.WebSitewithSearchAction(enables Google’s Sitelinks search box).- Top-level
Organization(shop logo). ItemListon category / search-result pages, plusBreadcrumbList.
Chaque schema type lives in its propre overridable Twig template sous
storefront/layout/structured-data/. The même 6.7.9.0 release aussi ajouté per-product
Ouvrir Graph fields in the admin SEO tab — custom og:title, og:description, and
og:image, defaulting to the product’s meta title/description/cover image quand unset —
so social shares and some search-result previews peut now diverge intentionally from the
meta tags sans a plugin.
The practical takeaway: ce is a myth-buster. Plenty of practitioner posts and paid Store extensions (“JSON-LD Rich Snippets pour product pages”) predate the native fonctionnalité. Si you’re on 6.7.9.0+, vérifier si vous encore besoin que plugin avant buying it — and si you’re on an older version, that’s exactly quand a plugin encore earns its garder. Google’s Product données structurées guidelines are the spec ce output targets, and Google exige données structurées to reflect visible page content — so fill the fields vous vouloir in the markup.
International SEO: hreflang via Sales Channel + Domain
Shopware doesn’t have a standalone hreflang editor. hreflang is derived from the Sales Channel > Domain model: chaque sales channel peut have multiple domains, and chaque domain maps to un language, un currency, a snippet définir, and a unit system — définir up with its “own virtual URL, language, currency, snippet set and its own unit system.”
Two settings do the SEO fonctionner:
- A localization mode dropdown with two options: ISO standard, “utile, pour
exemple, si vous utiliser différent (country-specific) language variants que may utiliser leur
propre country-specific terms,” qui produces complet region-language codes comme
en-USvsen-GB; and navigateur language localization, qui is language-only (plainen). Utiliser ISO standard quand vous genuinely have regional variants. - A par défaut domain que, après vous enable the hreflang meta tag, “va serve as a
fallback pour tout languages” — Shopware’s version of Google’s
x-default.
The connu weak spot: ce fonctionne dans a unique sales channel’s domains, but cross-sales-channel hreflang — separate sales channels per country/TLD running near-duplicate catalogs — n’est pas natively lié. Que gap is exactly ce que paid “Hreflang Manager” store extensions exist to solve. I’d treat the cross-channel gap as a strong community/marketplace signal plutôt que a documented Shopware limitation, but it’s a recurring pain point on the forums.
Un chose Shopware’s propre docs don’t spell out que Google exige: hreflang doit be
bidirectional (retourner tags) and inclure an x-default. Si you’re nouveau to the
return-tag requirement, the general mechanics are in
hreflang — Shopware’s default-domain
setting handles the x-default side, but vous encore vouloir to vérifier the retourner tags
resolve.
Headless: Composable Frontends (Shopware Frontends)
Shopware’s headless option is “Shopware Frontends” (formerly “Composable Frontends” / “PWA”) — a Vue.js + Nuxt toolkit que consumes the Shopware Store API, distinct from the par défaut Twig/Symfony storefront. It ships a component library, an API client, reusable “composables,” and generated TypeScript types; the référence “Vue Demo Store” is construit on Nuxt + Tailwind.
Here’s the partie every autre guide skips: going headless moves essentially tout SEO responsibility into the Nuxt couche, and none of the admin SEO settings appliquer the même façon. The SEO URL templates, the canonical settings, le sitemap admin toggle, and the nouveau robots.txt admin panel are tout Symfony-storefront (Twig) fonctionnalités. A Composable Frontends construire nécessite its propre:
- Rendering mode que produces crawlable HTML — Nuxt SSR (or hybrid / ISR / edge rendering) pour le SEO-relevant pages. A pure client-side-rendered (SPA) construire reintroduces the classic JavaScript-rendering SEO risk, so headless is pas automatically meilleur pour le SEO — a badly configuré headless storefront peut be worse que the par défaut Twig un.
- Sitemap generation, balise canonicals, données structurées, and meta-tag injection implemented in the Nuxt app (typically via Nuxt’s head/SEO-meta composables), usually encore pulling slugs and product données from the même Shopware SEO URL / Store API données.
So the myth “going headless with Shopware fixes/improves SEO” is faux as stated. SEO outcome dépend entirely on how vous configurer rendering in Nuxt. Ce is the même trap as quelconque headless construire — the platform-agnostic version lives in JavaScript SEO and CMS headless SEO.
Courant pitfalls at scale
The practitioner pain points cluster in three places:
- Par défaut misconfigurations. Practitioner audits flag que “Supprimer Category ID from
URL” ships définir to Aucun by par défaut (worth enabling pour cleaner URLs), que pagination
signals are off by par défaut, and que blog/archive pagination pages are worth
noindex-ing parce que ils “add no value; they only take up crawl budget.” Un widely repeated claim — que Shopware auto-addsnofollowto tout external liens — I’d vérifier contre a réel install avant repeating; it wasn’t confirmed contre Shopware’s propre docs. - Product-variant contenu dupliqué. Ce is the unique la plupart recurring Shopware SEO
complaint. Chaque variant obtient its propre URL (
/SW10000.1,/SW10000.2, …) with inherited, near-identical descriptions, so variants compete unless vous pouvezonicalize les — and, per the canonical section ci-dessus, the built-in picker can’t point straight at the parent sans a template override. seo_urltable growth on grand multilingual catalogs. Row count roughly follows (parent + active variants) × number of languages — a practitioner deep dive puts a 9-variant product à travers 17 languages at ~153 rows pour a unique product family. Frequent template edits multiply history rows plus loin. At scale the fixes are: generate SEO URLs pour parent products seulement (pas every variant), prune soft-deleted / non-canonical rows periodically, and ajouter composite indexes. Ce is pourquoi a grand Shopware store peut feel slow and accumulate odd duplicate SEO URLs.
Quand native outils are suffisant vs. quand vous besoin a plugin or dev fonctionner
The rough threshold echoed à travers practitioner sources: native outils are suffisant pour petit, simple catalogs (on the order of a few hundred products), and plugins or custom development become necessary at meaningful scale — thousands of SKUs, deep variant matrices, nombreux languages, or cross-sales-channel international setups. Concretely, reach pour a plugin or code quand vous besoin bulk title/meta patterns, canonical-to-parent pour variants, cross-sales-channel hreflang, custom sitemap entries, or JSON-LD on a pre-6.7.9.0 version. Everything sinon — SEO URL templates, category canonicals, the sitemap, single-channel multi-domain hreflang, and (on current versions) robots.txt and JSON-LD — is native.
Shopware vs the hosted platforms — the honest version
| Shopware | Shopify | BigCommerce | |
|---|---|---|---|
| Hosting | Self-hosted / Shopware cloud | Hosted SaaS | Hosted SaaS |
| Structure d’URL | Twig templates, entièrement custom | Forces /products/, /collections/ | Entièrement custom, aucun forced prefixes |
| robots.txt | Native admin from 6.7.1.0 (manual avant) | Pas natively editable | Editable in admin |
| Built-in schema | Native JSON-LD from 6.7.9.0 (flagged) | App requis | Yes (Cornerstone) |
| hreflang | Native via Sales Channel/Domain (single-channel) | App / theme fonctionner | Manual |
| Headless option | Composable Frontends (Vue + Nuxt) | Hydrogen | Catalyst (Suivant.js) |
| Index rebuild step | Yes (dal:refresh:index) | Pas exposed | Pas exposed |
Tout of les rank fine. Shopware’s genuine advantage is contrôler — Twig-templated URLs, overridable storefront templates, and a grand native fonctionnalité définir que garde growing by version. Its genuine cost is que vous propre plus of the pipeline: votre hosting, votre index rebuilds, votre version awareness, and — si vous go headless — votre entier rendering and SEO-tag couche. Comme Magento and self-hosted WooCommerce, and unlike Shopify or PrestaShop’s simpler defaults, que trade favors teams with development capacity.
AI summary
A condensed prendre on the Avancé version:
- Shopware 6 is a self-hosted, open-source-core ecommerce platform (Symfony/PHP + Vue.js storefront) with a grand native SEO fonctionnalité définir — plus contrôler que Shopify or BigCommerce, but vous propre plus of the pipeline.
- “Native” is version-gated. Per-domain
robots.txtseulement from 6.7.1.0 (the admin field is free text, soUser-agent:blocks fonctionner, pas simplement flat rules); JSON-LD données structurées (replacing Microdata) and per-product Ouvrir Graph fields seulement from 6.7.9.0, behind theJSON_LD_DATAflag pour JSON-LD (Microdata sunsets in 6.8.0.0). Toujours vérifier the store’s version avant advising. - SEO URLs are Twig templates per entity type (product / category / landing
page) at Settings > Shop > SEO. Modifier a template → rebuild the index
(
php bin/console dal:refresh:index) or existing URLs won’t mettre à jour. - Canonical is a separate system: automatic pour categories; pour variants vous pouvez
nominate un variant as canonical but can’t point straight at the parent sans
overriding
product-detail/meta.html.twig. A global “Forwarding behavior” toggle emits 301s on URL modifier. - Sitemap: three strategies (scheduled / live / manual, with
php bin/console sitemap:generate); public URLsitemap.xml; aucun human/sitemappage; Shopware disclaims quelconque indexation guarantee. - hreflang comes from the Sales Channel > Domain model (un domain = un
language/currency), with an ISO-standard vs browser-language toggle and a par défaut
domain as
x-default. Cross-sales-channel hreflang isn’t natively lié — the gap paid plugins fill. - Headless (Composable Frontends, Vue + Nuxt) moves the entier SEO checklist (sitemap, canonical, meta, données structurées) into the Nuxt rendering couche — admin SEO settings don’t appliquer, and a poorly configuré headless construire peut be worse pour SEO.
- Scale pitfalls: variant contenu dupliqué,
seo_urltable growth (~variants × languages), and par défaut misconfigurations (category ID in URL, pagination signals). Native outils suffice pour petit catalogs; plugins/dev fonctionner pour scale.
Documentation officielle
Primary-source docs from Shopware and Google.
Shopware
- SEO settings (SEO URL templates, canonical, forwarding behavior) — the core admin SEO page; Twig variables, truncation, filters, and the
dal:refresh:indexrebuild remarque. - Sitemap settings — the three refresh strategies,
sitemap:generate, thesitemap.xmlURL, and the no-indexing-guarantee disclaimer. - Sales channel (domains / hreflang) — the Sales Channel > Domain model, hreflang localization modes, and the default-domain fallback.
- Creation of robots.txt (legacy / manual méthode) — the pre-6.7.1.0 manual fichier + server-rewrite approach.
- Ajouter Custom SEO URLs (developer) — the
seo_urltable,SeoUrlRouteInterface, and theshopware.seo_url.routecontainer tag. - Sitemap plugin guide (developer) — custom
UrlProviderclasses pour ajout/removing sitemap entries. - Release notes 6.7.1.0 (native robots.txt) — the version que ajouté per-domain robots.txt in the admin.
- Release notes 6.7.9.0 (JSON-LD données structurées) — the Microdata → JSON-LD migration, the
JSON_LD_DATAflag, and the schema types. - Shopware Frontends (headless docs) and the Nuxt module — the Vue + Nuxt Composable Frontends toolkit.
- SEO in Shopware (marketing overview) — Shopware’s propre summary of native SEO fonctionnalités.
- Product données structurées — requis/recommended Product fields the JSON-LD output targets.
- Données structurées intro — pourquoi JSON-LD is recommended over microdata.
- URL canonicalization — the “hint, not a rule” framing behind Shopware’s canonical handling.
- Managing multi-regional and multilingual sites (hreflang) — the bidirectional return-tag and
x-defaultrequirements Shopware’s default-domain setting maps onto.
Quotes from the source
On-the-record statements from Shopware’s propre documentation and marketing. Chaque lien deep-links to the quoted passage on the source page.
Shopware — SEO URL templates (docs)
- “In the SEO settings you can define the structure for the SEO URLs of the product detail pages and categories. For this purpose you have a variety of variables at your disposal.” Jump to quote
- “After you have made changes to the SEO template, it is necessary to rebuild the index so that the URLs are updated. You can do this from the console using the command
php bin/console dal:refresh:index.” Jump to quote
Shopware — canonical (docs)
- “A canonical URL is the URL of the page that the search engine assumes is the most representative of several duplicated pages on your site.” Jump to quote
Shopware — sitemap (docs)
- “Shopware 6 does not provide a visitor sitemap (suffix
/sitemapafter your domain). The index filesitemap.xmlis created for evaluation by Google.” Jump to quote - “Shopware cannot guarantee that every URL will be crawled and indexed. This always depends on the search engine provider.” Jump to quote
- On manual mode: “the sitemap will only be created if you call the following command manually:
php bin/console sitemap:generate.” Jump to quote
Shopware — robots.txt (docs)
- “The robots file is not created automatically in Shopware 6, but has to be created manually as a text file.” (Legacy / pre-6.7.1.0 méthode.) Source
Shopware — native SEO (marketing)
- “Shopware includes many SEO features out of the box – from country- and language-specific URLs to meta data, hreflang, and performance optimizations, allowing you to build strong SEO without additional plugins.” Source
Shopware-specific SEO audit checklist
A réussir tuned to Shopware’s réel mechanics — pas a generic ecommerce liste.
Version vérifier (do ce premier)
- Remarque the exact Shopware version — it decides what’s native.
- robots.txt: on 6.7.1.0+ manage it per-domain in Settings > General > Basic
information; on older versions confirmer a manual
/public/robots.txt(with a per-domain server rewrite si multi-domain). - Données structurées: on 6.7.9.0+ decide si to enable the
JSON_LD_DATAflag; on older versions confirmer si a JSON-LD plugin is encore nécessaire.
Structure d’URL
- SEO URL templates définir per entity type (product / category / landing) at Settings > Shop > SEO; deliberate, pas the bare par défaut.
- Index rebuilt après quelconque template modifier (
php bin/console dal:refresh:index) so existing URLs en réalité mettre à jour. - “Remove Category ID from URL” reviewed (ships définir to Aucun by par défaut).
- “Forwarding behavior” définir so URL changements emit a 301 plutôt que leaving old URLs live.
Canonical & variants
- Category canonicalization confirmed correct (automatic, but vérifier).
- Variant contenu dupliqué handled — soit “Variant for Canonical URL” définir, or a
product-detail/meta.html.twigoverride / plugin canonicalizing variants to the parent.
Sitemap
- Refresh strategy choisi deliberately (scheduled / live / manual); si manual,
php bin/console sitemap:generateruns whenever URLs modifier. -
sitemap.xmlsubmitted dans la recherche Google Console and Bing Webmaster Outils.
International (multi-language / multi-domain)
- hreflang enabled with the correct localization mode (ISO standard pour regional variants; browser-language sinon).
- Par défaut domain définir as the
x-defaultfallback. - Retourner tags verified as bidirectional; cross-sales-channel setups vérifié pour the native linking gap (plugin si nécessaire).
Scale & performances
- Grand multilingual catalogs: SEO URLs generated pour parents seulement où possible;
soft-deleted / non-canonical
seo_urlrows pruned; composite indexes considéré. - Blog/archive pagination pages
noindexed où ils ajouter aucun valeur.
Headless (Composable Frontends seulement)
- Nuxt rendering mode produces crawlable HTML (SSR / hybrid / ISR, pas pure CSR).
- Sitemap, canonical, meta tags, and données structurées implemented in the Nuxt app (admin SEO settings do pas carry over).
The mental models
1. Three buckets, pas two — parce que of versions. Sort every Shopware SEO task into native-and-current, native-only-on-a-recent-version (robots.txt ≥ 6.7.1.0, JSON-LD ≥ 6.7.9.0), or still-your-job (bulk meta, variant→parent canonical, cross-channel hreflang, headless rendering). On Shopware the version bucket is the un que catches personnes out — toujours vérifier the version avant vous trust a tip.
2. Templates generate, the index publishes.
Editing an SEO URL template changements future URLs seulement. Nothing is live jusqu’à vous rebuild
(dal:refresh:index). Whenever “the template change didn’t work,” ce is the premier chose
to vérifier.
3. Canonical is a separate system from URLs. Don’t raison à propos de Shopware canonicals via l’URL templates — they’re unrelated mechanisms. Categories canonicalize automatically; variants are semi-manual and can’t reach the parent sans a template override. Garder the two systems separate in votre head.
4. hreflang lives in the domain model.
There’s aucun hreflang editor — it’s a consequence of how vous structure Sales Channels and
Domains. Un domain = un language/currency; the par défaut domain is votre x-default. Si
hreflang is incorrect, regarder at the domain setup, pas a hreflang field.
5. Headless resets the whole checklist. The moment vous go Composable Frontends, the admin SEO settings arrêter being the source of truth — sitemap, canonical, meta, and données structurées tout déplacer into Nuxt. Headless isn’t “the same SEO checklist, faster”; it’s a différent checklist owned by votre frontend.
Shopware SEO cheat sheet
Où choses live in the admin
| Setting | Chemin |
|---|---|
| SEO URL templates | Settings > Shop > SEO |
| Canonical (variant) | Product > Variant pour URL canonique |
| Forwarding behavior (301 on URL modifier) | Settings > Shop > SEO |
| Sitemap strategy | Settings > Shop > Sitemap |
| robots.txt (6.7.1.0+) | Settings > General > Basic information |
| hreflang / domains | Settings > Sales Channel > Domains |
Version gates
| Fonctionnalité | Native from |
|---|---|
| SEO URL templates, category canonical, sitemap, hreflang | 6.x (core) |
| Per-domain robots.txt in admin | 6.7.1.0 |
JSON-LD données structurées (JSON_LD_DATA flag) | 6.7.9.0 |
Per-product Ouvrir Graph fields (og:title/description/image) | 6.7.9.0 |
| Microdata supprimé | planned 6.8.0.0 |
CLI commands
| Command | Ce que it fait |
|---|---|
php bin/console dal:refresh:index | Rebuild the SEO index après a template modifier |
php bin/console sitemap:generate | Manually (re)construire le sitemap (manual strategy) |
Sitemap strategies
| Strategy | Behavior |
|---|---|
| scheduled | Auto-generated on a scheduled task |
| live | Créé si manquant; recreated après refresh temps |
| manually | Seulement via sitemap:generate; rerun on every URL modifier |
Don’ts
- Don’t modifier une URL template and expect existing URLs to mettre à jour sans a rebuild.
- Don’t assume “Variant for Canonical URL” points variants at the parent — it doesn’t.
- Don’t advise “edit robots.txt in the admin” sans checking pour 6.7.1.0+.
- Don’t buy a JSON-LD plugin on 6.7.9.0+ avant checking the native flag.
- Don’t assume headless (Composable Frontends) inherits the admin SEO settings.
Shopware SEO mistakes to éviter
Editing an SEO URL template sans rebuilding the index
Pourquoi it’s incorrect: Existing URLs garder leur old generated valeurs, so the admin
modifier apparaît to have fait nothing. Do ce à la place: run
php bin/console dal:refresh:index, alors explorer old and nouveau product URLs and confirmer
the forwarding behavior.
Assuming Variant pour URL canonique points to the parent
Pourquoi it’s incorrect: The native picker nominates un autre variant, pas the parent
product. Near-identical variants peut therefore remain split à travers URLs. Do ce
à la place: utiliser a product-detail/meta.html.twig override or a suitable plugin quand
the parent product is the intended canonical.
Giving version-blind robots.txt advice
Pourquoi it’s incorrect: Admin-based per-domain robots.txt management starts at 6.7.1.0; older stores exiger a fichier and server rewrite. Do ce à la place: record the exact Shopware version avant choosing the implementation chemin.
Buying a JSON-LD plugin avant checking the native fonctionnalité
Pourquoi it’s incorrect: Shopware 6.7.9.0 introduced native JSON-LD behind the
JSON_LD_DATA flag. A second source peut duplicate or conflict with markup vous déjà
have. Do ce à la place: vérifier the version and flag, validate the current output,
alors fill seulement genuine gaps.
Expecting admin SEO settings to carry into a headless storefront
Pourquoi it’s incorrect: Composable Frontends moves rendering, metadata, canonicals, sitemaps, and données structurées into Nuxt. Do ce à la place: treat headless as a nouveau frontend SEO implementation and vérifier its server réponse independently.
Prove an SEO URL template modifier took effect
Rebuild and inspect representative URLs
Tester to run: Après saving the template, run
php bin/console dal:refresh:index, alors ouvrir representative product, category, and
landing-page URLs covered by the modifier.
Attendu result: Existing entities utiliser the nouveau SEO URL pattern plutôt que seulement newly créé items receiving it.
Échec interpretation: The index rebuild did pas complet, the incorrect sales channel template was modifié, or the route is en utilisant a différent entity template.
Monitoring window: Immediate après the index command finishes and caches are refreshed.
Rollback trigger: Restore the previous template and rebuild à nouveau si the nouveau pattern creates collisions, manquant routes, or malformed paths.
Confirmer old URLs preserve leur destination
Tester to run: Requête a sample of the previous SEO URLs après the rebuild and
inspect the HTTP status and Location header.
Attendu result: Chaque modifié old URL renvoie the configuré redirection permanente to the matching nouveau URL canonique.
Échec interpretation: Forwarding behavior is disabled, the old route was pas retained, or two URL rules conflict.
Monitoring window: Immediate après deployment; repeat après cache invalidation.
Rollback trigger: Roll back si important old URLs retourner 404, loop, chain, or redirection to the incorrect product or category.
Vérifier canonical and sitemap agreement
Tester to run: Inspect the nouveau page’s balise canonical and locate the entity in
sitemap.xml après le sitemap refresh strategy has run.
Attendu result: Les deux signals nom the même nouveau SEO URL.
Échec interpretation: Canonical configuration, sitemap generation, and l’URL index are out of sync.
Monitoring window: Immediate pour the canonical; après the scheduled, live, or manual sitemap regeneration pour sitemap output.
Rollback trigger: Roll back l’URL release si canonical pages point at old or manquant destinations après regeneration.
Outils pour Shopware SEO
- Shopware Console (
bin/console) — the two commands que en réalité run Shopware SEO:dal:refresh:index(rebuild SEO URLs après a template modifier) andsitemap:generate(manual sitemap builds). - Recherche Google Console — sitemap submission, Inspection d’URL (vérifier the canonical Google chose, and how variant pages render), and the International Targeting / hreflang view. Votre ground truth pour ce que Google en réalité fait.
- Bing Webmaster Outils — second sitemap submission, explorer contrôler, and site scan.
- Screaming Frog / Ahrefs Site Audit — explorer the store to catch the variant-URL
explosion,
seo_urlduplicates at scale, redirection behavior après template changements, and pages le sitemap misses. Ce is how vous trouver the Shopware-specific gaps. - Résultats enrichis Tester / Balisage de données structurées Validator — confirmer the 6.7.9.0 JSON-LD output
is valid and matches visible content une fois vous enable the
JSON_LD_DATAflag. - Shopware Store extensions — où the native gaps obtenir filled: cross-sales-channel hreflang managers, bulk meta / SEO URL managers, avancé sitemap providers, and (on pre-6.7.9.0 stores) JSON-LD rich-snippet plugins.
- Storefront template overrides — pour the variant-canonical fix, override
product-detail/meta.html.twigplutôt que reaching pour a plugin si vous have dev capacity.
Ressources utiles
On-site, connexe
- Canonicalization — the platform-agnostic mechanics behind Shopware’s category-automatic / variant-manual canonical behavior.
- hreflang — the bidirectional return-tag and
x-defaultrequirements Shopware’s Sales Channel / default-domain model maps onto. - JavaScript SEO and CMS headless SEO — pourquoi a Composable Frontends (Nuxt) construire nécessite its propre SSR/rendering discipline.
Shopware official
- SEO settings, Sitemap settings, and Sales channel / domains.
- Release notes 6.7.1.0 (robots.txt) and 6.7.9.0 (JSON-LD).
- Shopware Frontends (headless).
From autour the industry
- Conductor Academy — Shopware SEO meilleur practices — practitioner checklist of default-setting gotchas (category ID in URL, pagination signals, blog pagination noindex).
- BrocksiNet — Deep dive into Shopware SEO URLs — the
seo_urltable internals and the variants × languages growth math. - EXWE — SEO optimization in Shopware 6: canonicals pour product variants — the variant-canonical problem and the template-override fix.
- elgentos — shopware-seo-canonical-url (GitHub) — an open-source plugin pour canonicalizing variants back to the parent.
- Qualimero — Shopware SEO guides — current EU/German-market Shopware SEO and AI-readiness coverage.
- Kickbyte — Shopware Frontends: headless storefront with Nuxt — how the Nuxt couche shapes headless SEO.
- Shopware — SEO in Shopware (marketing overview) — the vendor’s propre summary of native SEO fonctionnalités.
Testez vos connaissances: Shopware SEO
Five rapide questions on how SEO fonctionne on Shopware 6. Pick an réponse pour chaque, alors vérifier.
Journal des modifications
Mis à jour le 19 juil. 2026.
Résumé éditorial et détails enregistrés des changements.Détails des changements
-
Les notes détaillées des changements sont actuellement disponibles en anglais.
-
Les notes détaillées des changements sont actuellement disponibles en anglais.
-
Les notes détaillées des changements sont actuellement disponibles en anglais.
-
Les notes détaillées des changements sont actuellement disponibles en anglais.
-
Les notes détaillées des changements sont actuellement disponibles en anglais.
Comparaison complète indisponible — aucun instantané antérieur n’a été archivé pour cette révision.