{"id":4524,"date":"2025-05-27T12:34:17","date_gmt":"2025-05-27T12:34:17","guid":{"rendered":"https:\/\/www.hector-lopez.com\/shopware-seo-how-to-get-your-online-shop-found-on-google\/"},"modified":"2026-01-28T11:09:51","modified_gmt":"2026-01-28T11:09:51","slug":"shopware-seo","status":"publish","type":"post","link":"https:\/\/www.hector-lopez.com\/en\/shopware-seo\/","title":{"rendered":"Shopware SEO: how to get your Online Shop Found on Google"},"content":{"rendered":"<p data-sourcepos=\"7:1-7:251\">Search engine optimization for Shopware shops differs fundamentally from SEO for conventional websites. Online shops must not only rank for relevant keywords, but also offer an optimal user experience that leads to conversions. <\/p>\n<p data-sourcepos=\"9:1-9:209\"><strong>Current statistic:<\/strong> Over 40% of all e-commerce traffic comes directly from Google. A non-optimized Shopware shop therefore potentially loses almost half of its possible visitors and sales. <\/p>\n<p data-sourcepos=\"11:1-11:392\">The competition in e-commerce is particularly intense, as almost every product category is highly competitive. A professionally optimized Shopware 6 shop can gain significant competitive advantages here, as the platform already offers many SEO-friendly functions. However, these must be professionally configured and continuously optimized in order to exploit their full potential.  <\/p>\n<h2 data-sourcepos=\"13:1-13:53\">Shopware SEO Compared to other Shop Systems<\/h2>\n<p data-sourcepos=\"15:1-15:495\">Compared to other e-commerce platforms such as Magento, WooCommerce or Shopify, Shopware offers some unique advantages for search engine optimization. The platform is optimized for performance from the ground up and offers native functions such as <strong>Varnish-Caching<\/strong>, <strong>ElasticSearch integration<\/strong> and <strong>advanced URL configuration options<\/strong>. These technical basics are crucial for the <strong>loading speed<\/strong>, which in turn is an important ranking factor for Google.  <\/p>\n<p data-sourcepos=\"17:1-17:312\"><strong>Market position:<\/strong> In Germany, Shopware remains the market leader with a market share of over 30% among medium-sized online shops, while international distribution has increased by 78% since 2022. This growing community ensures continuous improvements and innovations in the SEO area. <\/p>\n<p data-sourcepos=\"19:1-19:291\">Shopware 6 also offers a modern, <strong>API-first architecture<\/strong> that is optimized for both traditional and headless e-commerce approaches. This makes it possible to achieve optimal performance even with complex shop structures, which is of enormous importance for SEO. <\/p>\n<h2 data-sourcepos=\"21:1-21:46\">The Three Pillars of Successful Shopware SEO<\/h2>\n<p data-sourcepos=\"23:1-23:99\">For a successful Shopware SEO strategy, three basic pillars must be considered:<\/p>\n<ul data-sourcepos=\"25:1-28:0\">\n<li data-sourcepos=\"25:1-25:226\"><strong>Technical basis:<\/strong> The technical infrastructure that helps search engines find and understand your website quickly and efficiently. This includes URL structure, loading times, Core Web Vitals and technical usability. <\/li>\n<li data-sourcepos=\"26:1-26:225\"><strong>Relevance &amp; Keywords:<\/strong> The content focus on search queries for which your products and content are relevant. This requires the creation of useful and satisfying content for visitors and search engines. <\/li>\n<li data-sourcepos=\"27:1-28:0\"><strong>Authority &amp; Popularity:<\/strong> Links to your website that determine your authority and trustworthiness, multiplied by the time you are consistently on the market with your website.<\/li>\n<\/ul>\n<p data-sourcepos=\"29:1-29:380\"><strong>Practical example:<\/strong> A medium-sized furniture retailer was able to increase its organic traffic by 143% within six months by systematically optimizing all three pillars. In particular, the improvement of the technical basis by adapting the URL structure and optimizing the loading times led to an immediate ranking boost for over 60% of the product pages. <\/p>\n<h2 data-sourcepos=\"33:1-33:42\">Technical SEO Basics in Shopware 6<\/h2>\n<p data-sourcepos=\"35:1-35:231\">The technical infrastructure of your Shopware shop is the foundation of any successful SEO strategy. A clean technical base ensures that search engines can efficiently crawl, index and understand your content. <\/p>\n<h3 data-sourcepos=\"37:1-37:39\">Optimal URL Structure in Shopware 6<\/h3>\n<p data-sourcepos=\"39:1-39:346\">The <strong>URL structure<\/strong> forms the foundation of every successful Shopware SEO strategy. Shopware 6 offers extensive options for configuring SEO-friendly URLs via the SEO settings in the backend under <em>Settings &gt; Shop &gt; SEO<\/em>. Here, various <strong>SEO URL Templates<\/strong> can be defined for different page types.  <\/p>\n<p data-sourcepos=\"41:1-41:248\">The standard template for product detail pages is, for example, <code>{{ product.translated.name }}\/{{ product.productNumber }}<\/code>. However, this configuration is not optimal, as product numbers are not very meaningful for search engines and users. <\/p>\n<p data-sourcepos=\"43:1-44:64\"><strong>Optimized URL structure:<\/strong> A better alternative would be a template like: <code>{{ product.manufacturer.name|lower }}\/{{ product.name|lower }}<\/code><\/p>\n<p data-sourcepos=\"46:1-46:132\">This leads to URLs such as <code>onlineshop.de\/hersteller\/produktname<\/code>, which are more understandable for both users and search engines.<\/p>\n<p data-sourcepos=\"48:1-49:94\"><strong>Important:<\/strong> For product variants, the URL structure must be adapted to avoid <strong>duplicate content<\/strong>. An extended template could look like this:  <code>{{ product.manufacturer.name|lower }}\/{{ product.name|lower }}-{{ product.variation|lower }}<\/code><\/p>\n<p data-sourcepos=\"51:1-51:101\"><strong>Practical example:<\/strong> An online sports shop implemented the following URL structure for shoe variants:<\/p>\n<ul data-sourcepos=\"52:1-54:0\">\n<li data-sourcepos=\"52:1-52:69\">Nike running shoe Air Zoom (size 41): <code>sportshop.de\/nike\/air-zoom-41<\/code><\/li>\n<li data-sourcepos=\"53:1-54:0\">Nike running shoe Air Zoom (size 42): <code>sportshop.de\/nike\/air-zoom-42<\/code><\/li>\n<\/ul>\n<p data-sourcepos=\"55:1-55:147\">This led to an improvement in the CTR of 18% and an average position improvement of 3.4 places in the Google search results.<\/p>\n<p data-sourcepos=\"57:1-57:81\">The following principles should be observed when optimizing the URL structure:<\/p>\n<ul data-sourcepos=\"59:1-64:0\">\n<li data-sourcepos=\"59:1-59:52\">All letters should be <strong>lowercase<\/strong>.<\/li>\n<li data-sourcepos=\"60:1-60:46\"><strong>Article numbers<\/strong> should be avoided.<\/li>\n<li data-sourcepos=\"61:1-61:50\">URLs should be <strong>short but meaningful<\/strong>.<\/li>\n<li data-sourcepos=\"62:1-62:68\">The integration of relevant <strong>keywords<\/strong> into the URL is essential.<\/li>\n<li data-sourcepos=\"63:1-64:0\">Each URL must be <strong>unique<\/strong>, even for product variants.<\/li>\n<\/ul>\n<h4 data-sourcepos=\"65:1-65:50\">Configure SEO URL Templates Professionally<\/h4>\n<p data-sourcepos=\"67:1-67:317\">The configuration of the SEO URL Templates requires a deep understanding of the available variables and their possible combinations. Shopware 6 offers a variety of variables that can be used in the templates, whereby it should be noted that multi-level variables must be completed manually. <\/p>\n<p data-sourcepos=\"69:1-69:54\"><strong>Advanced template adjustments (examples):<\/strong><\/p>\n<ul data-sourcepos=\"71:1-88:0\">\n<li data-sourcepos=\"71:1-76:0\">\n<p data-sourcepos=\"71:3-71:31\"><strong>Limiting the URL length:<\/strong><\/p>\n<div class=\"code-block ng-tns-c2477699268-410 ng-trigger ng-trigger-codeBlockRevealAnimation\">\n<div class=\"code-block-decoration header-formatted gds-title-s ng-tns-c2477699268-410 ng-star-inserted\">\n<p><span class=\"ng-tns-c2477699268-410\">PHP<\/span><\/p>\n<div class=\"buttons ng-tns-c2477699268-410 ng-star-inserted\"><\/div>\n<\/div>\n<div class=\"formatted-code-block-internal-container ng-tns-c2477699268-410\">\n<div class=\"animated-opacity ng-tns-c2477699268-410\">\n<pre class=\"ng-tns-c2477699268-410\"><code class=\"code-container formatted ng-tns-c2477699268-410\" role=\"text\" data-test-id=\"code-content\" data-sourcepos=\"72:5-74:83\">{{ product.name|length &gt; <span class=\"hljs-number\">50<\/span> ? product.name|slice(<span class=\"hljs-number\">0<\/span>, <span class=\"hljs-number\">50<\/span>) : product.name|lower }}\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<p data-sourcepos=\"75:5-75:61\">This limits the product name in the URL to 50 characters.<\/p>\n<\/li>\n<li data-sourcepos=\"77:1-82:0\">\n<p data-sourcepos=\"77:3-77:35\"><strong>Removal of special characters:<\/strong><\/p>\n<div class=\"code-block ng-tns-c2477699268-411 ng-trigger ng-trigger-codeBlockRevealAnimation\">\n<div class=\"code-block-decoration header-formatted gds-title-s ng-tns-c2477699268-411 ng-star-inserted\">\n<p><span class=\"ng-tns-c2477699268-411\">PHP<\/span><\/p>\n<div class=\"buttons ng-tns-c2477699268-411 ng-star-inserted\"><\/div>\n<\/div>\n<div class=\"formatted-code-block-internal-container ng-tns-c2477699268-411\">\n<div class=\"animated-opacity ng-tns-c2477699268-411\">\n<pre class=\"ng-tns-c2477699268-411\"><code class=\"code-container formatted ng-tns-c2477699268-411\" role=\"text\" data-test-id=\"code-content\" data-sourcepos=\"78:5-80:64\">{{ product.name|replace({<span class=\"hljs-string\">' '<\/span>: <span class=\"hljs-string\">'-'<\/span>, <span class=\"hljs-string\">'&amp;'<\/span>: <span class=\"hljs-string\">'and'<\/span>})|lower }}\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<p data-sourcepos=\"81:5-81:82\">This replaces spaces with hyphens and the &amp; character with &#8220;and.&#8221;<\/p>\n<\/li>\n<li data-sourcepos=\"83:1-88:0\">\n<p data-sourcepos=\"83:3-83:32\"><strong>Include category path:<\/strong><\/p>\n<div class=\"code-block ng-tns-c2477699268-412 ng-trigger ng-trigger-codeBlockRevealAnimation\">\n<div class=\"code-block-decoration header-formatted gds-title-s ng-tns-c2477699268-412 ng-star-inserted\">\n<p><span class=\"ng-tns-c2477699268-412\">PHP<\/span><\/p>\n<div class=\"buttons ng-tns-c2477699268-412 ng-star-inserted\"><\/div>\n<\/div>\n<div class=\"formatted-code-block-internal-container ng-tns-c2477699268-412\">\n<div class=\"animated-opacity ng-tns-c2477699268-412\">\n<pre class=\"ng-tns-c2477699268-412\"><code class=\"code-container formatted ng-tns-c2477699268-412\" role=\"text\" data-test-id=\"code-content\" data-sourcepos=\"84:5-86:82\">{{ product.mainCategory.translated.breadcrumb|last }}\/{{ product.name|lower }}\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<p data-sourcepos=\"87:5-87:65\">This creates URLs with the main category as part of the path.<\/p>\n<\/li>\n<\/ul>\n<p data-sourcepos=\"89:1-89:291\"><strong>Important:<\/strong> After making changes to the SEO URL Templates, the command <code>bin\/console dal:refresh:index<\/code> must be executed to regenerate the URLs. Shopware stores both the old and the new URLs in order to handle redirects automatically and preserve link equity. <\/p>\n<p data-sourcepos=\"91:1-91:137\"><strong>Technical tip:<\/strong> For shops with many products, it is recommended to use a cron job that updates the index regularly:<\/p>\n<div class=\"code-block ng-tns-c2477699268-413 ng-trigger ng-trigger-codeBlockRevealAnimation\">\n<div class=\"code-block-decoration header-formatted gds-title-s ng-tns-c2477699268-413 ng-star-inserted\">\n<p><span class=\"ng-tns-c2477699268-413\">Bash<\/span><\/p>\n<div class=\"buttons ng-tns-c2477699268-413 ng-star-inserted\"><\/div>\n<\/div>\n<div class=\"formatted-code-block-internal-container ng-tns-c2477699268-413\">\n<div class=\"animated-opacity ng-tns-c2477699268-413\">\n<pre class=\"ng-tns-c2477699268-413\"><code class=\"code-container formatted ng-tns-c2477699268-413\" role=\"text\" data-test-id=\"code-content\" data-sourcepos=\"92:1-94:74\">0 3 * * * \/usr\/bin\/php \/var\/www\/html\/bin\/console dal:refresh:index --quiet\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<p data-sourcepos=\"95:1-95:134\">This updates the index daily at 3 a.m. without affecting server performance during peak business hours.<\/p>\n<h2 data-sourcepos=\"97:1-97:51\">Canonical Tags to Avoid Duplicate Content<\/h2>\n<p data-sourcepos=\"99:1-99:371\"><strong>Duplicate content<\/strong> is one of the biggest challenges in SEO optimization of online shops. In Shopware shops, duplicate content can arise if products are available in several variants, are assigned to several categories or if categories are changed in their structure. <strong>Canonical tags<\/strong> are the most important tool to avoid this. <\/p>\n<p data-sourcepos=\"101:1-101:316\"><strong>Case study:<\/strong> An electronics retailer with over 5,000 products was able to reduce the number of indexed pages in Google by 42% and increase organic traffic by 28% by correctly implementing canonical tags. This shows how important it is to concentrate link power on canonical URLs. <\/p>\n<p data-sourcepos=\"103:1-103:369\">Shopware 6 offers native support for canonical tags, which are generated automatically. For more complex requirements, for example with variant products, specialized plugins such as &#8220;Flexible Canonical Tags for Products&#8221; can be used. These make it possible to set specific canonical tags for products in order to achieve targeted indexing.  <\/p>\n<p data-sourcepos=\"105:1-105:63\"><strong>Advanced canonical strategy for variant products:<\/strong><\/p>\n<ul data-sourcepos=\"107:1-110:0\">\n<li data-sourcepos=\"107:1-107:165\"><strong>Main product as canonical URL:<\/strong> For product variants (e.g. different colors or sizes), the main product page should be set as the canonical URL.<\/li>\n<li data-sourcepos=\"108:1-108:197\"><strong>Independent variants:<\/strong> For significantly different variants that address their own keywords (e.g. &#8220;iPhone 15&#8221; vs. &#8220;iPhone 15 Pro&#8221;), separate canonical URLs should be used.<\/li>\n<li data-sourcepos=\"109:1-110:0\"><strong>Cross-category products:<\/strong> Products that appear in multiple categories should have a canonical tag to the preferred category URL.<\/li>\n<\/ul>\n<p data-sourcepos=\"111:1-111:95\"><strong>Code example for manual canonical implementation (PHP in a Custom Theme Extension):<\/strong><\/p>\n<div class=\"code-block ng-tns-c2477699268-414 ng-trigger ng-trigger-codeBlockRevealAnimation\">\n<div class=\"code-block-decoration header-formatted gds-title-s ng-tns-c2477699268-414 ng-star-inserted\">\n<p><span class=\"ng-tns-c2477699268-414\">PHP<\/span><\/p>\n<div class=\"buttons ng-tns-c2477699268-414 ng-star-inserted\"><\/div>\n<\/div>\n<div class=\"formatted-code-block-internal-container ng-tns-c2477699268-414\">\n<div class=\"animated-opacity ng-tns-c2477699268-414\">\n<pre class=\"ng-tns-c2477699268-414\"><code class=\"code-container formatted ng-tns-c2477699268-414\" role=\"text\" data-test-id=\"code-content\" data-sourcepos=\"112:1-122:2\"><span class=\"hljs-comment\">\/\/ In einem Custom Theme Extension<\/span>\n<span class=\"hljs-comment\">\/\/ Achtung: Dies ist ein vereinfachtes Beispiel und erfordert eine entsprechende Integration in das Shopware-Framework<\/span>\n<span class=\"hljs-variable\">$event<\/span>-&gt;getPage()-&gt;getMetaInformation()-&gt;setCanonical(\n    <span class=\"hljs-keyword\">$this<\/span>-&gt;router-&gt;generate(\n        <span class=\"hljs-string\">'frontend.detail.page'<\/span>,\n        [<span class=\"hljs-string\">'productId'<\/span> =&gt; <span class=\"hljs-variable\">$product<\/span>-&gt;getId()],\n        UrlGeneratorInterface::ABSOLUTE_URL\n    )\n);\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<p data-sourcepos=\"123:1-123:220\">The correct implementation of canonical tags not only prevents duplicate content problems, but also helps to concentrate link equity on the most important pages and improve crawling efficiency.<\/p>\n<h2 data-sourcepos=\"125:1-125:48\">Optimize Pagination and Faceted Navigation<\/h2>\n<p data-sourcepos=\"127:1-127:278\"><strong>Pagination<\/strong> and <strong>faceted navigation<\/strong> are critical areas for SEO optimization of Shopware shops that are not optimally configured by default. Incorrect implementation can lead to crawling problems, duplicate content and wasted crawling budget. <\/p>\n<p data-sourcepos=\"129:1-129:258\"><strong>Best Practice:<\/strong> Use the attributes <code>rel=\"next\"<\/code> and <code>rel=\"prev\"<\/code> for pagination pages to signal the relationship between the pages to Google. Shopware 6 implements these by default, but the implementation should be checked. <\/p>\n<p data-sourcepos=\"131:1-131:60\"><strong>Example of correct pagination implementation (HTML):<\/strong><\/p>\n<div class=\"code-block ng-tns-c2477699268-415 ng-trigger ng-trigger-codeBlockRevealAnimation\">\n<div class=\"code-block-decoration header-formatted gds-title-s ng-tns-c2477699268-415 ng-star-inserted\">\n<p><span class=\"ng-tns-c2477699268-415\">HTML<\/span><\/p>\n<div class=\"buttons ng-tns-c2477699268-415 ng-star-inserted\"><\/div>\n<\/div>\n<div class=\"formatted-code-block-internal-container ng-tns-c2477699268-415\">\n<div class=\"animated-opacity ng-tns-c2477699268-415\">\n<pre class=\"ng-tns-c2477699268-415\"><code class=\"code-container formatted ng-tns-c2477699268-415\" role=\"text\" data-test-id=\"code-content\" data-sourcepos=\"132:1-138:58\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">link<\/span> <span class=\"hljs-attr\">rel<\/span>=<span class=\"hljs-string\">\"next\"<\/span> <span class=\"hljs-attr\">href<\/span>=<span class=\"hljs-string\">\"https:\/\/shop.de\/kategorie\/?p=2\"<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">link<\/span> <span class=\"hljs-attr\">rel<\/span>=<span class=\"hljs-string\">\"prev\"<\/span> <span class=\"hljs-attr\">href<\/span>=<span class=\"hljs-string\">\"https:\/\/shop.de\/kategorie\/\"<\/span>&gt;<\/span>\n\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">link<\/span> <span class=\"hljs-attr\">rel<\/span>=<span class=\"hljs-string\">\"next\"<\/span> <span class=\"hljs-attr\">href<\/span>=<span class=\"hljs-string\">\"https:\/\/shop.de\/kategorie\/?p=3\"<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">link<\/span> <span class=\"hljs-attr\">rel<\/span>=<span class=\"hljs-string\">\"prev\"<\/span> <span class=\"hljs-attr\">href<\/span>=<span class=\"hljs-string\">\"https:\/\/shop.de\/kategorie\/?p=2\"<\/span>&gt;<\/span>\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<p data-sourcepos=\"139:1-139:83\">A clear strategy should be implemented for faceted navigation (filters):<\/p>\n<ul data-sourcepos=\"141:1-143:0\">\n<li data-sourcepos=\"141:1-141:170\"><strong>Indexable filters:<\/strong> Important filters that serve independent search intentions (e.g. &#8220;Red women&#8217;s shoes&#8221;) should be indexable and receive their own meta data.<\/li>\n<li data-sourcepos=\"142:1-143:0\"><strong>Non-indexable filters:<\/strong> Less important or too specific filter combinations should be marked with <code>noindex<\/code> to avoid duplicate content.<\/li>\n<\/ul>\n<p data-sourcepos=\"144:1-144:111\"><strong>Code example for selective indexing of filter combinations (PHP in a Custom Controller Extension):<\/strong><\/p>\n<div class=\"code-block ng-tns-c2477699268-416 ng-trigger ng-trigger-codeBlockRevealAnimation\">\n<div class=\"code-block-decoration header-formatted gds-title-s ng-tns-c2477699268-416 ng-star-inserted\">\n<p><span class=\"ng-tns-c2477699268-416\">PHP<\/span><\/p>\n<div class=\"buttons ng-tns-c2477699268-416 ng-star-inserted\"><\/div>\n<\/div>\n<div class=\"formatted-code-block-internal-container ng-tns-c2477699268-416\">\n<div class=\"animated-opacity ng-tns-c2477699268-416\">\n<pre class=\"ng-tns-c2477699268-416\"><code class=\"code-container formatted ng-tns-c2477699268-416\" role=\"text\" data-test-id=\"code-content\" data-sourcepos=\"145:1-150:1\"><span class=\"hljs-comment\">\/\/ In einem Custom Controller Extension (vereinfacht)<\/span>\n<span class=\"hljs-keyword\">if<\/span> (count(<span class=\"hljs-variable\">$appliedFilters<\/span>) &gt; <span class=\"hljs-number\">2<\/span> || in_array(<span class=\"hljs-variable\">$appliedFilters<\/span>, <span class=\"hljs-keyword\">$this<\/span>-&gt;nonIndexableFilters)) {\n    <span class=\"hljs-variable\">$page<\/span>-&gt;getMetaInformation()-&gt;setRobots(<span class=\"hljs-string\">'NOINDEX,FOLLOW'<\/span>);\n}\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<p data-sourcepos=\"151:1-151:377\"><strong>Practical example:<\/strong> A fashion retailer implemented a selective indexing strategy for its filter combinations, whereby only the 20 most searched combinations were indexable. This led to a reduction in indexed pages of 76% and an improvement in crawling efficiency of 34%, which resulted in faster indexing times for new products. <\/p>\n<h2 data-sourcepos=\"155:1-155:55\">OnPage Optimization: Content, Structure and Meta Data<\/h2>\n<p data-sourcepos=\"157:1-157:175\">OnPage optimization focuses on all elements within your website that you can directly influence to improve your rankings and user experience.<\/p>\n<h3 data-sourcepos=\"159:1-159:31\">Meta Data for Maximum CTR<\/h3>\n<p data-sourcepos=\"161:1-161:292\">The optimization of <strong>meta data<\/strong> is a fundamental aspect of OnPage optimization for Shopware shops. <strong>Title Tags<\/strong> and <strong>Meta Descriptions<\/strong> are the first elements that potential customers see in the search results and have a direct impact on the <strong>Click-Through-Rate (CTR)<\/strong>.<\/p>\n<p data-sourcepos=\"163:1-163:257\"><strong>Current study:<\/strong> An analysis of 1.4 million search results shows that optimized meta descriptions can increase the CTR by an average of 35.7%. For product pages with price information in the meta description, the CTR even increased by up to 47.3%. <\/p>\n<p data-sourcepos=\"165:1-165:209\">Shopware 6 enables the individual adaptation of meta data for each page, category and product. The meta data should contain relevant keywords, but should be formulated naturally and appealingly. <\/p>\n<p data-sourcepos=\"167:1-167:51\"><strong>Optimal title tag structure for Shopware shops:<\/strong><\/p>\n<ul data-sourcepos=\"169:1-172:0\">\n<li data-sourcepos=\"169:1-169:91\"><strong>Product pages:<\/strong> Example: &#8220;Carbon road bike X1 | Lightweight 7.2kg | Trek | BikeProfi&#8221;<\/li>\n<li data-sourcepos=\"170:1-170:88\"><strong>Category pages:<\/strong> Example: &#8220;Women&#8217;s fashion: Dresses, blouses &amp; trousers | FashionStore&#8221;<\/li>\n<li data-sourcepos=\"171:1-172:0\"><strong>Landing pages:<\/strong> Example: &#8220;Winter tires (year) | Over 500 models | Compare now | ReifenDirekt&#8221;<\/li>\n<\/ul>\n<p data-sourcepos=\"173:1-173:244\"><strong>Practical tip for meta descriptions:<\/strong> Use emotional triggers, concrete numbers and clear calls to action in meta descriptions. The optimal length is 140-155 characters to avoid cutoffs in the search results. <\/p>\n<p data-sourcepos=\"175:1-175:50\"><strong>Example of an optimized meta description:<\/strong><\/p>\n<blockquote data-sourcepos=\"176:1-176:154\">\n<p data-sourcepos=\"176:3-176:154\">Discover over 200 high-quality women&#8217;s handbags made of genuine leather. \u2713 30 day return policy \u2713 Free shipping \u2713 5% new customer discount. Shop now!  <\/p>\n<\/blockquote>\n<p data-sourcepos=\"178:1-178:212\"><strong>Automation for large shops:<\/strong> For shops with thousands of products, manual optimization of all meta data is not practical. Here it is recommended to use templates with dynamic variables: <\/p>\n<div class=\"code-block ng-tns-c2477699268-417 ng-trigger ng-trigger-codeBlockRevealAnimation\">\n<div class=\"code-block-decoration header-formatted gds-title-s ng-tns-c2477699268-417 ng-star-inserted\">\n<p><span class=\"ng-tns-c2477699268-417\">PHP<\/span><\/p>\n<div class=\"buttons ng-tns-c2477699268-417 ng-star-inserted\"><\/div>\n<\/div>\n<div class=\"formatted-code-block-internal-container ng-tns-c2477699268-417\">\n<div class=\"animated-opacity ng-tns-c2477699268-417\">\n<pre class=\"ng-tns-c2477699268-417\"><code class=\"code-container formatted ng-tns-c2477699268-417\" role=\"text\" data-test-id=\"code-content\" data-sourcepos=\"179:1-185:170\"><span class=\"hljs-comment\">\/\/ Title-Tag-Template f\u00fcr Produktseiten<\/span>\n<span class=\"hljs-variable\">$titleTemplate<\/span> = <span class=\"hljs-string\">'%product_name% | %main_feature% | Ab %price% \u20ac | %shop_name%'<\/span>;\n\n<span class=\"hljs-comment\">\/\/ Meta-Description-Template f\u00fcr Produktseiten<\/span>\n<span class=\"hljs-variable\">$descriptionTemplate<\/span> = <span class=\"hljs-string\">'Kaufen Sie %product_name% in %color_variants% Farben. %main_benefit%. \u2713 %delivery_time% Lieferzeit \u2713 %warranty% Jahre Garantie. Jetzt bestellen!'<\/span>;\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<p data-sourcepos=\"186:1-186:210\">These templates can then be filled with the specific product data to generate unique and optimized meta data for each product, often via special SEO plugins or custom developments.<\/p>\n<h3 data-sourcepos=\"188:1-188:46\">Product Descriptions and Content Quality<\/h3>\n<p data-sourcepos=\"190:1-190:380\">High-quality product descriptions are crucial for the SEO performance of Shopware shops. Many online retailers make the mistake of adopting manufacturer descriptions 1:1, which leads to external duplicate content. Instead, individual, detailed and value-added descriptions should be created that are optimized for both search engines and customers.  <\/p>\n<p data-sourcepos=\"192:1-192:335\"><strong>Case study:<\/strong> A sporting goods retailer replaced the standard manufacturer descriptions with individually created, detailed descriptions with application examples and expert tips for 500 products. The result: 67% higher organic visibility and 41% more conversions for these products compared to the control group. <\/p>\n<p data-sourcepos=\"194:1-194:55\"><strong>Structure of an SEO-optimized product description:<\/strong><\/p>\n<ul data-sourcepos=\"196:1-201:0\">\n<li data-sourcepos=\"196:1-196:47\">Introductory paragraph with main keyword and USPs<\/li>\n<li data-sourcepos=\"197:1-197:63\">List of the most important properties with H3 headings<\/li>\n<li data-sourcepos=\"198:1-198:36\">Application scenarios and target group<\/li>\n<li data-sourcepos=\"199:1-199:51\">Technical specifications in tabular form<\/li>\n<li data-sourcepos=\"200:1-201:0\">Concluding call-to-action<\/li>\n<\/ul>\n<p data-sourcepos=\"202:1-202:365\"><strong>Important:<\/strong> Use <strong>structured data (schema markup)<\/strong> for products to get rich snippets in the search results. Shopware 6 already implements basic product schema, which should often be expanded to display, for example, ratings, delivery times or specific offers and increase visibility in the SERPs. <\/p>\n<div class=\"code-block ng-tns-c2477699268-418 ng-trigger ng-trigger-codeBlockRevealAnimation\">\n<div class=\"code-block-decoration header-formatted gds-title-s ng-tns-c2477699268-418 ng-star-inserted\">\n<p><span class=\"ng-tns-c2477699268-418\">JSON<\/span><\/p>\n<div class=\"buttons ng-tns-c2477699268-418 ng-star-inserted\"><\/div>\n<\/div>\n<div class=\"formatted-code-block-internal-container ng-tns-c2477699268-418\">\n<div class=\"animated-opacity ng-tns-c2477699268-418\">\n<pre class=\"ng-tns-c2477699268-418\"><code class=\"code-container formatted ng-tns-c2477699268-418\" role=\"text\" data-test-id=\"code-content\" data-sourcepos=\"204:1-233:1\">{\n  <span class=\"hljs-attr\">\"@context\"<\/span>: <span class=\"hljs-string\">\"https:\/\/schema.org\/\"<\/span>,\n  <span class=\"hljs-attr\">\"@type\"<\/span>: <span class=\"hljs-string\">\"Product\"<\/span>,\n  <span class=\"hljs-attr\">\"name\"<\/span>: <span class=\"hljs-string\">\"Trek Domane SL 6\"<\/span>,\n  <span class=\"hljs-attr\">\"image\"<\/span>: <span class=\"hljs-string\">\"https:\/\/example.com\/images\/trek-domane-sl6.jpg\"<\/span>,\n  <span class=\"hljs-attr\">\"description\"<\/span>: <span class=\"hljs-string\">\"Professionelles Carbon-Rennrad mit IsoSpeed-Technologie f\u00fcr maximalen Komfort auf langen Strecken.\"<\/span>,\n  <span class=\"hljs-attr\">\"brand\"<\/span>: {\n    <span class=\"hljs-attr\">\"@type\"<\/span>: <span class=\"hljs-string\">\"Brand\"<\/span>,\n    <span class=\"hljs-attr\">\"name\"<\/span>: <span class=\"hljs-string\">\"Trek\"<\/span>\n  },\n  <span class=\"hljs-attr\">\"offers\"<\/span>: {\n    <span class=\"hljs-attr\">\"@type\"<\/span>: <span class=\"hljs-string\">\"Offer\"<\/span>,\n    <span class=\"hljs-attr\">\"url\"<\/span>: <span class=\"hljs-string\">\"https:\/\/example.com\/trek-domane-sl6\"<\/span>,\n    <span class=\"hljs-attr\">\"priceCurrency\"<\/span>: <span class=\"hljs-string\">\"EUR\"<\/span>,\n    <span class=\"hljs-attr\">\"price\"<\/span>: <span class=\"hljs-string\">\"3499.00\"<\/span>,\n    <span class=\"hljs-attr\">\"priceValidUntil\"<\/span>: <span class=\"hljs-string\">\"20..-12-31\"<\/span>,\n    <span class=\"hljs-attr\">\"availability\"<\/span>: <span class=\"hljs-string\">\"https:\/\/schema.org\/InStock\"<\/span>,\n    <span class=\"hljs-attr\">\"seller\"<\/span>: {\n      <span class=\"hljs-attr\">\"@type\"<\/span>: <span class=\"hljs-string\">\"Organization\"<\/span>,\n      <span class=\"hljs-attr\">\"name\"<\/span>: <span class=\"hljs-string\">\"BikeProfi\"<\/span>\n    }\n  },\n  <span class=\"hljs-attr\">\"aggregateRating\"<\/span>: {\n    <span class=\"hljs-attr\">\"@type\"<\/span>: <span class=\"hljs-string\">\"AggregateRating\"<\/span>,\n    <span class=\"hljs-attr\">\"ratingValue\"<\/span>: <span class=\"hljs-string\">\"4.8\"<\/span>,\n    <span class=\"hljs-attr\">\"reviewCount\"<\/span>: <span class=\"hljs-string\">\"47\"<\/span>\n  }\n}\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<h3 data-sourcepos=\"235:1-235:42\">Blog Integration and Content Marketing<\/h3>\n<p data-sourcepos=\"237:1-237:280\">Shopware offers an integrated blog system that can be used for <strong>content marketing<\/strong> and SEO purposes. A regularly maintained blog with high-quality content can strengthen domain authority, cover long-tail keywords and generate additional organic traffic. <\/p>\n<p data-sourcepos=\"239:1-239:57\"><strong>Current content marketing trends for Shopware shops:<\/strong><\/p>\n<ul data-sourcepos=\"241:1-253:0\">\n<li data-sourcepos=\"241:1-242:212\"><strong>Thematic content clusters:<\/strong> Create comprehensive pillar pages on main topics and link them to more specific articles. This improves thematic relevance and internal linking structure. <strong>Example:<\/strong> A pillar page on the topic of &#8220;Mountain bike buying advice&#8221; links to specific articles such as &#8220;Suspension systems compared&#8221;, &#8220;Carbon vs. aluminum frames&#8221; and &#8220;Finding the right frame size.&#8221; <\/li>\n<li data-sourcepos=\"243:1-251:7\"><strong>Interactive content:<\/strong> Implement product finders, size advisors or configuration tools that help users find the right product and at the same time send valuable user signals to Google.\n<div class=\"code-block ng-tns-c2477699268-419 ng-trigger ng-trigger-codeBlockRevealAnimation\">\n<div class=\"code-block-decoration header-formatted gds-title-s ng-tns-c2477699268-419 ng-star-inserted\">\n<p><span class=\"ng-tns-c2477699268-419\">JavaScript<\/span><\/p>\n<div class=\"buttons ng-tns-c2477699268-419 ng-star-inserted\"><\/div>\n<\/div>\n<div class=\"formatted-code-block-internal-container ng-tns-c2477699268-419\">\n<div class=\"animated-opacity ng-tns-c2477699268-419\">\n<pre class=\"ng-tns-c2477699268-419\"><code class=\"code-container formatted ng-tns-c2477699268-419\" role=\"text\" data-test-id=\"code-content\" data-sourcepos=\"244:5-251:7\"><span class=\"hljs-comment\">\/\/ Beispiel f\u00fcr eine einfache Produktfilter-Logik<\/span>\n<span class=\"hljs-built_in\">document<\/span>.getElementById(<span class=\"hljs-string\">'productFilter'<\/span>).addEventListener(<span class=\"hljs-string\">'change'<\/span>, <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span>() <\/span>{\n    <span class=\"hljs-keyword\">const<\/span> selectedCategory = <span class=\"hljs-built_in\">this<\/span>.value;\n    <span class=\"hljs-comment\">\/\/ Hier Logik zum Filtern und Anzeigen der Produkte basierend auf selectedCategory<\/span>\n    <span class=\"hljs-built_in\">console<\/span>.log(<span class=\"hljs-string\">'Ausgew\u00e4hlte Kategorie:'<\/span>, selectedCategory);\n});\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/li>\n<li data-sourcepos=\"252:1-253:0\"><strong>Expert articles and interviews:<\/strong> Publish interviews with industry experts or guest articles from recognized authorities to strengthen the <strong>E-E-A-T signals<\/strong> (Experience, Expertise, Authoritativeness, Trustworthiness).<\/li>\n<\/ul>\n<p data-sourcepos=\"254:1-254:240\"><strong>Case study:<\/strong> An outdoor outfitter was able to increase the average time spent on its blog by 3:42 minutes and reduce the bounce rate by 24% through monthly expert interviews with well-known mountaineers and trekking guides.<\/p>\n<p data-sourcepos=\"256:1-257:229\"><strong>SEO-optimized blog URL structure in Shopware:<\/strong> The standard blog URL structure in Shopware 6 can be adapted via the SEO router settings. For optimal SEO results, the following structure is recommended in the SEO URL Template for blog articles:  <code>{$blogArticle.title|lower}\/<\/code><\/p>\n<p data-sourcepos=\"259:1-259:140\">This leads to clean URLs such as <code>https:\/\/example.com\/blog\/mountainbike-kaufberatung\/<\/code> instead of the standard structure with category path.<\/p>\n<p data-sourcepos=\"261:1-261:185\"><strong>Important:<\/strong> Pay attention to consistency in the URL structures. If your product pages end with a trailing slash, your blog article URLs should also end with a trailing slash. <\/p>\n<p data-sourcepos=\"263:1-263:48\"><strong>Content calendar template for Shopware shops:<\/strong><\/p>\n<div class=\"horizontal-scroll-wrapper\">\n<div class=\"table-block-component\">\n<div class=\"table-block has-export-button\">\n<div class=\"table-content not-end-of-paragraph\">\n<table data-sourcepos=\"265:1-270:95\">\n<tbody>\n<tr data-sourcepos=\"265:1-265:95\">\n<th align=\"left\" data-sourcepos=\"265:1-265:10\">Month<\/th>\n<th align=\"left\" data-sourcepos=\"265:12-265:28\">Topic<\/th>\n<th align=\"left\" data-sourcepos=\"265:30-265:51\">Keyword Focus<\/th>\n<th align=\"left\" data-sourcepos=\"265:53-265:71\">Content Type<\/th>\n<th align=\"left\" data-sourcepos=\"265:73-265:93\">Linked Products<\/th>\n<\/tr>\n<tr data-sourcepos=\"267:1-267:95\">\n<td align=\"left\" data-sourcepos=\"267:1-267:10\">January<\/td>\n<td align=\"left\" data-sourcepos=\"267:12-267:28\">Winter Trends<\/td>\n<td align=\"left\" data-sourcepos=\"267:30-267:51\">&#8220;winter fashion 20..&#8221;<\/td>\n<td align=\"left\" data-sourcepos=\"267:53-267:71\">Trend Guide<\/td>\n<td align=\"left\" data-sourcepos=\"267:73-267:93\">Winter Collection<\/td>\n<\/tr>\n<tr data-sourcepos=\"268:1-268:95\">\n<td align=\"left\" data-sourcepos=\"268:1-268:10\">February<\/td>\n<td align=\"left\" data-sourcepos=\"268:12-268:28\">Valentine&#8217;s Day<\/td>\n<td align=\"left\" data-sourcepos=\"268:30-268:51\">&#8220;gifts partner&#8221;<\/td>\n<td align=\"left\" data-sourcepos=\"268:53-268:71\">Gift Guide<\/td>\n<td align=\"left\" data-sourcepos=\"268:73-268:93\">Gift Sets<\/td>\n<\/tr>\n<tr data-sourcepos=\"269:1-269:96\">\n<td align=\"left\" data-sourcepos=\"269:1-269:10\">March<\/td>\n<td align=\"left\" data-sourcepos=\"269:12-269:28\">Spring Cleaning<\/td>\n<td align=\"left\" data-sourcepos=\"269:30-269:52\">&#8220;spring cleaning tips&#8221;<\/td>\n<td align=\"left\" data-sourcepos=\"269:54-269:72\">How-To<\/td>\n<td align=\"left\" data-sourcepos=\"269:74-269:94\">Cleaning Products<\/td>\n<\/tr>\n<tr data-sourcepos=\"270:1-270:95\">\n<td align=\"left\" data-sourcepos=\"270:1-270:10\">April<\/td>\n<td align=\"left\" data-sourcepos=\"270:12-270:28\">Easter Special<\/td>\n<td align=\"left\" data-sourcepos=\"270:30-270:51\">&#8220;easter decoration&#8221;<\/td>\n<td align=\"left\" data-sourcepos=\"270:53-270:71\">Inspiration<\/td>\n<td align=\"left\" data-sourcepos=\"270:73-270:93\">Decoration Items<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-sourcepos=\"272:1-272:157\">A structured content calendar helps to address seasonal topics in a timely manner and ensures a consistent publishing frequency.<\/p>\n<h2 data-sourcepos=\"276:1-276:67\">Performance Optimization: Core Web Vitals and Loading Speed<\/h2>\n<p data-sourcepos=\"278:1-278:345\">Google&#8217;s <strong>Core Web Vitals<\/strong> \u2013 Largest Contentful Paint (LCP), Interaction to Next Paint (INP), and Cumulative Layout Shift (CLS) \u2013 are now important ranking factors. Shopware 6 is fundamentally well-optimized for these metrics, but benchmark data shows significant differences between different shop implementations. <\/p>\n<p data-sourcepos=\"280:1-280:44\"><strong>Current benchmark data for Shopware 6:<\/strong><\/p>\n<div class=\"horizontal-scroll-wrapper\">\n<div class=\"table-block-component\">\n<div class=\"table-block has-export-button\">\n<div class=\"table-content not-end-of-paragraph\">\n<table data-sourcepos=\"282:1-286:96\">\n<tbody>\n<tr data-sourcepos=\"282:1-282:96\">\n<th align=\"left\" data-sourcepos=\"282:1-282:21\">Performance Segment<\/th>\n<th align=\"left\" data-sourcepos=\"282:23-282:50\">Average Loading Time<\/th>\n<th align=\"left\" data-sourcepos=\"282:52-282:72\">LCP (75th Percentile)<\/th>\n<th align=\"left\" data-sourcepos=\"282:74-282:83\">CLS Value<\/th>\n<th align=\"left\" data-sourcepos=\"282:85-282:94\">INP Value<\/th>\n<\/tr>\n<tr data-sourcepos=\"284:1-284:96\">\n<td align=\"left\" data-sourcepos=\"284:1-284:21\">Top 10% of Shops<\/td>\n<td align=\"left\" data-sourcepos=\"284:23-284:50\">300ms<\/td>\n<td align=\"left\" data-sourcepos=\"284:52-284:72\">1.2s<\/td>\n<td align=\"left\" data-sourcepos=\"284:74-284:83\">0.05<\/td>\n<td align=\"left\" data-sourcepos=\"284:85-284:94\">180ms<\/td>\n<\/tr>\n<tr data-sourcepos=\"285:1-285:96\">\n<td align=\"left\" data-sourcepos=\"285:1-285:21\">Average<\/td>\n<td align=\"left\" data-sourcepos=\"285:23-285:50\">750ms<\/td>\n<td align=\"left\" data-sourcepos=\"285:52-285:72\">2.4s<\/td>\n<td align=\"left\" data-sourcepos=\"285:74-285:83\">0.12<\/td>\n<td align=\"left\" data-sourcepos=\"285:85-285:94\">250ms<\/td>\n<\/tr>\n<tr data-sourcepos=\"286:1-286:96\">\n<td align=\"left\" data-sourcepos=\"286:1-286:21\">Bottom 25%<\/td>\n<td align=\"left\" data-sourcepos=\"286:23-286:50\">&gt;1000ms<\/td>\n<td align=\"left\" data-sourcepos=\"286:52-286:72\">3.8s<\/td>\n<td align=\"left\" data-sourcepos=\"286:74-286:83\">0.25<\/td>\n<td align=\"left\" data-sourcepos=\"286:85-286:94\">350ms<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-sourcepos=\"288:1-288:139\"><strong>Note:<\/strong> In 2024, Google replaced FID with INP (Interaction to Next Paint), which measures the responsiveness of a website more comprehensively.<\/p>\n<h3 data-sourcepos=\"290:1-290:73\">Specific Measures to Improve Core Web Vitals in Shopware 6<\/h3>\n<h4 data-sourcepos=\"292:1-292:46\">Optimize LCP (Largest Contentful Paint)<\/h4>\n<p data-sourcepos=\"294:1-294:141\">The LCP measures the loading time of the largest visible element on a page. The following measures can be taken to improve it: <\/p>\n<ul data-sourcepos=\"296:1-299:0\">\n<li data-sourcepos=\"296:1-296:76\">Implement a <strong>progressive image loading method<\/strong> for hero images.<\/li>\n<li data-sourcepos=\"297:1-297:49\">Use the <strong>WebP format<\/strong> for all images.<\/li>\n<li data-sourcepos=\"298:1-299:0\">Rely on <strong>server-side rendering<\/strong> for critical content.<\/li>\n<\/ul>\n<p data-sourcepos=\"300:1-300:72\"><strong>Code example for optimized image loading (Twig in the Shopware template):<\/strong><\/p>\n<div class=\"code-block ng-tns-c2477699268-420 ng-trigger ng-trigger-codeBlockRevealAnimation\">\n<div class=\"code-block-decoration header-formatted gds-title-s ng-tns-c2477699268-420 ng-star-inserted\">\n<p><span class=\"ng-tns-c2477699268-420\">Twig<\/span><\/p>\n<div class=\"buttons ng-tns-c2477699268-420 ng-star-inserted\"><\/div>\n<\/div>\n<div class=\"formatted-code-block-internal-container ng-tns-c2477699268-420\">\n<div class=\"animated-opacity ng-tns-c2477699268-420\">\n<pre class=\"ng-tns-c2477699268-420\"><code class=\"code-container formatted ng-tns-c2477699268-420\" role=\"text\" data-test-id=\"code-content\" data-sourcepos=\"301:1-314:13\"><span class=\"hljs-comment\">{# Beispiel f\u00fcr ein progressives Bildladen mit responsiven Bildern und WebP #}<\/span><span class=\"xml\">\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">picture<\/span>&gt;<\/span>\n  <\/span><span class=\"hljs-comment\">{# WebP-Quelle zuerst, damit moderne Browser dies bevorzugen #}<\/span><span class=\"xml\">\n  <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">source<\/span> <span class=\"hljs-attr\">srcset<\/span>=<span class=\"hljs-string\">\"<\/span><\/span><\/span><span class=\"hljs-template-variable\">{{ asset('bild.webp')|thumbnail('my_webp_size') }}<\/span><span class=\"xml\"><span class=\"hljs-tag\"><span class=\"hljs-string\">\"<\/span> <span class=\"hljs-attr\">type<\/span>=<span class=\"hljs-string\">\"image\/webp\"<\/span>&gt;<\/span>\n  <\/span><span class=\"hljs-comment\">{# Fallback f\u00fcr Browser, die WebP nicht unterst\u00fctzen #}<\/span><span class=\"xml\">\n  <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">img<\/span> <span class=\"hljs-attr\">src<\/span>=<span class=\"hljs-string\">\"<\/span><\/span><\/span><span class=\"hljs-template-variable\">{{ asset('bild.jpg')|thumbnail('my_jpg_size') }}<\/span><span class=\"xml\"><span class=\"hljs-tag\"><span class=\"hljs-string\">\"<\/span>\n       <\/span><\/span><span class=\"hljs-comment\">{# data-src f\u00fcr Lazy Loading, falls via JavaScript umgesetzt #}<\/span><span class=\"xml\"><span class=\"hljs-tag\">\n       <span class=\"hljs-attr\">data-src<\/span>=<span class=\"hljs-string\">\"<\/span><\/span><\/span><span class=\"hljs-template-variable\">{{ asset('bild_gross.jpg') }}<\/span><span class=\"xml\"><span class=\"hljs-tag\"><span class=\"hljs-string\">\"<\/span>\n       <span class=\"hljs-attr\">alt<\/span>=<span class=\"hljs-string\">\"Beschreibung des Hero-Images\"<\/span>\n       <span class=\"hljs-attr\">width<\/span>=<span class=\"hljs-string\">\"1920\"<\/span> <span class=\"hljs-attr\">height<\/span>=<span class=\"hljs-string\">\"1080\"<\/span> <\/span><\/span><span class=\"hljs-comment\">{# Explizite Dimensionen f\u00fcr CLS-Vermeidung #}<\/span><span class=\"xml\"><span class=\"hljs-tag\">\n       <span class=\"hljs-attr\">loading<\/span>=<span class=\"hljs-string\">\"lazy\"<\/span> <\/span><\/span><span class=\"hljs-comment\">{# Browser-natives Lazy Loading f\u00fcr Bilder au\u00dferhalb des initialen Viewports #}<\/span><span class=\"xml\"><span class=\"hljs-tag\">&gt;<\/span>\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">picture<\/span>&gt;<\/span>\n<\/span><\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<p data-sourcepos=\"315:1-315:214\">This example shows how to use <code>picture<\/code> elements for the WebP format, set <code>width<\/code>\/<code>height<\/code> attributes for CLS avoidance, and use <code>loading=\"lazy\"<\/code> for images outside the initial viewport.<\/p>\n<h4 data-sourcepos=\"317:1-317:47\">Improve INP (Interaction to Next Paint)<\/h4>\n<p data-sourcepos=\"319:1-319:158\">INP measures the responsiveness of a website to user input (clicks, taps, keyboard input). A good INP ensures a smooth user experience. <\/p>\n<ul data-sourcepos=\"321:1-324:0\">\n<li data-sourcepos=\"321:1-321:61\">Minimize <strong>JavaScript bundles<\/strong> through code splitting.<\/li>\n<li data-sourcepos=\"322:1-322:80\">Implement <strong>event delegation<\/strong> instead of many individual event listeners.<\/li>\n<li data-sourcepos=\"323:1-324:0\">Use <strong>web workers<\/strong> for complex calculations.<\/li>\n<\/ul>\n<p data-sourcepos=\"325:1-326:181\"><strong>Example of event delegation (JavaScript):<\/strong> Instead of assigning an event listener to each individual element, delegate the event to a parent element. This reduces overhead and improves interactivity. <\/p>\n<div class=\"code-block ng-tns-c2477699268-421 ng-trigger ng-trigger-codeBlockRevealAnimation\">\n<div class=\"code-block-decoration header-formatted gds-title-s ng-tns-c2477699268-421 ng-star-inserted\">\n<p><span class=\"ng-tns-c2477699268-421\">JavaScript<\/span><\/p>\n<div class=\"buttons ng-tns-c2477699268-421 ng-star-inserted\"><\/div>\n<\/div>\n<div class=\"formatted-code-block-internal-container ng-tns-c2477699268-421\">\n<div class=\"animated-opacity ng-tns-c2477699268-421\">\n<pre class=\"ng-tns-c2477699268-421\"><code class=\"code-container formatted ng-tns-c2477699268-421\" role=\"text\" data-test-id=\"code-content\" data-sourcepos=\"327:1-340:3\"><span class=\"hljs-comment\">\/\/ Schlechtes Beispiel: Viele Event-Listener (auskommentiert)<\/span>\n<span class=\"hljs-comment\">\/\/ document.querySelectorAll('.button').forEach(button =&gt; {<\/span>\n<span class=\"hljs-comment\">\/\/     button.addEventListener('click', () =&gt; { \/* do something *\/ });<\/span>\n<span class=\"hljs-comment\">\/\/ });<\/span>\n\n<span class=\"hljs-comment\">\/\/ Gutes Beispiel: Event-Delegation<\/span>\n<span class=\"hljs-built_in\">document<\/span>.getElementById(<span class=\"hljs-string\">'parentContainer'<\/span>).addEventListener(<span class=\"hljs-string\">'click'<\/span>, <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span>(<span class=\"hljs-params\">event<\/span>) <\/span>{\n    <span class=\"hljs-keyword\">if<\/span> (event.target.classList.contains(<span class=\"hljs-string\">'button'<\/span>)) {\n        <span class=\"hljs-comment\">\/\/ Logik f\u00fcr den Klick auf einen Button innerhalb des Containers<\/span>\n        <span class=\"hljs-built_in\">console<\/span>.log(<span class=\"hljs-string\">'Button geklickt:'<\/span>, event.target.textContent);\n    }\n});\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<h4 data-sourcepos=\"342:1-342:45\">Reduce CLS (Cumulative Layout Shift)<\/h4>\n<p data-sourcepos=\"344:1-344:99\">CLS measures the visual stability of a page and the frequency of unexpected layout shifts.<\/p>\n<ul data-sourcepos=\"346:1-349:0\">\n<li data-sourcepos=\"346:1-346:78\">Define <strong>explicit dimensions<\/strong> for all images and video elements.<\/li>\n<li data-sourcepos=\"347:1-347:94\">Reserve space for dynamically loaded content such as advertisements, embeds, or iFrames.<\/li>\n<li data-sourcepos=\"348:1-349:0\">Avoid subsequently inserting content above the current viewport.<\/li>\n<\/ul>\n<p data-sourcepos=\"350:1-351:126\"><strong>Example of placeholders for dynamic content (CSS):<\/strong> Reserve the necessary space for dynamically loaded elements before they appear to avoid layout shifts.<\/p>\n<div class=\"code-block ng-tns-c2477699268-422 ng-trigger ng-trigger-codeBlockRevealAnimation\">\n<div class=\"code-block-decoration header-formatted gds-title-s ng-tns-c2477699268-422 ng-star-inserted\">\n<p><span class=\"ng-tns-c2477699268-422\">CSS<\/span><\/p>\n<div class=\"buttons ng-tns-c2477699268-422 ng-star-inserted\"><\/div>\n<\/div>\n<div class=\"formatted-code-block-internal-container ng-tns-c2477699268-422\">\n<div class=\"animated-opacity ng-tns-c2477699268-422\">\n<pre class=\"ng-tns-c2477699268-422\"><code class=\"code-container formatted ng-tns-c2477699268-422\" role=\"text\" data-test-id=\"code-content\" data-sourcepos=\"352:1-367:1\"><span class=\"hljs-comment\">\/* Beispiel f\u00fcr einen Platzhalter f\u00fcr Werbung oder andere dynamische Inhalte *\/<\/span>\n<span class=\"hljs-selector-class\">.ad-container<\/span> {\n    <span class=\"hljs-attribute\">min-height<\/span>: <span class=\"hljs-number\">250px<\/span>; <span class=\"hljs-comment\">\/* Oder eine feste H\u00f6he, wenn bekannt *\/<\/span>\n    <span class=\"hljs-attribute\">width<\/span>: <span class=\"hljs-number\">300px<\/span>; <span class=\"hljs-comment\">\/* Oder eine feste Breite *\/<\/span>\n    <span class=\"hljs-attribute\">background-color<\/span>: <span class=\"hljs-number\">#f0f0f0<\/span>; <span class=\"hljs-comment\">\/* Optional: visueller Hinweis *\/<\/span>\n    <span class=\"hljs-attribute\">display<\/span>: block; <span class=\"hljs-comment\">\/* Stellt sicher, dass der Platz eingenommen wird *\/<\/span>\n}\n\n<span class=\"hljs-comment\">\/* Oder spezifische Dimensionen f\u00fcr Bilder, die dynamisch geladen werden k\u00f6nnten *\/<\/span>\n<span class=\"hljs-selector-tag\">img<\/span> {\n    aspect-ratio: <span class=\"hljs-built_in\">attr<\/span>(width) \/ <span class=\"hljs-built_in\">attr<\/span>(height); <span class=\"hljs-comment\">\/* Moderne CSS-Eigenschaft *\/<\/span>\n    <span class=\"hljs-attribute\">max-width<\/span>: <span class=\"hljs-number\">100%<\/span>;\n    <span class=\"hljs-attribute\">height<\/span>: auto;\n}\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<p data-sourcepos=\"368:1-368:415\"><strong>Case Study:<\/strong> An electronics retailer optimized its Shopware 6 installation with a focus on Core Web Vitals. By implementing server-side rendering, optimized asset loading, and improved caching strategies, it was able to reduce its LCP from 3.2s to 1.4s. This led to a 24% increase in the conversion rate and an improvement in the average position in Google by 2.7 places.  <\/p>\n<h3 data-sourcepos=\"370:1-370:44\">Mobile Optimization and Responsive Design<\/h3>\n<p data-sourcepos=\"372:1-372:279\"><strong>Mobile-first indexing<\/strong> has been the standard at Google for years, which means that the mobile version of a website is crucial for ranking. Shopware 6 incorporates responsive design principles, but these must be fine-tuned for optimal SEO performance. <\/p>\n<p data-sourcepos=\"374:1-374:261\"><strong>Current statistic:<\/strong> 73% of all e-commerce transactions are now completed on mobile devices, with the average conversion rate on smartphones only 0.3 percentage points below the desktop rate for optimally optimized shops.<\/p>\n<p data-sourcepos=\"376:1-376:66\"><strong>Advanced Mobile Optimization Strategies for Shopware 6:<\/strong><\/p>\n<ul data-sourcepos=\"378:1-406:7\">\n<li data-sourcepos=\"378:1-387:7\"><strong>Adaptive Serving for Critical Pages:<\/strong> Implement device-specific optimizations for key pages such as product detail pages and checkout. (Note that this often requires specialized plugins or custom development in Shopware.)\n<div class=\"code-block ng-tns-c2477699268-423 ng-trigger ng-trigger-codeBlockRevealAnimation\">\n<div class=\"code-block-decoration header-formatted gds-title-s ng-tns-c2477699268-423 ng-star-inserted\">\n<p><span class=\"ng-tns-c2477699268-423\">PHP<\/span><\/p>\n<div class=\"buttons ng-tns-c2477699268-423 ng-star-inserted\"><\/div>\n<\/div>\n<div class=\"formatted-code-block-internal-container ng-tns-c2477699268-423\">\n<div class=\"animated-opacity ng-tns-c2477699268-423\">\n<pre class=\"ng-tns-c2477699268-423\"><code class=\"code-container formatted ng-tns-c2477699268-423\" role=\"text\" data-test-id=\"code-content\" data-sourcepos=\"379:5-387:5\"><span class=\"hljs-comment\">\/\/ Beispiel (vereinfacht) f\u00fcr adaptive Inhalte basierend auf User-Agent<\/span>\n<span class=\"hljs-comment\">\/\/ Dies erfordert eine detaillierte Implementierung in einem Custom Plugin oder Event-Subscriber<\/span>\n<span class=\"hljs-keyword\">if<\/span> (<span class=\"hljs-variable\">$request<\/span>-&gt;isMobile()) {\n    <span class=\"hljs-variable\">$event<\/span>-&gt;getPage()-&gt;addExtension(<span class=\"hljs-string\">'mobile_optimized_content'<\/span>, <span class=\"hljs-keyword\">new<\/span> ArrayEntity([<span class=\"hljs-string\">'template'<\/span> =&gt; <span class=\"hljs-string\">'mobile_product_detail.html.twig'<\/span>]));\n} <span class=\"hljs-keyword\">else<\/span> {\n    <span class=\"hljs-variable\">$event<\/span>-&gt;getPage()-&gt;addExtension(<span class=\"hljs-string\">'desktop_optimized_content'<\/span>, <span class=\"hljs-keyword\">new<\/span> ArrayEntity([<span class=\"hljs-string\">'template'<\/span> =&gt; <span class=\"hljs-string\">'desktop_product_detail.html.twig'<\/span>]));\n}\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/li>\n<li data-sourcepos=\"388:1-395:7\"><strong>Touch-optimized interaction elements:<\/strong> Ensure that all clickable elements are at least 44x44px in size and have sufficient spacing between them.\n<div class=\"code-block ng-tns-c2477699268-424 ng-trigger ng-trigger-codeBlockRevealAnimation\">\n<div class=\"code-block-decoration header-formatted gds-title-s ng-tns-c2477699268-424 ng-star-inserted\">\n<p><span class=\"ng-tns-c2477699268-424\">CSS<\/span><\/p>\n<div class=\"buttons ng-tns-c2477699268-424 ng-star-inserted\"><\/div>\n<\/div>\n<div class=\"formatted-code-block-internal-container ng-tns-c2477699268-424\">\n<div class=\"animated-opacity ng-tns-c2477699268-424\">\n<pre class=\"ng-tns-c2477699268-424\"><code class=\"code-container formatted ng-tns-c2477699268-424\" role=\"text\" data-test-id=\"code-content\" data-sourcepos=\"389:5-395:5\"><span class=\"hljs-selector-class\">.button<\/span>, <span class=\"hljs-selector-class\">.icon<\/span> {\n    <span class=\"hljs-attribute\">min-width<\/span>: <span class=\"hljs-number\">44px<\/span>;\n    <span class=\"hljs-attribute\">min-height<\/span>: <span class=\"hljs-number\">44px<\/span>;\n    <span class=\"hljs-attribute\">padding<\/span>: <span class=\"hljs-number\">8px<\/span>; <span class=\"hljs-comment\">\/* F\u00fcr zus\u00e4tzlichen Klickbereich *\/<\/span>\n}\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/li>\n<li data-sourcepos=\"396:1-402:7\"><strong>Optimized product images for mobile devices:<\/strong> Implement a responsive image system with different image sizes for different devices.\n<div class=\"code-block ng-tns-c2477699268-425 ng-trigger ng-trigger-codeBlockRevealAnimation\">\n<div class=\"code-block-decoration header-formatted gds-title-s ng-tns-c2477699268-425 ng-star-inserted\">\n<p><span class=\"ng-tns-c2477699268-425\">HTML<\/span><\/p>\n<div class=\"buttons ng-tns-c2477699268-425 ng-star-inserted\"><\/div>\n<\/div>\n<div class=\"formatted-code-block-internal-container ng-tns-c2477699268-425\">\n<div class=\"animated-opacity ng-tns-c2477699268-425\">\n<pre class=\"ng-tns-c2477699268-425\"><code class=\"code-container formatted ng-tns-c2477699268-425\" role=\"text\" data-test-id=\"code-content\" data-sourcepos=\"397:5-402:42\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">img<\/span> <span class=\"hljs-attr\">srcset<\/span>=<span class=\"hljs-string\">\"product-small.jpg 480w, product-medium.jpg 800w, product-large.jpg 1200w\"<\/span>\n     <span class=\"hljs-attr\">sizes<\/span>=<span class=\"hljs-string\">\"(max-width: 600px) 480px, (max-width: 1000px) 800px, 1200px\"<\/span>\n     <span class=\"hljs-attr\">src<\/span>=<span class=\"hljs-string\">\"product-large.jpg\"<\/span>\n     <span class=\"hljs-attr\">alt<\/span>=<span class=\"hljs-string\">\"Produktbild\"<\/span> <span class=\"hljs-attr\">loading<\/span>=<span class=\"hljs-string\">\"lazy\"<\/span>&gt;<\/span>\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/li>\n<li data-sourcepos=\"403:1-406:7\"><strong>Mobile-specific functions:<\/strong> Use mobile-specific functions such as click-to-call, local inventory display, and GPS-based location search.\n<div class=\"code-block ng-tns-c2477699268-426 ng-trigger ng-trigger-codeBlockRevealAnimation\">\n<div class=\"code-block-decoration header-formatted gds-title-s ng-tns-c2477699268-426 ng-star-inserted\">\n<p><span class=\"ng-tns-c2477699268-426\">HTML<\/span><\/p>\n<div class=\"buttons ng-tns-c2477699268-426 ng-star-inserted\"><\/div>\n<\/div>\n<div class=\"formatted-code-block-internal-container ng-tns-c2477699268-426\">\n<div class=\"animated-opacity ng-tns-c2477699268-426\">\n<pre class=\"ng-tns-c2477699268-426\"><code class=\"code-container formatted ng-tns-c2477699268-426\" role=\"text\" data-test-id=\"code-content\" data-sourcepos=\"404:5-406:75\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">a<\/span> <span class=\"hljs-attr\">href<\/span>=<span class=\"hljs-string\">\"tel:+49123456789\"<\/span> <span class=\"hljs-attr\">class<\/span>=<span class=\"hljs-string\">\"mobile-only\"<\/span>&gt;<\/span>Jetzt anrufen!<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">a<\/span>&gt;<\/span>\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/li>\n<\/ul>\n<p data-sourcepos=\"407:1-407:280\"><strong>Practical example:<\/strong> A furniture retailer implemented a mobile-optimized product detail page with simplified navigation, larger product images, and an optimized checkout process. The mobile conversion rate increased by 41%, while the cart abandonment rate decreased by 28%. <\/p>\n<h2 data-sourcepos=\"411:1-411:34\">Other Technical SEO Factors<\/h2>\n<p data-sourcepos=\"413:1-413:141\">In addition to the points already mentioned, there are other technical backend configurations that are essential for search engine optimization.<\/p>\n<h3 data-sourcepos=\"415:1-415:40\">Optimized Robots.Txt for Shopware 6<\/h3>\n<p data-sourcepos=\"417:1-417:152\">The <code>robots.txt<\/code> is a text file that gives search engine crawlers instructions on which areas of your website they may or may not visit.<\/p>\n<div class=\"code-block ng-tns-c2477699268-427 ng-trigger ng-trigger-codeBlockRevealAnimation\">\n<div class=\"formatted-code-block-internal-container ng-tns-c2477699268-427\">\n<div class=\"animated-opacity ng-tns-c2477699268-427\">\n<pre class=\"ng-tns-c2477699268-427\"><code class=\"code-container formatted ng-tns-c2477699268-427 no-decoration-radius\" role=\"text\" data-test-id=\"code-content\" data-sourcepos=\"419:1-438:14\">User-agent: *\nDisallow: \/account\/\nDisallow: \/checkout\/\nDisallow: \/widgets\/\nDisallow: \/api\/\nDisallow: \/*?p=*\nDisallow: \/*?order=*\nDisallow: \/*?manufacturer=*\n\n# Erlauben Sie wichtige Filter, die indexiert werden sollen\nAllow: \/*?color=*\nAllow: \/*?size=*\n\n# Sitemap-Pfad\nSitemap: https:\/\/example.com\/sitemap.xml\n\n# Crawl-Rate-Begrenzung f\u00fcr bessere Server-Performance (Hinweis: Google ignoriert dies oft)\nCrawl-delay: 1\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<p data-sourcepos=\"439:1-439:154\"><strong>Important:<\/strong> Google no longer supports <code>noindex<\/code> instructions in the <code>robots.txt<\/code>. Use <strong>meta robots tags<\/strong> or <strong>HTTP headers<\/strong> instead. <\/p>\n<h3 data-sourcepos=\"441:1-441:27\">XML Sitemap Optimization<\/h3>\n<p data-sourcepos=\"443:1-443:203\">Shopware 6 automatically generates a structured <strong>XML sitemap<\/strong>, which is available under the URL <code>\/sitemap.xml<\/code>. The sitemap configuration can be adjusted via <em>Settings &gt; Shop &gt; Sitemap<\/em>. <\/p>\n<p data-sourcepos=\"445:1-445:55\"><strong>Advanced Sitemap Strategy for Large Shops:<\/strong><\/p>\n<ul data-sourcepos=\"447:1-464:0\">\n<li data-sourcepos=\"447:1-451:40\"><strong>Segmented Sitemaps:<\/strong> Create separate sitemaps for different content types:\n<ul data-sourcepos=\"448:5-451:40\">\n<li data-sourcepos=\"448:5-448:40\"><code>product-sitemap.xml<\/code> for products<\/li>\n<li data-sourcepos=\"449:5-449:43\"><code>category-sitemap.xml<\/code> for categories<\/li>\n<li data-sourcepos=\"450:5-450:38\"><code>cms-sitemap.xml<\/code> for CMS pages<\/li>\n<li data-sourcepos=\"451:5-451:40\"><code>blog-sitemap.xml<\/code> for blog articles<\/li>\n<\/ul>\n<\/li>\n<li data-sourcepos=\"452:1-459:7\"><strong>Prioritizing Important Pages:<\/strong> Set higher priority values for important pages:\n<div class=\"code-block ng-tns-c2477699268-428 ng-trigger ng-trigger-codeBlockRevealAnimation\">\n<div class=\"code-block-decoration header-formatted gds-title-s ng-tns-c2477699268-428 ng-star-inserted\">\n<p><span class=\"ng-tns-c2477699268-428\">XML<\/span><\/p>\n<div class=\"buttons ng-tns-c2477699268-428 ng-star-inserted\"><\/div>\n<\/div>\n<div class=\"formatted-code-block-internal-container ng-tns-c2477699268-428\">\n<div class=\"animated-opacity ng-tns-c2477699268-428\">\n<pre class=\"ng-tns-c2477699268-428\"><code class=\"code-container formatted ng-tns-c2477699268-428\" role=\"text\" data-test-id=\"code-content\" data-sourcepos=\"453:5-459:13\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">url<\/span>&gt;<\/span>\n  <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">loc<\/span>&gt;<\/span>https:\/\/www.example.com\/wichtige-kategorie\/<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">loc<\/span>&gt;<\/span>\n  <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">priority<\/span>&gt;<\/span>0.8<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">priority<\/span>&gt;<\/span>\n  <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">lastmod<\/span>&gt;<\/span>2024-05-27<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">lastmod<\/span>&gt;<\/span>\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">url<\/span>&gt;<\/span>\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/li>\n<li data-sourcepos=\"460:1-464:0\"><strong>Automated Update:<\/strong> Implement a cron job that updates the sitemap regularly:\n<div class=\"code-block ng-tns-c2477699268-429 ng-trigger ng-trigger-codeBlockRevealAnimation\">\n<div class=\"code-block-decoration header-formatted gds-title-s ng-tns-c2477699268-429 ng-star-inserted\">\n<p><span class=\"ng-tns-c2477699268-429\">Bash<\/span><\/p>\n<div class=\"buttons ng-tns-c2477699268-429 ng-star-inserted\"><\/div>\n<\/div>\n<div class=\"formatted-code-block-internal-container ng-tns-c2477699268-429\">\n<div class=\"animated-opacity ng-tns-c2477699268-429\">\n<pre class=\"ng-tns-c2477699268-429\"><code class=\"code-container formatted ng-tns-c2477699268-429\" role=\"text\" data-test-id=\"code-content\" data-sourcepos=\"461:5-463:80\">0 3 * * * \/usr\/bin\/php \/var\/www\/html\/bin\/console sw:sitemap:generate --quiet\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/li>\n<\/ul>\n<h3 data-sourcepos=\"465:1-465:35\">HTTP Status Codes and Redirects<\/h3>\n<p data-sourcepos=\"467:1-467:186\">Correct <strong>HTTP status codes<\/strong> are crucial for SEO. Shopware 6 implements <strong>301 redirects<\/strong> for changed URLs by default, but the following points should be noted: <\/p>\n<ul data-sourcepos=\"469:1-480:7\">\n<li data-sourcepos=\"469:1-469:133\"><strong>Avoiding Redirect Chains:<\/strong> Ensure that redirects lead directly to the destination, not via multiple intermediate steps.<\/li>\n<li data-sourcepos=\"470:1-475:7\"><strong>Correct 404 Pages:<\/strong> Implement a custom 404 page with helpful navigation elements and product recommendations.\n<div class=\"code-block ng-tns-c2477699268-430 ng-trigger ng-trigger-codeBlockRevealAnimation\">\n<div class=\"code-block-decoration header-formatted gds-title-s ng-tns-c2477699268-430 ng-star-inserted\">\n<p><span class=\"ng-tns-c2477699268-430\">PHP<\/span><\/p>\n<div class=\"buttons ng-tns-c2477699268-430 ng-star-inserted\"><\/div>\n<\/div>\n<div class=\"formatted-code-block-internal-container ng-tns-c2477699268-430\">\n<div class=\"animated-opacity ng-tns-c2477699268-430\">\n<pre class=\"ng-tns-c2477699268-430\"><code class=\"code-container formatted ng-tns-c2477699268-430\" role=\"text\" data-test-id=\"code-content\" data-sourcepos=\"471:5-475:90\"><span class=\"hljs-comment\">\/\/ Beispiel: Custom 404 Seite in einem Symfony Controller<\/span>\n<span class=\"hljs-comment\">\/\/ if ($pageNotFound) { throw new NotFoundHttpException(); }<\/span>\n<span class=\"hljs-comment\">\/\/ Dies w\u00fcrde Shopware's 404-Handler triggern oder eine eigene Exception-Handler-Logik<\/span>\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/li>\n<li data-sourcepos=\"476:1-480:7\"><strong>410 Status for Permanently Removed Content:<\/strong> Use the HTTP status <strong>410 (Gone)<\/strong> for permanently removed products instead of 404 to give search engines a clear signal that the content will not return.\n<div class=\"code-block ng-tns-c2477699268-431 ng-trigger ng-trigger-codeBlockRevealAnimation\">\n<div class=\"code-block-decoration header-formatted gds-title-s ng-tns-c2477699268-431 ng-star-inserted\">\n<p><span class=\"ng-tns-c2477699268-431\">PHP<\/span><\/p>\n<div class=\"buttons ng-tns-c2477699268-431 ng-star-inserted\"><\/div>\n<\/div>\n<div class=\"formatted-code-block-internal-container ng-tns-c2477699268-431\">\n<div class=\"animated-opacity ng-tns-c2477699268-431\">\n<pre class=\"ng-tns-c2477699268-431\"><code class=\"code-container formatted ng-tns-c2477699268-431\" role=\"text\" data-test-id=\"code-content\" data-sourcepos=\"477:5-480:89\"><span class=\"hljs-comment\">\/\/ Beispiel: Setzen des 410-Status in einem Controller<\/span>\n<span class=\"hljs-comment\">\/\/ return new Response('Der Artikel wurde dauerhaft entfernt.', Response::HTTP_GONE);<\/span>\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/li>\n<\/ul>\n<p data-sourcepos=\"481:1-481:450\"><strong>Case Study:<\/strong> An online electronics retailer implemented a comprehensive redirect strategy when relaunching its shop. Through the correct implementation of 301 redirects for all old URLs and the optimization of the XML sitemap, it was able to restore 94% of its organic rankings within 4 weeks, while comparable relaunches without these measures typically require 3-6 months for full recovery. <\/p>\n<h2 data-sourcepos=\"485:1-485:56\">SEO Tools for Shopware: Native Functions vs. Plugins<\/h2>\n<p data-sourcepos=\"487:1-487:344\">Shopware already offers extensive native SEO functions that are sufficient for most use cases. The basic equipment includes SEO URL configuration, meta-data management, automatic sitemap generation, and basic structured data. However, specialized SEO plugins are available for advanced requirements.  <\/p>\n<h3 data-sourcepos=\"489:1-489:65\">Comparison of Native SEO Functions and Plugin Extensions<\/h3>\n<div class=\"horizontal-scroll-wrapper\">\n<div class=\"table-block-component\">\n<div class=\"table-block has-export-button\">\n<div class=\"table-content not-end-of-paragraph\">\n<table data-sourcepos=\"491:1-498:89\">\n<tbody>\n<tr data-sourcepos=\"491:1-491:97\">\n<th align=\"left\" data-sourcepos=\"491:1-491:21\">Function<\/th>\n<th align=\"left\" data-sourcepos=\"491:23-491:50\">Native Shopware 6<\/th>\n<th align=\"left\" data-sourcepos=\"491:52-491:95\">With Plugin Extensions<\/th>\n<\/tr>\n<tr data-sourcepos=\"493:1-493:90\">\n<td align=\"left\" data-sourcepos=\"493:1-493:14\"><strong>SEO URLs<\/strong><\/td>\n<td align=\"left\" data-sourcepos=\"493:16-493:43\">Basic Templates<\/td>\n<td align=\"left\" data-sourcepos=\"493:45-493:88\">Advanced Variables, Bulk Editing<\/td>\n<\/tr>\n<tr data-sourcepos=\"494:1-494:92\">\n<td align=\"left\" data-sourcepos=\"494:1-494:16\"><strong>Meta Data<\/strong><\/td>\n<td align=\"left\" data-sourcepos=\"494:18-494:45\">Manual Input<\/td>\n<td align=\"left\" data-sourcepos=\"494:47-494:90\">Automatic Generation, Bulk Optimization<\/td>\n<\/tr>\n<tr data-sourcepos=\"495:1-495:98\">\n<td align=\"left\" data-sourcepos=\"495:1-495:20\"><strong>Canonical Tags<\/strong><\/td>\n<td align=\"left\" data-sourcepos=\"495:22-495:51\">Basic Implementation<\/td>\n<td align=\"left\" data-sourcepos=\"495:53-495:96\">Advanced Configuration for Variants<\/td>\n<\/tr>\n<tr data-sourcepos=\"496:1-496:101\">\n<td align=\"left\" data-sourcepos=\"496:1-496:25\"><strong>Structured Data<\/strong><\/td>\n<td align=\"left\" data-sourcepos=\"496:27-496:54\">Basic Schema for Products<\/td>\n<td align=\"left\" data-sourcepos=\"496:56-496:99\">Extended Schema, FAQ, How-To, etc.<\/td>\n<\/tr>\n<tr data-sourcepos=\"497:1-497:96\">\n<td align=\"left\" data-sourcepos=\"497:1-497:21\"><strong>Content Analysis<\/strong><\/td>\n<td align=\"left\" data-sourcepos=\"497:23-497:50\">Not Available<\/td>\n<td align=\"left\" data-sourcepos=\"497:52-497:94\">Keyword Analysis, Readability Score<\/td>\n<\/tr>\n<tr data-sourcepos=\"498:1-498:89\">\n<td align=\"left\" data-sourcepos=\"498:1-498:13\"><strong>Sitemap<\/strong><\/td>\n<td align=\"left\" data-sourcepos=\"498:15-498:42\">Basic XML Sitemap<\/td>\n<td align=\"left\" data-sourcepos=\"498:44-498:87\">Advanced Configuration, HTML Sitemap<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<h3 data-sourcepos=\"500:1-500:51\">Top SEO Plugins for Shopware 6<\/h3>\n<p><strong>SEO Suite<\/strong><\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul data-sourcepos=\"503:5-506:74\">\n<li data-sourcepos=\"503:5-503:73\"><strong>Strengths:<\/strong> Comprehensive SEO analysis, content scoring, SERP preview<\/li>\n<li data-sourcepos=\"504:5-504:56\"><strong>Weaknesses:<\/strong> Resource-intensive for large shops<\/li>\n<li data-sourcepos=\"505:5-505:29\"><strong>Price:<\/strong> From \u20ac29\/month<\/li>\n<li data-sourcepos=\"506:5-506:74\"><strong>Special feature:<\/strong> Cloud-based architecture for better performance<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><strong>Flexible Canonical Tags for Products<\/strong><\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul data-sourcepos=\"508:5-511:68\">\n<li data-sourcepos=\"508:5-508:90\"><strong>Strengths:<\/strong> Granular control over canonical tags, especially for variant products<\/li>\n<li data-sourcepos=\"509:5-509:60\"><strong>Weaknesses:<\/strong> Focuses only on one aspect of SEO<\/li>\n<li data-sourcepos=\"510:5-510:29\"><strong>Price:<\/strong> One-time \u20ac79<\/li>\n<li data-sourcepos=\"511:5-511:68\"><strong>Special feature:<\/strong> Automatic detection of duplicate content<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><strong>Advanced Meta SEO &amp; OpenGraph<\/strong><\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul data-sourcepos=\"513:5-516:65\">\n<li data-sourcepos=\"513:5-513:76\"><strong>Strengths:<\/strong> Advanced social media integration, dynamic meta-tags<\/li>\n<li data-sourcepos=\"514:5-514:60\"><strong>Weaknesses:<\/strong> Overlaps with native functions<\/li>\n<li data-sourcepos=\"515:5-515:29\"><strong>Price:<\/strong> One-time \u20ac99<\/li>\n<li data-sourcepos=\"516:5-516:65\"><strong>Special feature:<\/strong> AI-powered meta-description generation<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><strong>Rich Snippets &amp; Schema.org<\/strong><\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul data-sourcepos=\"518:5-522:0\">\n<li data-sourcepos=\"518:5-518:75\"><strong>Strengths:<\/strong> Comprehensive schema markup options, rich snippet preview<\/li>\n<li data-sourcepos=\"519:5-519:43\"><strong>Weaknesses:<\/strong> Complex configuration<\/li>\n<li data-sourcepos=\"520:5-520:38\"><strong>Price:<\/strong> Dependent on the provider<\/li>\n<li data-sourcepos=\"521:5-522:0\"><strong>Special feature:<\/strong> Support for over 30 schema types<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p data-sourcepos=\"523:1-523:380\"><strong>Practical example:<\/strong> A medium-sized fashion retailer implemented the SEO Suite and was able to increase the average CTR in the search results by 28% through the systematic optimization of its meta-data and content quality. The automatic detection of keyword cannibalization, which led to a restructuring of the category architecture, was particularly effective. <\/p>\n<p data-sourcepos=\"525:1-525:55\"><strong>Decision Support: Native Functions or Plugins?<\/strong><\/p>\n<ul data-sourcepos=\"527:1-530:0\">\n<li data-sourcepos=\"527:1-527:143\"><strong>Small Shops (&lt; 500 Products):<\/strong> Native functions are usually sufficient, supplemented by targeted plugins for specific requirements.<\/li>\n<li data-sourcepos=\"528:1-528:125\"><strong>Medium-sized Shops (500-5,000 Products):<\/strong> Combination of native functions and SEO Suite for systematic optimization.<\/li>\n<li data-sourcepos=\"529:1-530:0\"><strong>Large Shops (&gt; 5,000 Products):<\/strong> Comprehensive plugin solution with automation functions and bulk editing.<\/li>\n<\/ul>\n<h3 data-sourcepos=\"531:1-531:37\">Google Search Console Integration<\/h3>\n<p data-sourcepos=\"533:1-533:312\">The integration of the <strong>Google Search Console (GSC)<\/strong> is essential for any professional Shopware SEO strategy. The Search Console offers valuable insights into performance in Google search results, including impressions, clicks, average position, and CTR for various keywords. <\/p>\n<p data-sourcepos=\"535:1-535:68\"><strong>Step-by-step instructions for GSC integration in Shopware 6:<\/strong><\/p>\n<ol data-sourcepos=\"537:1-560:0\">\n<li data-sourcepos=\"537:1-541:32\"><strong>Verification of the website:<\/strong>\n<ul data-sourcepos=\"538:5-541:32\">\n<li data-sourcepos=\"538:5-538:55\">Sign in to the Google Search Console.<\/li>\n<li data-sourcepos=\"539:5-539:71\">Add your property (domain or URL prefix property).<\/li>\n<li data-sourcepos=\"540:5-540:56\">Select the HTML tag method for verification.<\/li>\n<li data-sourcepos=\"541:5-541:32\">Copy the meta tag.<\/li>\n<\/ul>\n<\/li>\n<li data-sourcepos=\"542:1-555:11\"><strong>Integration in Shopware:<\/strong>\n<ul data-sourcepos=\"543:5-555:11\">\n<li data-sourcepos=\"543:5-549:11\"><strong>Via Twig (in <code>base.html.twig<\/code> or a comparable template):<\/strong> This is the fastest method for static integration.\n<div class=\"code-block ng-tns-c2477699268-432 ng-trigger ng-trigger-codeBlockRevealAnimation\">\n<div class=\"code-block-decoration header-formatted gds-title-s ng-tns-c2477699268-432 ng-star-inserted\">\n<p><span class=\"ng-tns-c2477699268-432\">Twig<\/span><\/p>\n<div class=\"buttons ng-tns-c2477699268-432 ng-star-inserted\"><\/div>\n<\/div>\n<div class=\"formatted-code-block-internal-container ng-tns-c2477699268-432\">\n<div class=\"animated-opacity ng-tns-c2477699268-432\">\n<pre class=\"ng-tns-c2477699268-432\"><code class=\"code-container formatted ng-tns-c2477699268-432\" role=\"text\" data-test-id=\"code-content\" data-sourcepos=\"544:9-549:19\"><span class=\"hljs-comment\">{# Beispiel f\u00fcr die Einbindung des Google Site Verification Tags #}<\/span>\n<span class=\"hljs-template-tag\">{% <span class=\"hljs-name\"><span class=\"hljs-keyword\">if<\/span><\/span> context.environment == 'prod' %}<\/span><span class=\"xml\">\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">meta<\/span> <span class=\"hljs-attr\">name<\/span>=<span class=\"hljs-string\">\"google-site-verification\"<\/span> <span class=\"hljs-attr\">content<\/span>=<span class=\"hljs-string\">\"IHR_GOOGLE_VERIFIZIERUNGSCODE\"<\/span> \/&gt;<\/span>\n<\/span><span class=\"hljs-template-tag\">{% <span class=\"hljs-name\"><span class=\"hljs-keyword\">endif<\/span><\/span> %}<\/span>\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/li>\n<li data-sourcepos=\"550:5-555:11\"><strong>Via PHP (in a Custom Theme Extension or a Plugin Subscriber):<\/strong> For more dynamic or plugin-based approaches.\n<div class=\"code-block ng-tns-c2477699268-433 ng-trigger ng-trigger-codeBlockRevealAnimation\">\n<div class=\"code-block-decoration header-formatted gds-title-s ng-tns-c2477699268-433 ng-star-inserted\">\n<p><span class=\"ng-tns-c2477699268-433\">PHP<\/span><\/p>\n<div class=\"buttons ng-tns-c2477699268-433 ng-star-inserted\"><\/div>\n<\/div>\n<div class=\"formatted-code-block-internal-container ng-tns-c2477699268-433\">\n<div class=\"animated-opacity ng-tns-c2477699268-433\">\n<pre class=\"ng-tns-c2477699268-433\"><code class=\"code-container formatted ng-tns-c2477699268-433\" role=\"text\" data-test-id=\"code-content\" data-sourcepos=\"551:9-555:114\"><span class=\"hljs-comment\">\/\/ In einer Custom Theme Extension oder einem Plugin-Subscriber<\/span>\n<span class=\"hljs-comment\">\/\/ Meta-Tag-Code dynamisch in den &lt;head&gt;-Bereich einf\u00fcgen<\/span>\n<span class=\"hljs-variable\">$event<\/span>-&gt;getPage()-&gt;getMetaInformation()-&gt;add(<span class=\"hljs-string\">'google-site-verification'<\/span>, <span class=\"hljs-string\">'IHR_GOOGLE_VERIFIZIERUNGSCODE'<\/span>);\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/li>\n<\/ul>\n<\/li>\n<li data-sourcepos=\"556:1-560:0\"><strong>Sitemap Submission:<\/strong>\n<ul data-sourcepos=\"557:5-560:0\">\n<li data-sourcepos=\"557:5-557:46\">Navigate to &#8220;Sitemaps&#8221; in the GSC.<\/li>\n<li data-sourcepos=\"558:5-558:77\">Enter the URL of your sitemap: <code>https:\/\/example.com\/sitemap.xml<\/code>.<\/li>\n<li data-sourcepos=\"559:5-560:0\">Click on &#8220;Submit&#8221;.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<p data-sourcepos=\"561:1-561:52\"><strong>Advanced GSC Usage for Shopware Shops:<\/strong><\/p>\n<ul data-sourcepos=\"563:1-602:0\">\n<li data-sourcepos=\"563:1-572:7\"><strong>Performance Monitoring with Custom Dashboards:<\/strong> Create custom dashboards for different product categories to monitor their performance separately.\n<div class=\"code-block ng-tns-c2477699268-434 ng-trigger ng-trigger-codeBlockRevealAnimation\">\n<div class=\"code-block-decoration header-formatted gds-title-s ng-tns-c2477699268-434 ng-star-inserted\">\n<p><span class=\"ng-tns-c2477699268-434\">JavaScript<\/span><\/p>\n<div class=\"buttons ng-tns-c2477699268-434 ng-star-inserted\"><\/div>\n<\/div>\n<div class=\"formatted-code-block-internal-container ng-tns-c2477699268-434\">\n<div class=\"animated-opacity ng-tns-c2477699268-434\">\n<pre class=\"ng-tns-c2477699268-434\"><code class=\"code-container formatted ng-tns-c2477699268-434\" role=\"text\" data-test-id=\"code-content\" data-sourcepos=\"564:5-572:5\"><span class=\"hljs-comment\">\/\/ Pseudocode f\u00fcr ein Custom Dashboard in einem Analysetool mit GSC-Daten<\/span>\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">createProductCategoryDashboard<\/span>(<span class=\"hljs-params\">categoryName, gscData<\/span>) <\/span>{\n    <span class=\"hljs-comment\">\/\/ Filtern der GSC-Daten nach der Produktkategorie<\/span>\n    <span class=\"hljs-keyword\">const<\/span> categoryClicks = gscData.filter(<span class=\"hljs-function\"><span class=\"hljs-params\">row<\/span> =&gt;<\/span> row.query.includes(categoryName)).map(<span class=\"hljs-function\"><span class=\"hljs-params\">row<\/span> =&gt;<\/span> row.clicks);\n    <span class=\"hljs-comment\">\/\/ Visualisierung oder weitere Analyse<\/span>\n    <span class=\"hljs-built_in\">console<\/span>.log(<span class=\"hljs-string\">`Klicks f\u00fcr <span class=\"hljs-subst\">${categoryName}<\/span>:`<\/span>, categoryClicks.reduce(<span class=\"hljs-function\">(<span class=\"hljs-params\">a, b<\/span>) =&gt;<\/span> a + b, <span class=\"hljs-number\">0<\/span>));\n}\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/li>\n<li data-sourcepos=\"573:1-588:7\"><strong>Seasonal Keyword Analysis:<\/strong> Identify seasonal trends and plan content updates accordingly.\n<div class=\"code-block ng-tns-c2477699268-435 ng-trigger ng-trigger-codeBlockRevealAnimation\">\n<div class=\"code-block-decoration header-formatted gds-title-s ng-tns-c2477699268-435 ng-star-inserted\">\n<p><span class=\"ng-tns-c2477699268-435\">SQL<\/span><\/p>\n<div class=\"buttons ng-tns-c2477699268-435 ng-star-inserted\"><\/div>\n<\/div>\n<div class=\"formatted-code-block-internal-container ng-tns-c2477699268-435\">\n<div class=\"animated-opacity ng-tns-c2477699268-435\">\n<pre class=\"ng-tns-c2477699268-435\"><code class=\"code-container formatted ng-tns-c2477699268-435\" role=\"text\" data-test-id=\"code-content\" data-sourcepos=\"574:5-588:33\"><span class=\"hljs-comment\">-- SQL-Beispiel zur Analyse saisonaler Keywords aus GSC-Daten (Hypothetisch)<\/span>\n<span class=\"hljs-keyword\">SELECT<\/span>\n    keyword,\n    <span class=\"hljs-built_in\">SUM<\/span>(clicks) <span class=\"hljs-keyword\">AS<\/span> total_clicks,\n    <span class=\"hljs-keyword\">MONTH<\/span>(<span class=\"hljs-type\">date<\/span>) <span class=\"hljs-keyword\">AS<\/span> <span class=\"hljs-keyword\">month<\/span>\n<span class=\"hljs-keyword\">FROM<\/span>\n    gsc_data\n<span class=\"hljs-keyword\">WHERE<\/span>\n    <span class=\"hljs-keyword\">YEAR<\/span>(<span class=\"hljs-type\">date<\/span>) <span class=\"hljs-operator\">=<\/span> <span class=\"hljs-number\">2024<\/span>\n<span class=\"hljs-keyword\">GROUP<\/span> <span class=\"hljs-keyword\">BY<\/span>\n    keyword, <span class=\"hljs-keyword\">month<\/span>\n<span class=\"hljs-keyword\">ORDER<\/span> <span class=\"hljs-keyword\">BY<\/span>\n    <span class=\"hljs-keyword\">month<\/span>, total_clicks <span class=\"hljs-keyword\">DESC<\/span>;\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/li>\n<li data-sourcepos=\"589:1-602:0\"><strong>Index Monitoring:<\/strong> Monitor the indexing rate of your products and identify problems early on.\n<div class=\"code-block ng-tns-c2477699268-436 ng-trigger ng-trigger-codeBlockRevealAnimation\">\n<div class=\"code-block-decoration header-formatted gds-title-s ng-tns-c2477699268-436 ng-star-inserted\">\n<p><span class=\"ng-tns-c2477699268-436\">Python<\/span><\/p>\n<div class=\"buttons ng-tns-c2477699268-436 ng-star-inserted\"><\/div>\n<\/div>\n<div class=\"formatted-code-block-internal-container ng-tns-c2477699268-436\">\n<div class=\"animated-opacity ng-tns-c2477699268-436\">\n<pre class=\"ng-tns-c2477699268-436\"><code class=\"code-container formatted ng-tns-c2477699268-436\" role=\"text\" data-test-id=\"code-content\" data-sourcepos=\"590:5-601:80\"><span class=\"hljs-comment\"># Python-Beispiel zur \u00dcberwachung der Indexierung \u00fcber die GSC API (Konzept)<\/span>\n<span class=\"hljs-comment\">#from googleapiclient.discovery import build<\/span>\n\n<span class=\"hljs-comment\">#def monitor_indexing(service, site_url):<\/span>\n<span class=\"hljs-comment\">#    result = service.urlInspection().index().inspect(<\/span>\n<span class=\"hljs-comment\">#        siteUrl=site_url,<\/span>\n<span class=\"hljs-comment\">#        inspectionUrl='https:\/\/example.com\/new-product-page'<\/span>\n<span class=\"hljs-comment\">#    ).execute()<\/span>\n<span class=\"hljs-comment\">#    # Hier Logik zur Analyse des Indexierungsstatus<\/span>\n<span class=\"hljs-comment\">#    print(result['inspectionResult']['indexStatusResult']['indexingState'])<\/span>\n<\/code><\/pre>\n<div class=\"code-editor-container ng-tns-c2477699268-436 hide ng-star-inserted\">\n<div>\n<div class=\"code-editor\" data-keybinding-context=\"9\" data-mode-id=\"plaintext\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/li>\n<\/ul>\n<p data-sourcepos=\"603:1-603:472\"><strong>Case Study:<\/strong> An electronics retailer implemented an automated GSC monitoring system that generated daily reports on newly indexed pages, crawling errors, and performance changes. By identifying indexing problems with new products early on, the average time to full indexing was reduced from 14 to 3 days, which led to a significant competitive advantage, especially for seasonal products. <\/p>\n<h2 data-sourcepos=\"607:1-607:31\">Monitoring and Analysis Tools<\/h2>\n<p data-sourcepos=\"609:1-609:252\">Professional SEO for Shopware requires the use of specialized <strong>monitoring tools<\/strong> such as Sistrix, Screaming Frog, or Ahrefs. These tools make it possible to systematically monitor SEO performance and identify optimization potential. <\/p>\n<h3 data-sourcepos=\"611:1-611:40\">SEO Monitoring Stack for Shopware 6:<\/h3>\n<p><strong>Technical SEO Audit:<\/strong><\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul data-sourcepos=\"614:5-616:90\">\n<li data-sourcepos=\"614:5-614:41\"><strong>Tool:<\/strong> Screaming Frog SEO Spider<\/li>\n<li data-sourcepos=\"615:5-615:81\"><strong>Application:<\/strong> Weekly crawls to identify technical problems.<\/li>\n<li data-sourcepos=\"616:5-616:90\"><strong>Special feature:<\/strong> Custom extractions for Shopware-specific elements.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><strong>Keyword &amp; Visibility Tracking:<\/strong><\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul data-sourcepos=\"618:5-620:71\">\n<li data-sourcepos=\"618:5-618:33\"><strong>Tool:<\/strong> Sistrix Optimizer<\/li>\n<li data-sourcepos=\"619:5-619:78\"><strong>Application:<\/strong> Daily tracking of keyword rankings and visibility.<\/li>\n<li data-sourcepos=\"620:5-620:71\"><strong>Special feature:<\/strong> Competitive comparison and keyword opportunities.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><strong>Backlink Analysis:<\/strong><\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul data-sourcepos=\"622:5-624:74\">\n<li data-sourcepos=\"622:5-622:22\"><strong>Tool:<\/strong> Ahrefs<\/li>\n<li data-sourcepos=\"623:5-623:82\"><strong>Application:<\/strong> Monthly analysis of the backlink profile and competitors.<\/li>\n<li data-sourcepos=\"624:5-624:74\"><strong>Special feature:<\/strong> Toxic Backlink Detection and Disavow Recommendations.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><strong>Performance Monitoring (APM):<\/strong><\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul data-sourcepos=\"626:5-628:70\">\n<li data-sourcepos=\"626:5-626:28\"><strong>Tool:<\/strong> Tideways APM<\/li>\n<li data-sourcepos=\"627:5-627:77\"><strong>Application:<\/strong> Continuous monitoring of PHP backend performance.<\/li>\n<li data-sourcepos=\"628:5-628:70\"><strong>Special feature:<\/strong> Shopware-specific optimization recommendations.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><strong>User Experience Analysis:<\/strong><\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul data-sourcepos=\"630:5-633:0\">\n<li data-sourcepos=\"630:5-630:22\"><strong>Tool:<\/strong> Hotjar<\/li>\n<li data-sourcepos=\"631:5-631:73\"><strong>Application:<\/strong> Heatmaps, Session Recordings and Conversion Funnels.<\/li>\n<li data-sourcepos=\"632:5-633:0\"><strong>Special feature:<\/strong> Integration with Google Analytics for segmented analyses.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3 data-sourcepos=\"634:1-634:63\">Automated SEO Reporting for Shopware (Python Concept)<\/h3>\n<div class=\"code-block ng-tns-c2477699268-437 ng-trigger ng-trigger-codeBlockRevealAnimation\">\n<div class=\"code-block-decoration header-formatted gds-title-s ng-tns-c2477699268-437 ng-star-inserted\">\n<p><span class=\"ng-tns-c2477699268-437\">Python<\/span><\/p>\n<div class=\"buttons ng-tns-c2477699268-437 ng-star-inserted\"><\/div>\n<\/div>\n<div class=\"formatted-code-block-internal-container ng-tns-c2477699268-437\">\n<div class=\"animated-opacity ng-tns-c2477699268-437\">\n<pre class=\"ng-tns-c2477699268-437\"><code class=\"code-container formatted ng-tns-c2477699268-437\" role=\"text\" data-test-id=\"code-content\" data-sourcepos=\"636:1-683:65\"><span class=\"hljs-comment\"># Python-Script f\u00fcr automatisiertes SEO-Reporting (Konzept)<\/span>\n<span class=\"hljs-keyword\">import<\/span> pandas <span class=\"hljs-keyword\">as<\/span> pd\n<span class=\"hljs-keyword\">import<\/span> matplotlib.pyplot <span class=\"hljs-keyword\">as<\/span> plt\n\n<span class=\"hljs-comment\"># Annahme: APIs f\u00fcr Search Console, Ahrefs, Sistrix sind korrekt eingerichtet<\/span>\n<span class=\"hljs-comment\"># from searchconsole import authenticate<\/span>\n<span class=\"hljs-comment\"># from ahrefs import AhrefsAPI<\/span>\n<span class=\"hljs-comment\"># from sistrix import SistrixAPI<\/span>\n\n<span class=\"hljs-comment\"># Dummy-Daten, ersetzen Sie diese durch echte API-Aufrufe<\/span>\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">get_search_console_data<\/span>():<\/span>\n    <span class=\"hljs-keyword\">return<\/span> {<span class=\"hljs-string\">'clicks'<\/span>: [<span class=\"hljs-number\">100<\/span>, <span class=\"hljs-number\">120<\/span>, <span class=\"hljs-number\">110<\/span>, <span class=\"hljs-number\">130<\/span>, <span class=\"hljs-number\">150<\/span>, <span class=\"hljs-number\">140<\/span>, <span class=\"hljs-number\">160<\/span>, <span class=\"hljs-number\">170<\/span>, <span class=\"hljs-number\">180<\/span>, <span class=\"hljs-number\">190<\/span>, <span class=\"hljs-number\">200<\/span>, <span class=\"hljs-number\">210<\/span>, <span class=\"hljs-number\">220<\/span>, <span class=\"hljs-number\">230<\/span>, <span class=\"hljs-number\">240<\/span>, <span class=\"hljs-number\">250<\/span>, <span class=\"hljs-number\">260<\/span>, <span class=\"hljs-number\">270<\/span>, <span class=\"hljs-number\">280<\/span>, <span class=\"hljs-number\">290<\/span>, <span class=\"hljs-number\">300<\/span>, <span class=\"hljs-number\">310<\/span>, <span class=\"hljs-number\">320<\/span>, <span class=\"hljs-number\">330<\/span>, <span class=\"hljs-number\">340<\/span>, <span class=\"hljs-number\">350<\/span>, <span class=\"hljs-number\">360<\/span>, <span class=\"hljs-number\">370<\/span>, <span class=\"hljs-number\">380<\/span>, <span class=\"hljs-number\">390<\/span>]}\n\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">get_ahrefs_data<\/span>():<\/span>\n    <span class=\"hljs-keyword\">return<\/span> {<span class=\"hljs-string\">'new_backlinks'<\/span>: [<span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">2<\/span>, <span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">3<\/span>, <span class=\"hljs-number\">2<\/span>, <span class=\"hljs-number\">4<\/span>, <span class=\"hljs-number\">3<\/span>, <span class=\"hljs-number\">2<\/span>, <span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">5<\/span>, <span class=\"hljs-number\">4<\/span>, <span class=\"hljs-number\">3<\/span>, <span class=\"hljs-number\">2<\/span>, <span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">0<\/span>, <span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">2<\/span>, <span class=\"hljs-number\">3<\/span>, <span class=\"hljs-number\">4<\/span>, <span class=\"hljs-number\">5<\/span>, <span class=\"hljs-number\">6<\/span>, <span class=\"hljs-number\">7<\/span>, <span class=\"hljs-number\">8<\/span>, <span class=\"hljs-number\">9<\/span>, <span class=\"hljs-number\">10<\/span>, <span class=\"hljs-number\">9<\/span>, <span class=\"hljs-number\">8<\/span>, <span class=\"hljs-number\">7<\/span>, <span class=\"hljs-number\">6<\/span>, <span class=\"hljs-number\">5<\/span>]}\n\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">get_sistrix_data<\/span>():<\/span>\n    <span class=\"hljs-keyword\">return<\/span> {<span class=\"hljs-string\">'visibility'<\/span>: [<span class=\"hljs-number\">0.1<\/span>, <span class=\"hljs-number\">0.12<\/span>, <span class=\"hljs-number\">0.11<\/span>, <span class=\"hljs-number\">0.13<\/span>, <span class=\"hljs-number\">0.14<\/span>, <span class=\"hljs-number\">0.13<\/span>, <span class=\"hljs-number\">0.15<\/span>, <span class=\"hljs-number\">0.16<\/span>, <span class=\"hljs-number\">0.17<\/span>, <span class=\"hljs-number\">0.18<\/span>, <span class=\"hljs-number\">0.19<\/span>, <span class=\"hljs-number\">0.20<\/span>, <span class=\"hljs-number\">0.21<\/span>, <span class=\"hljs-number\">0.22<\/span>, <span class=\"hljs-number\">0.23<\/span>, <span class=\"hljs-number\">0.24<\/span>, <span class=\"hljs-number\">0.25<\/span>, <span class=\"hljs-number\">0.26<\/span>, <span class=\"hljs-number\">0.27<\/span>, <span class=\"hljs-number\">0.28<\/span>, <span class=\"hljs-number\">0.29<\/span>, <span class=\"hljs-number\">0.30<\/span>, <span class=\"hljs-number\">0.31<\/span>, <span class=\"hljs-number\">0.32<\/span>, <span class=\"hljs-number\">0.33<\/span>, <span class=\"hljs-number\">0.34<\/span>, <span class=\"hljs-number\">0.35<\/span>, <span class=\"hljs-number\">0.36<\/span>, <span class=\"hljs-number\">0.37<\/span>, <span class=\"hljs-number\">0.38<\/span>]}\n\n<span class=\"hljs-comment\"># Daten sammeln<\/span>\ngsc_data = get_search_console_data()\nahrefs_data = get_ahrefs_data()\nsistrix_data = get_sistrix_data()\n\n<span class=\"hljs-comment\"># Bericht generieren<\/span>\nreport = pd.DataFrame({\n    <span class=\"hljs-string\">'Date'<\/span>: pd.date_range(start=<span class=\"hljs-string\">'2025-01-01'<\/span>, periods=<span class=\"hljs-number\">30<\/span>, freq=<span class=\"hljs-string\">'D'<\/span>),\n    <span class=\"hljs-string\">'Organic Traffic'<\/span>: gsc_data[<span class=\"hljs-string\">'clicks'<\/span>],\n    <span class=\"hljs-string\">'Rankings'<\/span>: sistrix_data[<span class=\"hljs-string\">'visibility'<\/span>],\n    <span class=\"hljs-string\">'New Backlinks'<\/span>: ahrefs_data[<span class=\"hljs-string\">'new_backlinks'<\/span>]\n})\n\n<span class=\"hljs-comment\"># Visualisierung<\/span>\nplt.figure(figsize=(<span class=\"hljs-number\">12<\/span>, <span class=\"hljs-number\">8<\/span>))\nplt.plot(report[<span class=\"hljs-string\">'Date'<\/span>], report[<span class=\"hljs-string\">'Organic Traffic'<\/span>], label=<span class=\"hljs-string\">'Organic Traffic'<\/span>)\nplt.plot(report[<span class=\"hljs-string\">'Date'<\/span>], [r * <span class=\"hljs-number\">1000<\/span> <span class=\"hljs-keyword\">for<\/span> r <span class=\"hljs-keyword\">in<\/span> report[<span class=\"hljs-string\">'Rankings'<\/span>]], label=<span class=\"hljs-string\">'Rankings (x1000)'<\/span>) <span class=\"hljs-comment\"># Multiplizieren f\u00fcr bessere Sichtbarkeit<\/span>\nplt.plot(report[<span class=\"hljs-string\">'Date'<\/span>], [b * <span class=\"hljs-number\">10<\/span> <span class=\"hljs-keyword\">for<\/span> b <span class=\"hljs-keyword\">in<\/span> report[<span class=\"hljs-string\">'New Backlinks'<\/span>]], label=<span class=\"hljs-string\">'New Backlinks (x10)'<\/span>) <span class=\"hljs-comment\"># Multiplizieren f\u00fcr bessere Sichtbarkeit<\/span>\nplt.legend()\nplt.title(<span class=\"hljs-string\">'SEO Performance Overview'<\/span>)\nplt.savefig(<span class=\"hljs-string\">'seo_report.png'<\/span>)\n\n<span class=\"hljs-comment\"># E-Mail-Versand (Platzhalter f\u00fcr tats\u00e4chlichen Versandmechanismus)<\/span>\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">send_email_with_attachment<\/span>(<span class=\"hljs-params\">filepath, subject<\/span>):<\/span>\n    print(<span class=\"hljs-string\">f\"E-Mail mit Anhang '<span class=\"hljs-subst\">{filepath}<\/span>' und Betreff '<span class=\"hljs-subst\">{subject}<\/span>' gesendet.\"<\/span>)\n\nsend_email_with_attachment(<span class=\"hljs-string\">'seo_report.png'<\/span>, <span class=\"hljs-string\">'Weekly SEO Report'<\/span>)<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<p data-sourcepos=\"684:1-684:695\"><strong>Practical Example from E-Commerce:<\/strong> A sporting goods retailer implemented a comprehensive SEO monitoring system with weekly automated reports. By identifying a technical problem early on \u2013 missing hreflang tags after an update in the Shopware backend \u2013 a potential loss of ranking in international markets was prevented. The problem was quickly resolved with the help of a professional SEO tool and systematic on-page optimization. The analysis of competitors also led to the identification of content gaps, which were closed by new blog posts in the shop. The result: 34% more organic traffic within three months.    <\/p>\n<h2 data-sourcepos=\"688:1-688:35\">Keyword Research and Strategy<\/h2>\n<p data-sourcepos=\"690:1-690:423\">A well-founded <strong>keyword strategy<\/strong> forms the foundation of every successful Shopware SEO campaign. In your shop, you must research both <strong>transactional keywords<\/strong> (e.g. for product categories) and <strong>informative terms<\/strong> (for guides or blog posts). Well-structured <strong>product URLs<\/strong>, optimized <strong>article URLs<\/strong> and a well-thought-out <strong>SEO URL template<\/strong> for your shop pages are particularly important.  <\/p>\n<p data-sourcepos=\"692:1-692:61\"><strong>Advanced Keyword Research Methods for Shopware:<\/strong><\/p>\n<ul data-sourcepos=\"694:1-696:0\">\n<li data-sourcepos=\"694:1-694:254\"><strong>Keyword Clustering with Semantic Analysis:<\/strong> Group keywords not only by exact matches, but also by their semantic similarity. This creates thematically meaningful clusters for category pages, guides or product groups. <\/li>\n<li data-sourcepos=\"695:1-696:0\"><strong>Search Intent Mapping:<\/strong> Assign keywords to their respective search intention (informational, commercial, transactional, navigational) and link them to suitable page types and conversion goals:<\/li>\n<\/ul>\n<div class=\"horizontal-scroll-wrapper\">\n<div class=\"table-block-component\">\n<div class=\"table-block has-export-button\">\n<div class=\"table-content not-end-of-paragraph\">\n<table data-sourcepos=\"697:1-702:98\">\n<tbody>\n<tr data-sourcepos=\"697:1-697:98\">\n<th align=\"left\" data-sourcepos=\"697:1-697:15\">Search Intention<\/th>\n<th align=\"left\" data-sourcepos=\"697:17-697:47\">Keyword Example<\/th>\n<th align=\"left\" data-sourcepos=\"697:49-697:69\">Page Type<\/th>\n<th align=\"left\" data-sourcepos=\"697:71-697:96\">Conversion Goal<\/th>\n<\/tr>\n<tr data-sourcepos=\"699:1-699:96\">\n<td align=\"left\" data-sourcepos=\"699:1-699:15\">Informational<\/td>\n<td align=\"left\" data-sourcepos=\"699:17-699:45\">how do i choose running shoes<\/td>\n<td align=\"left\" data-sourcepos=\"699:47-699:67\">Blog Article<\/td>\n<td align=\"left\" data-sourcepos=\"699:69-699:94\">Newsletter Registration<\/td>\n<\/tr>\n<tr data-sourcepos=\"700:1-700:98\">\n<td align=\"left\" data-sourcepos=\"700:1-700:15\">Commercial<\/td>\n<td align=\"left\" data-sourcepos=\"700:17-700:45\">running shoes test 2024<\/td>\n<td align=\"left\" data-sourcepos=\"700:47-700:69\">Category with Filters<\/td>\n<td align=\"left\" data-sourcepos=\"700:71-700:96\">Product Comparison<\/td>\n<\/tr>\n<tr data-sourcepos=\"701:1-701:100\">\n<td align=\"left\" data-sourcepos=\"701:1-701:15\">Transactional<\/td>\n<td align=\"left\" data-sourcepos=\"701:17-701:49\">buy nike air zoom pegasus 42<\/td>\n<td align=\"left\" data-sourcepos=\"701:51-701:71\">Product Page<\/td>\n<td align=\"left\" data-sourcepos=\"701:73-701:98\">Purchase<\/td>\n<\/tr>\n<tr data-sourcepos=\"702:1-702:98\">\n<td align=\"left\" data-sourcepos=\"702:1-702:15\">Navigational<\/td>\n<td align=\"left\" data-sourcepos=\"702:17-702:47\">sportcheck online shop<\/td>\n<td align=\"left\" data-sourcepos=\"702:49-702:69\">Homepage<\/td>\n<td align=\"left\" data-sourcepos=\"702:71-702:96\">Brand Awareness<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<ul data-sourcepos=\"704:1-706:0\">\n<li data-sourcepos=\"704:1-704:267\"><strong>Keyword Opportunity Analysis:<\/strong> Identify keywords with high potential by combining high search volume, low competition and high conversion probability. Use SQL-based data analyses for this purpose, e.g. for filtering by priority. <\/li>\n<li data-sourcepos=\"705:1-706:0\"><strong>Competitive Analysis with Gap Identification:<\/strong> Use Python-powered tools to identify keyword gaps: Find keywords for which your competitors rank, but your domain does not \u2013 and specifically close these gaps.<\/li>\n<\/ul>\n<h3 data-sourcepos=\"707:1-707:48\">Keyword Mapping Strategy for Shopware Shops<\/h3>\n<p data-sourcepos=\"709:1-709:97\">Develop a structured keyword strategy that covers different levels of your shop:<\/p>\n<ul data-sourcepos=\"711:1-721:0\">\n<li data-sourcepos=\"711:1-712:71\"><strong>Homepage:<\/strong> Branding keywords and general category keywords\n<ul data-sourcepos=\"712:5-712:71\">\n<li data-sourcepos=\"712:5-712:71\"><strong>Example:<\/strong> &#8220;sports shoes online shop&#8221;, &#8220;buy sports equipment&#8221;<\/li>\n<\/ul>\n<\/li>\n<li data-sourcepos=\"713:1-714:62\"><strong>Category pages:<\/strong> Category-specific keywords with medium search volume\n<ul data-sourcepos=\"714:5-714:62\">\n<li data-sourcepos=\"714:5-714:62\"><strong>Example:<\/strong> &#8220;women&#8217;s running shoes&#8221;, &#8220;trail running shoes&#8221;<\/li>\n<\/ul>\n<\/li>\n<li data-sourcepos=\"715:1-716:84\"><strong>Subcategory pages:<\/strong> More specific keywords with medium to low search volume\n<ul data-sourcepos=\"716:5-716:84\">\n<li data-sourcepos=\"716:5-716:84\"><strong>Example:<\/strong> &#8220;cushioning running shoes women&#8221;, &#8220;waterproof trail running shoes&#8221;<\/li>\n<\/ul>\n<\/li>\n<li data-sourcepos=\"717:1-718:60\"><strong>Product pages:<\/strong> Very specific keywords with brand and model names\n<ul data-sourcepos=\"718:5-718:60\">\n<li data-sourcepos=\"718:5-718:60\"><strong>Example:<\/strong> &#8220;nike air zoom pegasus 42 women black&#8221;<\/li>\n<\/ul>\n<\/li>\n<li data-sourcepos=\"719:1-721:0\"><strong>Content pages:<\/strong> Informative keywords and long-tail variants\n<ul data-sourcepos=\"720:5-721:0\">\n<li data-sourcepos=\"720:5-721:0\"><strong>Example:<\/strong> &#8220;running shoes for overweight beginners&#8221;, &#8220;how often to change running shoes&#8221;<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p data-sourcepos=\"722:1-722:402\"><strong>Case Study:<\/strong> An online retailer for outdoor equipment implemented a comprehensive keyword strategy based on semantic clusters. By specifically optimizing category pages for commercial-intent keywords and creating informative content for informational-intent keywords, he was able to increase his organic traffic by 67% and improve the conversion rate by 23%. <\/p>\n<h2 data-sourcepos=\"726:1-726:40\">International SEO for Shopware Shops<\/h2>\n<p data-sourcepos=\"728:1-728:300\">For Shopware shops that operate internationally, a well-thought-out strategy for international SEO is essential. Shopware 6 offers native support for multilingual shops and currencies, but additional measures must be taken to rank successfully in different countries. <\/p>\n<h3 data-sourcepos=\"730:1-730:42\">Hreflang Implementation in Shopware 6<\/h3>\n<p data-sourcepos=\"732:1-732:196\">The correct implementation of <strong>hreflang tags<\/strong> is crucial for international SEO. Shopware 6 does not implement these tags optimally by default and requires manual extension. <\/p>\n<div class=\"code-block ng-tns-c2477699268-438 ng-trigger ng-trigger-codeBlockRevealAnimation\">\n<div class=\"code-block-decoration header-formatted gds-title-s ng-tns-c2477699268-438 ng-star-inserted\">\n<p><span class=\"ng-tns-c2477699268-438\">PHP<\/span><\/p>\n<div class=\"buttons ng-tns-c2477699268-438 ng-star-inserted\"><\/div>\n<\/div>\n<div class=\"formatted-code-block-internal-container ng-tns-c2477699268-438\">\n<div class=\"animated-opacity ng-tns-c2477699268-438\">\n<pre class=\"ng-tns-c2477699268-438\"><code class=\"code-container formatted ng-tns-c2477699268-438\" role=\"text\" data-test-id=\"code-content\" data-sourcepos=\"734:1-763:1\"><span class=\"hljs-comment\">\/\/ In einer Custom Theme Extension<\/span>\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">addHreflangTags<\/span>(<span class=\"hljs-params\">StorefrontRenderEvent <span class=\"hljs-variable\">$event<\/span><\/span>): <span class=\"hljs-title\">void<\/span>\n<\/span>{\n    <span class=\"hljs-variable\">$salesChannels<\/span> = <span class=\"hljs-keyword\">$this<\/span>-&gt;salesChannelRepository-&gt;search(\n        (<span class=\"hljs-keyword\">new<\/span> Criteria())-&gt;addFilter(<span class=\"hljs-keyword\">new<\/span> EqualsFilter(<span class=\"hljs-string\">'active'<\/span>, <span class=\"hljs-literal\">true<\/span>)),\n        <span class=\"hljs-variable\">$event<\/span>-&gt;getContext()\n    )-&gt;getEntities();\n\n    <span class=\"hljs-variable\">$hreflangTags<\/span> = [];\n    <span class=\"hljs-variable\">$currentUrl<\/span> = <span class=\"hljs-keyword\">$this<\/span>-&gt;router-&gt;<span class=\"citation-30\">generate(\n        <\/span><span class=\"hljs-variable\"><span class=\"citation-30\">$event<\/span><\/span><span class=\"citation-30\">-&gt;getRequest()-&gt;attributes-&gt;get(<\/span><span class=\"hljs-string\"><span class=\"citation-30\">'_route'<\/span><\/span><span class=\"citation-30\">),\n        <\/span><span class=\"hljs-variable\"><span class=\"citation-30\">$event<\/span><\/span><span class=\"citation-30\">-&gt;getRequest()-&gt;attributes-&gt;get(<\/span><span class=\"hljs-string\"><span class=\"citation-30\">'_route_params'<\/span><\/span><span class=\"citation-30 citation-end-30\">),\n        UrlGeneratorInterface::ABSOLUTE_URL<\/span>\n    );\n\n    <span class=\"hljs-keyword\">foreach<\/span> (<span class=\"hljs-variable\">$salesChannels<\/span> <span class=\"hljs-keyword\">as<\/span> <span class=\"hljs-variable\">$salesChannel<\/span>) {\n        <span class=\"hljs-variable\">$locale<\/span> = <span class=\"hljs-variable\">$salesChannel<\/span>-&gt;getLanguage()-&gt;getLocale()-&gt;getCode();\n        <span class=\"hljs-variable\">$territory<\/span> = explode(<span class=\"hljs-string\">'-'<\/span>, <span class=\"hljs-variable\">$locale<\/span>)[<span class=\"hljs-number\">1<\/span>] ?? <span class=\"hljs-string\">''<\/span>;\n\n        <span class=\"hljs-variable\">$hreflangTags<\/span>[] = [\n            <span class=\"hljs-string\">'locale'<\/span> =&gt; strtolower(str_replace(<span class=\"hljs-string\">'_'<\/span>, <span class=\"hljs-string\">'-'<\/span>, <span class=\"hljs-variable\">$locale<\/span>)),\n            <span class=\"hljs-string\">'territory'<\/span> =&gt; strtolower(<span class=\"hljs-variable\">$territory<\/span>),\n            <span class=\"hljs-string\">'url'<\/span> =&gt; <span class=\"hljs-keyword\">$this<\/span>-&gt;getUrlForSalesChannel(<span class=\"hljs-variable\">$currentUrl<\/span>, <span class=\"hljs-variable\">$salesChannel<\/span>-&gt;getId())\n        ];\n    }\n\n    <span class=\"hljs-variable\">$event<\/span>-&gt;getContext()-&gt;addExtension(<span class=\"hljs-string\">'hreflangTags'<\/span>, <span class=\"hljs-keyword\">new<\/span> ArrayEntity(<span class=\"hljs-variable\">$hreflangTags<\/span>));\n}\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<p data-sourcepos=\"764:1-764:47\"><strong>Twig template customization (<code>base.html.twig<\/code>):<\/strong><\/p>\n<div class=\"code-block ng-tns-c2477699268-439 ng-trigger ng-trigger-codeBlockRevealAnimation\">\n<div class=\"code-block-decoration header-formatted gds-title-s ng-tns-c2477699268-439 ng-star-inserted\">\n<p><span class=\"ng-tns-c2477699268-439\">Twig<\/span><\/p>\n<div class=\"buttons ng-tns-c2477699268-439 ng-star-inserted\"><\/div>\n<\/div>\n<div class=\"formatted-code-block-internal-container ng-tns-c2477699268-439\">\n<div class=\"animated-opacity ng-tns-c2477699268-439\">\n<pre class=\"ng-tns-c2477699268-439\"><code class=\"code-container formatted ng-tns-c2477699268-439\" role=\"text\" data-test-id=\"code-content\" data-sourcepos=\"765:1-776:11\"><span class=\"hljs-comment\">{# In base.html.twig #}<\/span>\n<span class=\"hljs-template-tag\">{% <span class=\"hljs-name\"><span class=\"hljs-keyword\">if<\/span><\/span> context.extension('hreflangTags') %}<\/span>\n    <span class=\"hljs-template-tag\">{% <span class=\"hljs-name\"><span class=\"hljs-keyword\">for<\/span><\/span> tag in context.extension('hreflangTags') %}<\/span><span class=\"xml\">\n        <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">link<\/span> <span class=\"hljs-attr\">rel<\/span>=<span class=\"hljs-string\">\"alternate\"<\/span> <span class=\"hljs-attr\">hreflang<\/span>=<span class=\"hljs-string\">\"<\/span><\/span><\/span><span class=\"hljs-template-variable\">{{ tag.locale }}<\/span><span class=\"xml\"><span class=\"hljs-tag\"><span class=\"hljs-string\">\"<\/span> <span class=\"hljs-attr\">href<\/span>=<span class=\"hljs-string\">\"<\/span><\/span><\/span><span class=\"hljs-template-variable\">{{ tag.url }}<\/span><span class=\"xml\"><span class=\"hljs-tag\"><span class=\"hljs-string\">\"<\/span> \/&gt;<\/span>\n        <\/span><span class=\"hljs-template-tag\">{% <span class=\"hljs-name\"><span class=\"hljs-keyword\">if<\/span><\/span> tag.territory %}<\/span>\n            <span class=\"hljs-comment\">{# F\u00fcgen Sie hier den x-default Link hinzu, falls erforderlich #}<\/span><span class=\"xml\">\n            <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">link<\/span> <span class=\"hljs-attr\">rel<\/span>=<span class=\"hljs-string\">\"alternate\"<\/span> <span class=\"hljs-attr\">hreflang<\/span>=<span class=\"hljs-string\">\"x-default\"<\/span> <span class=\"hljs-attr\">href<\/span>=<span class=\"hljs-string\">\"<\/span><\/span><\/span><span class=\"hljs-template-variable\">{{ tag.url }}<\/span><span class=\"xml\"><span class=\"hljs-tag\"><span class=\"hljs-string\">\"<\/span> \/&gt;<\/span>\n        <\/span><span class=\"hljs-template-tag\">{% <span class=\"hljs-name\"><span class=\"hljs-keyword\">endif<\/span><\/span> %}<\/span>\n    <span class=\"hljs-template-tag\">{% <span class=\"hljs-name\"><span class=\"hljs-keyword\">endfor<\/span><\/span> %}<\/span>\n<span class=\"hljs-template-tag\">{% <span class=\"hljs-name\"><span class=\"hljs-keyword\">endif<\/span><\/span> %}<\/span>\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<h3 data-sourcepos=\"778:1-778:31\">International URL Structure<\/h3>\n<p data-sourcepos=\"780:1-780:70\">Choose a suitable URL structure for your international shops:<\/p>\n<p><strong>ccTLDs (country-specific top-level domains):<\/strong><\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul data-sourcepos=\"783:5-785:80\">\n<li data-sourcepos=\"783:5-783:63\"><strong>Example:<\/strong> <code>example.de<\/code>, <code>example.fr<\/code>, <code>example.co.uk<\/code><\/li>\n<li data-sourcepos=\"784:5-784:72\"><strong>Advantages:<\/strong> Clear geographic assignment, strong ranking signal<\/li>\n<li data-sourcepos=\"785:5-785:80\"><strong>Disadvantages:<\/strong> Separate domains for each country, higher administrative effort<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><strong>Subdomains:<\/strong><\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul data-sourcepos=\"787:5-789:58\">\n<li data-sourcepos=\"787:5-787:72\"><strong>Example:<\/strong> <code>de.example.com<\/code>, <code>fr.example.com<\/code>, <code>uk.example.com<\/code><\/li>\n<li data-sourcepos=\"788:5-788:71\"><strong>Advantages:<\/strong> Simple technical implementation, clear separation<\/li>\n<li data-sourcepos=\"789:5-789:58\"><strong>Disadvantages:<\/strong> Weaker ranking signal than ccTLDs<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><strong>Subdirectories:<\/strong><\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul data-sourcepos=\"791:5-794:0\">\n<li data-sourcepos=\"791:5-791:75\"><strong>Example:<\/strong> <code>example.com\/de\/<\/code>, <code>example.com\/fr\/<\/code>, <code>example.com\/uk\/<\/code><\/li>\n<li data-sourcepos=\"792:5-792:68\"><strong>Advantages:<\/strong> Bundled domain authority, simple administration<\/li>\n<li data-sourcepos=\"793:5-794:0\"><strong>Disadvantages:<\/strong> More complex configuration in Shopware<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p data-sourcepos=\"795:1-795:208\"><strong>Recommendation for Shopware 6:<\/strong> Subdirectories offer the best balance of SEO performance and manageability, as the domain authority remains bundled and Shopware 6 natively supports this structure well.<\/p>\n<h3 data-sourcepos=\"797:1-797:34\">Localized Content Strategy<\/h3>\n<p data-sourcepos=\"799:1-799:96\">Avoid machine translations and invest in <strong>culturally adapted content<\/strong>:<\/p>\n<ul data-sourcepos=\"801:1-805:0\">\n<li data-sourcepos=\"801:1-801:96\"><strong>Product Descriptions:<\/strong> Consider cultural differences and local preferences.<\/li>\n<li data-sourcepos=\"802:1-802:84\"><strong>Local Keywords:<\/strong> Conduct separate keyword research for each market.<\/li>\n<li data-sourcepos=\"803:1-803:92\"><strong>Local Backlinks:<\/strong> Build backlinks from websites in the respective target countries.<\/li>\n<li data-sourcepos=\"804:1-805:0\"><strong>Local Payment Methods and Shipping Options:<\/strong> Integrate country-specific payment methods and communicate them clearly.<\/li>\n<\/ul>\n<p data-sourcepos=\"806:1-806:422\"><strong>Case Study:<\/strong> A fashion retailer expanded into five European markets with a subdirectory structure in Shopware 6. By implementing a comprehensive hreflang strategy and localized content, it was able to build organic visibility in all target markets within six months. The strategy was particularly successful in France, where the shop ranked in the top 10 for 73% of the target keywords. <\/p>\n<h2 data-sourcepos=\"810:1-810:29\">SEO for Shopware B2b Shops<\/h2>\n<p data-sourcepos=\"812:1-812:211\"><strong>B2B e-commerce<\/strong> places special demands on the SEO strategy. With the <strong>B2B Suite plugin<\/strong>, Shopware 6 offers specific functions for B2B shops, which should also be optimized from an SEO perspective. <\/p>\n<h3 data-sourcepos=\"814:1-814:37\">B2B-Specific Keyword Strategy<\/h3>\n<p data-sourcepos=\"816:1-816:62\">B2B keywords often differ significantly from B2C keywords:<\/p>\n<ul data-sourcepos=\"818:1-827:0\">\n<li data-sourcepos=\"818:1-820:55\"><strong>Technical Terms and Industry Terminology:<\/strong>\n<ul data-sourcepos=\"819:5-820:55\">\n<li data-sourcepos=\"819:5-819:36\"><strong>B2C:<\/strong> &#8220;cheap running shoes&#8221;<\/li>\n<li data-sourcepos=\"820:5-820:55\"><strong>B2B:<\/strong> &#8220;wholesale sporting goods minimum order&#8221;<\/li>\n<\/ul>\n<\/li>\n<li data-sourcepos=\"821:1-823:61\"><strong>Specification and Compliance-Focused Searches:<\/strong>\n<ul data-sourcepos=\"822:5-823:61\">\n<li data-sourcepos=\"822:5-822:42\"><strong>B2C:<\/strong> &#8220;waterproof hiking boots&#8221;<\/li>\n<li data-sourcepos=\"823:5-823:61\"><strong>B2B:<\/strong> &#8220;en iso 20345 s3 safety shoes wholesale&#8221;<\/li>\n<\/ul>\n<\/li>\n<li data-sourcepos=\"824:1-827:0\"><strong>Process and Logistics-Related Keywords:<\/strong>\n<ul data-sourcepos=\"825:5-827:0\">\n<li data-sourcepos=\"825:5-825:46\"><strong>B2C:<\/strong> &#8220;fast shipping sports shoes&#8221;<\/li>\n<li data-sourcepos=\"826:5-827:0\"><strong>B2B:<\/strong> &#8220;dropshipping sporting goods white label&#8221;<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3 data-sourcepos=\"828:1-828:41\">Optimization of Protected Areas<\/h3>\n<p data-sourcepos=\"830:1-830:128\">B2B shops often have password-protected areas that should not be indexed. You can use the <code>robots.txt<\/code> for this: <\/p>\n<div class=\"code-block ng-tns-c2477699268-440 ng-trigger ng-trigger-codeBlockRevealAnimation\">\n<div class=\"formatted-code-block-internal-container ng-tns-c2477699268-440\">\n<div class=\"animated-opacity ng-tns-c2477699268-440\">\n<pre class=\"ng-tns-c2477699268-440\"><code class=\"code-container formatted ng-tns-c2477699268-440 no-decoration-radius\" role=\"text\" data-test-id=\"code-content\" data-sourcepos=\"831:1-836:28\">User-agent: *\nDisallow: \/account\/\nDisallow: \/b2b-dashboard\/\nDisallow: \/order-management\/\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<p data-sourcepos=\"837:1-837:86\">However, make sure that publicly accessible information is indexable:<\/p>\n<ul data-sourcepos=\"839:1-842:0\">\n<li data-sourcepos=\"839:1-839:106\"><strong>Public Product Catalogs:<\/strong> Create indexable versions of your product catalogs without prices.<\/li>\n<li data-sourcepos=\"840:1-840:124\"><strong>Landing Pages for B2B Solutions:<\/strong> Develop specific landing pages for different industries or use cases.<\/li>\n<li data-sourcepos=\"841:1-842:0\"><strong>Technical Information and White Papers:<\/strong> Offer high-quality technical information as lead magnets.<\/li>\n<\/ul>\n<h3 data-sourcepos=\"843:1-843:31\">Structured Data for B2b<\/h3>\n<p data-sourcepos=\"845:1-845:82\">Implement specific <strong>schema markup elements<\/strong> for B2B use cases:<\/p>\n<div class=\"code-block ng-tns-c2477699268-441 ng-trigger ng-trigger-codeBlockRevealAnimation\">\n<div class=\"code-block-decoration header-formatted gds-title-s ng-tns-c2477699268-441 ng-star-inserted\">\n<p><span class=\"ng-tns-c2477699268-441\">JSON<\/span><\/p>\n<div class=\"buttons ng-tns-c2477699268-441 ng-star-inserted\"><\/div>\n<\/div>\n<div class=\"formatted-code-block-internal-container ng-tns-c2477699268-441\">\n<div class=\"animated-opacity ng-tns-c2477699268-441\">\n<pre class=\"ng-tns-c2477699268-441\"><code class=\"code-container formatted ng-tns-c2477699268-441\" role=\"text\" data-test-id=\"code-content\" data-sourcepos=\"846:1-913:1\">{\n  <span class=\"hljs-attr\">\"@context\"<\/span>: <span class=\"hljs-string\">\"https:\/\/schema.org\/\"<\/span>,\n  <span class=\"hljs-attr\">\"@type\"<\/span>: <span class=\"hljs-string\">\"Product\"<\/span>,\n  <span class=\"hljs-attr\">\"name\"<\/span>: <span class=\"hljs-string\">\"Industrielle Sicherheitsschuhe S3\"<\/span>,\n  <span class=\"hljs-attr\">\"description\"<\/span>: <span class=\"hljs-string\">\"EN ISO 20345 zertifizierte Sicherheitsschuhe f\u00fcr industrielle Anwendungen\"<\/span>,\n  <span class=\"hljs-attr\">\"brand\"<\/span>: {\n    <span class=\"hljs-attr\">\"@type\"<\/span>: <span class=\"hljs-string\">\"Brand\"<\/span>,\n    <span class=\"hljs-attr\">\"name\"<\/span>: <span class=\"hljs-string\">\"SafetyPro\"<\/span>\n  },\n  <span class=\"hljs-attr\">\"offers\"<\/span>: {\n    <span class=\"hljs-attr\">\"@type\"<\/span>: <span class=\"hljs-string\">\"AggregateOffer\"<\/span>,\n    <span class=\"hljs-attr\">\"priceCurrency\"<\/span>: <span class=\"hljs-string\">\"EUR\"<\/span>,\n    <span class=\"hljs-attr\">\"lowPrice\"<\/span>: <span class=\"hljs-string\">\"89.00\"<\/span>,\n    <span class=\"hljs-attr\">\"highPrice\"<\/span>: <span class=\"hljs-string\">\"129.00\"<\/span>,\n    <span class=\"hljs-attr\">\"offerCount\"<\/span>: <span class=\"hljs-string\">\"5\"<\/span>,\n    <span class=\"hljs-attr\">\"offers\"<\/span>: [\n      {\n        <span class=\"hljs-attr\">\"@type\"<\/span>: <span class=\"hljs-string\">\"Offer\"<\/span>,\n        <span class=\"hljs-attr\">\"name\"<\/span>: <span class=\"hljs-string\">\"1-9 Paare\"<\/span>,\n        <span class=\"hljs-attr\">\"price\"<\/span>: <span class=\"hljs-string\">\"129.00\"<\/span>,\n        <span class=\"hljs-attr\">\"priceCurrency\"<\/span>: <span class=\"hljs-string\">\"EUR\"<\/span>\n      },\n      {\n        <span class=\"hljs-attr\">\"@type\"<\/span>: <span class=\"hljs-string\">\"Offer\"<\/span>,\n        <span class=\"hljs-attr\">\"name\"<\/span>: <span class=\"hljs-string\">\"10-49 Paare\"<\/span>,\n        <span class=\"hljs-attr\">\"price\"<\/span>: <span class=\"hljs-string\">\"119.00\"<\/span>,\n        <span class=\"hljs-attr\">\"priceCurrency\"<\/span>: <span class=\"hljs-string\">\"EUR\"<\/span>\n      },\n      {\n        <span class=\"hljs-attr\">\"@type\"<\/span>: <span class=\"hljs-string\">\"Offer\"<\/span>,\n        <span class=\"hljs-attr\">\"name\"<\/span>: <span class=\"hljs-string\">\"50-99 Paare\"<\/span>,\n        <span class=\"hljs-attr\">\"price\"<\/span>: <span class=\"hljs-string\">\"109.00\"<\/span>,\n        <span class=\"hljs-attr\">\"priceCurrency\"<\/span>: <span class=\"hljs-string\">\"EUR\"<\/span>\n      },\n      {\n        <span class=\"hljs-attr\">\"@type\"<\/span>: <span class=\"hljs-string\">\"Offer\"<\/span>,\n        <span class=\"hljs-attr\">\"name\"<\/span>: <span class=\"hljs-string\">\"100-499 Paare\"<\/span>,\n        <span class=\"hljs-attr\">\"price\"<\/span>: <span class=\"hljs-string\">\"99.00\"<\/span>,\n        <span class=\"hljs-attr\">\"priceCurrency\"<\/span>: <span class=\"hljs-string\">\"EUR\"<\/span>\n      },\n      {\n        <span class=\"hljs-attr\">\"@type\"<\/span>: <span class=\"hljs-string\">\"Offer\"<\/span>,\n        <span class=\"hljs-attr\">\"name\"<\/span>: <span class=\"hljs-string\">\"500+ Paare\"<\/span>,\n        <span class=\"hljs-attr\">\"price\"<\/span>: <span class=\"hljs-string\">\"89.00\"<\/span>,\n        <span class=\"hljs-attr\">\"priceCurrency\"<\/span>: <span class=\"hljs-string\">\"EUR\"<\/span>\n      }\n    ]\n  },\n  <span class=\"hljs-attr\">\"additionalProperty\"<\/span>: [\n    {\n      <span class=\"hljs-attr\">\"@type\"<\/span>: <span class=\"hljs-string\">\"PropertyValue\"<\/span>,\n      <span class=\"hljs-attr\">\"name\"<\/span>: <span class=\"hljs-string\">\"Zertifizierung\"<\/span>,\n      <span class=\"hljs-attr\">\"value\"<\/span>: <span class=\"hljs-string\">\"EN ISO 20345:2011 S3 SRC\"<\/span>\n    },\n    {\n      <span class=\"hljs-attr\">\"@type\"<\/span>: <span class=\"hljs-string\">\"PropertyValue\"<\/span>,\n      <span class=\"hljs-attr\">\"name\"<\/span>: <span class=\"hljs-string\">\"Mindestbestellmenge\"<\/span>,\n      <span class=\"hljs-attr\">\"value\"<\/span>: <span class=\"hljs-string\">\"10 Paare\"<\/span>\n    },\n    {\n      <span class=\"hljs-attr\">\"@type\"<\/span>: <span class=\"hljs-string\">\"PropertyValue\"<\/span>,\n      <span class=\"hljs-attr\">\"name\"<\/span>: <span class=\"hljs-string\">\"Lieferzeit\"<\/span>,\n      <span class=\"hljs-attr\">\"value\"<\/span>: <span class=\"hljs-string\">\"3-5 Werktage\"<\/span>\n    }\n  ]\n}\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<p data-sourcepos=\"914:1-914:527\"><strong>Case Study:<\/strong> A B2B supplier for industrial equipment implemented a two-stage content strategy: Publicly accessible technical articles and product catalogs without prices for indexing, as well as a password-protected area with detailed price lists and ordering functions for registered customers. By optimizing the public content for industry-specific keywords, the number of qualified leads was increased by 83%, while the conversion rate from leads to customers was 12.4%. <\/p>\n<h2 data-sourcepos=\"918:1-918:30\">Your Shopware SEO Strategy<\/h2>\n<p data-sourcepos=\"920:1-920:352\">Search engine optimization for Shopware shops is a continuous process that requires technical know-how, strategic thinking and consistent implementation. With the strategies and best practices presented in this guide, you can optimally optimize your Shopware shop for search engines and gain a competitive advantage. <\/p>\n<p data-sourcepos=\"922:1-922:309\">Remember that SEO is not a one-time task, but an ongoing investment in the success of your online shop. Regularly monitor your performance, adapt your strategy to current developments and stay up to date with SEO trends and algorithm updates. <\/p>\n<h3 data-sourcepos=\"924:1-924:46\">Checklist for your Shopware SEO Strategy<\/h3>\n<ul data-sourcepos=\"926:1-936:0\">\n<li data-sourcepos=\"926:1-926:82\">Optimize <strong>technical basics<\/strong> (URL structure, canonical tags, pagination).<\/li>\n<li data-sourcepos=\"927:1-927:54\">Optimize <strong>meta data<\/strong> for all important pages.<\/li>\n<li data-sourcepos=\"928:1-928:64\">Create <strong>high-quality, unique product descriptions<\/strong>.<\/li>\n<li data-sourcepos=\"929:1-929:74\">Improve <strong>Core Web Vitals<\/strong> and ensure <strong>mobile optimization<\/strong>.<\/li>\n<li data-sourcepos=\"930:1-930:73\">Configure <strong>XML sitemap<\/strong> and submit it to Google Search Console.<\/li>\n<li data-sourcepos=\"931:1-931:45\">Optimize <strong>internal linking structure<\/strong>.<\/li>\n<li data-sourcepos=\"932:1-932:66\">Develop <strong>content marketing strategy<\/strong> with blog integration.<\/li>\n<li data-sourcepos=\"933:1-933:59\">Implement <strong>structured data<\/strong> for rich snippets.<\/li>\n<li data-sourcepos=\"934:1-934:73\">Set up regular <strong>monitoring and analysis<\/strong> of SEO performance.<\/li>\n<li data-sourcepos=\"935:1-936:0\">Implement <strong>international SEO strategy<\/strong> for multilingual shops.<\/li>\n<\/ul>\n<p data-sourcepos=\"937:1-937:243\">With a systematic approach and the consistent implementation of these measures, you will sustainably improve the visibility of your Shopware shop in the search results and generate more qualified traffic and conversions.<\/p>\n<p data-sourcepos=\"939:1-939:329\"><strong>Practical Tip for Conclusion:<\/strong> Start with the basics and work your way forward systematically. Even small improvements can have a significant impact on your rankings. Prioritize measures with the best ratio of effort to benefit and expand your SEO strategy step by step.  <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Search engine optimization for Shopware shops differs fundamentally from SEO for conventional websites. Online shops must not only rank for relevant keywords, but also offer an optimal user experience that leads to conversions. Current statistic: Over 40% of all e-commerce traffic comes directly from Google. A non-optimized Shopware shop therefore potentially loses almost half of [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":4525,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"_uag_custom_page_level_css":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"default","adv-header-id-meta":"","stick-header-meta":"default","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[22],"tags":[],"class_list":["post-4524","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-solutions"],"uagb_featured_image_src":{"full":["https:\/\/www.hector-lopez.com\/wp-content\/uploads\/2025\/05\/Shopware-SEO.webp",1344,768,false],"thumbnail":["https:\/\/www.hector-lopez.com\/wp-content\/uploads\/2025\/05\/Shopware-SEO-150x150.webp",150,150,true],"medium":["https:\/\/www.hector-lopez.com\/wp-content\/uploads\/2025\/05\/Shopware-SEO-300x171.webp",300,171,true],"medium_large":["https:\/\/www.hector-lopez.com\/wp-content\/uploads\/2025\/05\/Shopware-SEO-768x439.webp",768,439,true],"large":["https:\/\/www.hector-lopez.com\/wp-content\/uploads\/2025\/05\/Shopware-SEO-1024x585.webp",1024,585,true],"1536x1536":["https:\/\/www.hector-lopez.com\/wp-content\/uploads\/2025\/05\/Shopware-SEO.webp",1344,768,false],"2048x2048":["https:\/\/www.hector-lopez.com\/wp-content\/uploads\/2025\/05\/Shopware-SEO.webp",1344,768,false]},"uagb_author_info":{"display_name":"Hector Lopez","author_link":"https:\/\/www.hector-lopez.com\/en\/author\/hectorhectorlopez-de\/"},"uagb_comment_info":0,"uagb_excerpt":"Search engine optimization for Shopware shops differs fundamentally from SEO for conventional websites. Online shops must not only rank for relevant keywords, but also offer an optimal user experience that leads to conversions. Current statistic: Over 40% of all e-commerce traffic comes directly from Google. A non-optimized Shopware shop therefore potentially loses almost half of&hellip;","_links":{"self":[{"href":"https:\/\/www.hector-lopez.com\/en\/wp-json\/wp\/v2\/posts\/4524","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hector-lopez.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hector-lopez.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hector-lopez.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hector-lopez.com\/en\/wp-json\/wp\/v2\/comments?post=4524"}],"version-history":[{"count":1,"href":"https:\/\/www.hector-lopez.com\/en\/wp-json\/wp\/v2\/posts\/4524\/revisions"}],"predecessor-version":[{"id":5117,"href":"https:\/\/www.hector-lopez.com\/en\/wp-json\/wp\/v2\/posts\/4524\/revisions\/5117"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hector-lopez.com\/en\/wp-json\/wp\/v2\/media\/4525"}],"wp:attachment":[{"href":"https:\/\/www.hector-lopez.com\/en\/wp-json\/wp\/v2\/media?parent=4524"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hector-lopez.com\/en\/wp-json\/wp\/v2\/categories?post=4524"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hector-lopez.com\/en\/wp-json\/wp\/v2\/tags?post=4524"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}