How Shopify Generates sitemap.xml Automatically
Every Shopify store gets a sitemap.xml file automatically at yourdomain.com/sitemap.xml. Shopify generates this file dynamically โ it is not a static file you upload. It acts as a sitemap index, pointing to child sitemaps organized by content type: sitemap_products_1.xml, sitemap_pages_1.xml, sitemap_collections_1.xml, and sitemap_blogs_1.xml.
Each child sitemap lists URLs with a <loc> tag and a <lastmod> timestamp. Shopify updates these timestamps when you publish or modify content. The structure follows the standard sitemap protocol, so Google Search Console, Bing Webmaster Tools, and AI crawlers accept it without configuration. Submitting yourdomain.com/sitemap.xml to Google Search Console is sufficient โ Google follows the index to reach all child sitemaps automatically.
What Shopify's sitemap.xml Includes and Excludes
Shopify's auto-generated sitemap includes published products, active collections, published blog posts, and online store pages. It excludes draft products, password-protected pages, checkout URLs, customer account pages, cart URLs, policy pages (like /policies/refund-policy), and any page that has been noindexed via the theme's SEO settings. Understanding these exclusions prevents operators from assuming their full catalog is indexed.
Product variants do not get individual URLs in the sitemap. Shopify maps all variants to the base product URL (e.g., /products/red-sneaker), not to variant-specific query strings. This is deliberate โ Shopify's URL structure does not generate unique indexable pages per variant, so the sitemap correctly omits them. Operators selling hundreds of variants per SKU do not need to worry about duplicate URL sprawl inside the sitemap.
Metaobject pages and custom storefront routes built via Hydrogen (Shopify's headless framework) are not included in the default sitemap. Headless builds require a separately generated sitemap, typically created with a custom Remix or Next.js route that pulls from the Storefront API.
Shopify's sitemap.xml Limitations Operators Must Work Around
Shopify does not allow direct editing of the sitemap.xml file. You cannot add, remove, or reorder URLs inside it through the admin interface. The only way to exclude a URL from the sitemap is to either unpublish the content, set the page to noindex, or delete it. This is a hard platform constraint โ there is no native toggle that says 'keep this page live but remove it from sitemap.'
The sitemap also enforces a 50,000 URL limit per child sitemap file, which aligns with the sitemap protocol standard. Stores with very large catalogs โ tens of thousands of products across many collections โ will see Shopify automatically paginate child sitemaps into sitemap_products_1.xml, sitemap_products_2.xml, and so on. This pagination is handled automatically, so operators do not need to intervene, but they do need to verify all paginated files appear in the index sitemap.
Image sitemaps are another gap. Shopify's default sitemap does not include <image:image> extension tags, which means Google does not receive structured signals about product images through the sitemap. Stores that rely heavily on Google Image Search for discovery need a third-party app or a custom solution to generate image sitemap data.
Shopify Apps and Tools That Extend sitemap.xml
Several Shopify apps add sitemap functionality beyond the platform default. Apps like Yoast SEO for Shopify and SEO King generate extended sitemaps that include image tags, custom priority values, and changefreq attributes. These apps inject sitemap data either by creating a separate sitemap endpoint (e.g., /sitemap_extended.xml) or by modifying how the store submits sitemaps to search consoles.
For stores on Shopify Plus, the Script Editor and custom app development via the Admin API allow more granular control. A developer can query the Admin REST or GraphQL API to pull all published URLs and generate a fully custom sitemap hosted on an external service or served via a Shopify theme app extension. This approach gives complete control over which URLs appear, their priority weighting, and their last-modified dates.
Google Search Console remains the primary tool for monitoring sitemap health on Shopify. After submitting the sitemap index, the Coverage report shows how many URLs are discovered and indexed versus how many are excluded. Operators should cross-reference the submitted URL count against their actual published product and page count โ discrepancies indicate crawl budget issues, noindex tags applied unintentionally, or theme-level canonical misconfigurations.
Actionable Steps for Shopify Operators Managing sitemap.xml
Start by confirming your sitemap index is accessible at yourdomain.com/sitemap.xml and that all child sitemaps return HTTP 200 status codes. Use a crawler like Screaming Frog or Sitebulb to fetch each child sitemap URL and verify the listed pages are live and returning 200, not 301 redirects or 404 errors. Redirected or broken URLs inside a sitemap waste crawl budget and can suppress indexation.
Submit the sitemap index URL inside Google Search Console under the Sitemaps section. Monitor the Discovered vs. Indexed ratio monthly. A large gap โ where Shopify lists 5,000 products but Google indexes only 3,200 โ signals either thin content issues, duplicate content from collection filtering, or canonical tag problems at the theme level. Fix canonical tags in theme.liquid before assuming the sitemap itself is the cause.
If your store uses markets or multiple languages via Shopify Markets, verify that alternate-language URLs appear in the sitemap with correct hreflang annotations. Shopify does include international domain and subfolder variants in the auto-generated sitemap, but it does not inject hreflang tags inside the sitemap XML itself โ hreflang is handled via HTML tags on the page. Confirm this is correctly implemented in your theme before attributing indexation gaps to sitemap structure.