Skip to content

XML Sitemap

The XML sitemap at /sitemap.xml lists every indexable page of your site — Pages, Blog articles, Shop categories, Shop products (both Native Shop and Shopware 6), and E-Learning courses. Search engines read the sitemap to discover content faster and to know when a page was last updated.

The sitemap is generated by a scheduled task. You do not need to rebuild it manually — but you can trigger a refresh from the Task Manager when you need to.

Where to read it

Open https://{your-domain}/sitemap.xml in the browser. You see a standard XML sitemap with <url> entries, last-modified dates, and <xhtml:link rel="alternate" hreflang="..."> annotations for multi-language sites.

What is included

SourceIncluded when
PagesPublished and not soft-deleted. The homepage appears at the site root (/ or /de/, …).
Blog articlesPublished and in an active Blog category.
Native Shop categoriesActive categories.
Native Shop productsActive products with a URL-Rewrite set.
Shopware 6 categoriesSynced categories from the Shopware 6 plugin.
Shopware 6 productsSynced and active products.
E-Learning coursesActive courses.

What is excluded

  • Pages behind login (users-only areas).
  • Draft or unpublished content.
  • URLs that are the source of an active 301/302 Redirect. (The sitemap only lists the canonical, final URL.)
  • URLs marked noindex in SEO metadata.
  • Admin URLs (/admin/*, /api/*).

How often it regenerates

The sitemap is generated by the scheduled task generate_sitemap.php which runs once per day (every 24 hours). After a publish you typically see the change in the sitemap on the next calendar day.

The file is written to two locations:

  • {document-root}/sitemap.xml — served by the PHP backend.
  • _theme/vue-base/public/sitemap.xml — served by Nuxt when static-site rendering is used.

Both files are identical and updated together.

Robots.txt is updated too

If your robots.txt is missing a Sitemap: line, the scheduled task adds one pointing at /sitemap.xml. If the line already exists, it is left alone.

Force a regeneration

If you published a page and want the sitemap to reflect it right now — for example before you manually submit the URL to Google Search Console — trigger a manual run:

  1. Open Settings → Task Manager in the sidebar.
  2. Switch to the Scheduled Tasks tab.
  3. Find Generate Sitemap in the list.
  4. Click Run Now.
Task Manager Scheduled Tasks tab with the Generate Sitemap row and a Run Now button
Run Now kicks off the sitemap task without waiting for the next schedule.

The task finishes in a few seconds on small sites; large catalogs (thousands of products) may take up to a minute. The Task Manager shows the run status.

hreflang for multi-language sites

On multi-language sites, every URL in the sitemap comes with <xhtml:link rel="alternate" hreflang="..."> entries pointing to its language variants. Google and Bing use these to serve the right language to the right audience.

Example for a page that exists in EN and DE:

xml
<url>
  <loc>https://example.com/about</loc>
  <lastmod>2026-04-20</lastmod>
  <xhtml:link rel="alternate" hreflang="en" href="https://example.com/about" />
  <xhtml:link rel="alternate" hreflang="de" href="https://example.com/de/ueber-uns" />
  <xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/about" />
</url>

x-default points to the main language. The CMS picks the main language from Settings → Languages.

Translate the URL-Rewrite per language

For hreflang to work you need a distinct URL per language — set the URL-Rewrite field in every language tab. See SEO Meta per page.

Submitting the sitemap to search engines

Most search engines discover the sitemap automatically via the robots.txt directive. For faster indexing on a new site:

  • Google: Search Console → Sitemaps → submit https://{your-domain}/sitemap.xml.
  • Bing: Bing Webmaster Tools → Sitemaps → submit the same URL.

You only need to submit once. Every regeneration is picked up on the next crawl.

Common issues

Sitemap is empty

Check Settings → Languages — the website.domain must be set. Without a domain the task bails out early.

A freshly published page is missing

Wait for the next scheduled run, or trigger one manually (see above). Also verify the page has Status: Published and an URL-Rewrite in the current language.

Old URL still in sitemap after a rename

The sitemap picks up the latest URL-Rewrite, but an old 301-redirected URL should not appear. If it does, verify that the redirect is Active and that no published Page still points at the old URL in its URL-Rewrite field.

See also