Skip to main content
Shopify guide

Sitemap.xml for Shopify Stores

By ยท Updated ยท 6 min read

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.

Frequently asked questions

Can I edit Shopify's sitemap.xml directly?

No. Shopify generates sitemap.xml dynamically and does not allow direct file editing through the admin or theme editor. To remove a URL from the sitemap, you must either unpublish the page, apply a noindex tag via SEO settings, or delete the content. Third-party SEO apps can generate supplemental sitemaps, but the default file remains outside direct operator control.

Does Shopify's sitemap include product images?

The default Shopify sitemap does not include image sitemap extension tags (<image:image>). Google cannot receive structured image data through the auto-generated file alone. Stores that prioritize Google Image Search traffic need a third-party Shopify app or a custom-built sitemap solution that adds image tags alongside each product URL.

How do I submit my Shopify sitemap to Google?

In Google Search Console, select your property, navigate to the Sitemaps section under Indexing, and enter sitemap.xml in the URL field. Shopify's sitemap index automatically links to all child sitemaps, so submitting only the index URL is sufficient. Google follows the child sitemap references without requiring separate submissions for sitemap_products_1.xml or other sub-files.

What happens to the sitemap on a headless Shopify (Hydrogen) build?

Headless Shopify builds using Hydrogen do not inherit the default sitemap.xml. The Hydrogen framework requires a custom sitemap route โ€” typically a server-side file that queries the Shopify Storefront API for published products, collections, and pages, then renders valid sitemap XML. Without a custom implementation, headless stores have no sitemap and lose automated crawl signals entirely.

Why does Google Search Console show fewer indexed URLs than my Shopify sitemap lists?

A gap between submitted and indexed URLs usually points to duplicate content from faceted collection filters, unintentional noindex tags in the theme, thin product pages with little unique content, or canonical misconfigurations. Check theme.liquid for canonical tag logic and audit Shopify collection filter URLs โ€” if they generate unique URLs without canonical tags pointing to the base collection, Google may deprioritize indexing all listed sitemap entries.

MG
Written by

Matt is the founder of RunOctopus. He built All Angles Creatures from zero to page-1 rankings in reptile feeder insects in under 60 days using exactly this method โ€” turning a hard, entrenched niche into RunOctopus's proof store for programmatic SEO and AI search citation.

Connect on LinkedIn →

See what Otto would build for your store

Free architecture preview. No card required. Five minutes.

Generate Preview →