Skip to main content
WooCommerce guide

Sitemap.xml for WooCommerce Stores

By ยท Updated ยท 7 min read

How WooCommerce Handles Sitemap.xml by Default

WooCommerce does not ship its own sitemap generator. The sitemap.xml for a WooCommerce store is produced either by WordPress core's built-in sitemap feature (introduced in WordPress 5.5) or by an SEO plugin installed separately. WordPress core generates a basic sitemap at /wp-sitemap.xml, but it excludes product attributes, custom taxonomies added by WooCommerce extensions, and any URL patterns that fall outside standard post types and taxonomies registered at install time.

The practical result: a fresh WooCommerce store relying solely on WordPress core sitemaps will have an incomplete sitemap. Product categories, product tags, and base product pages typically appear, but attribute archives (e.g., /product-category/shoes/?filter_color=red) and shop-specific filtered URLs created by plugins like WooCommerce Layered Nav do not get included automatically. For stores with large catalogs, this omission causes crawl gaps immediately.

The Two Plugin Standards: Yoast SEO vs. Rank Math on WooCommerce

Yoast SEO is the most widely deployed sitemap solution on WooCommerce. It replaces the WordPress core sitemap entirely and generates a sitemap index at /sitemap_index.xml, with separate child sitemaps for posts, pages, products, product categories, and product tags. Yoast respects WooCommerce's built-in post type registration, so every published product with a public URL appears in the product sitemap automatically. The free tier covers all of this; Yoast SEO Premium adds video and news sitemaps but nothing WooCommerce-specific beyond what the free version does.

Rank Math is the primary alternative and takes a similar approach: it generates a sitemap index and populates child sitemaps per post type and taxonomy. Rank Math's free tier includes WooCommerce-specific schema markup generation alongside sitemap output, which Yoast reserves for its paid tiers. Both plugins honor the noindex directive โ€” any product set to noindex in the plugin's meta settings is automatically excluded from the sitemap, which is the correct behavior for out-of-stock or duplicate products you want to suppress.

The choice between them does not materially affect how Google processes the sitemap, but Rank Math's free tier delivers more WooCommerce-adjacent features without payment. The critical configuration step in both plugins is identical: navigate to the sitemap settings, confirm WooCommerce product post types and taxonomies are toggled on, and verify the sitemap index URL in Google Search Console after saving.

WooCommerce-Specific URL Patterns That Break Standard Sitemaps

WooCommerce generates several URL classes that standard sitemap plugins do not handle well. The first is variable product URLs with query strings appended by the attribute selection UI โ€” these are not canonical product URLs and should not be in any sitemap. Standard plugins ignore them correctly. The second and more problematic class is filtered navigation URLs produced by WooCommerce's built-in layered navigation or third-party filter plugins like FiboFilters or WOOF. These generate thousands of faceted URLs that are crawlable but carry no independent indexing value; if they land in a sitemap, crawl budget is consumed on low-value pages.

The correct configuration is to combine two controls: set faceted filter URLs to noindex via the SEO plugin's conditional rules, and confirm those noindexed URLs are absent from the sitemap. Both Yoast and Rank Math exclude noindexed URLs from sitemaps by default, but verify this in staging before deploying to production. The third URL class to audit is WooCommerce's /shop/ base page and any paginated archive pages (/shop/page/2/, /shop/page/3/). Google's current guidance treats these as supplemental; include /shop/ in the sitemap but apply rel=canonical on paginated archive pages to point back to /shop/.

Large Catalog Limits and Sitemap Splitting on WooCommerce

The XML sitemap specification caps a single sitemap file at 50,000 URLs and 50 MB uncompressed. Yoast SEO splits product sitemaps automatically once the product count exceeds 1,000 URLs per file (a conservative internal default, not the specification limit). This means a store with 5,000 SKUs will see five product sitemap files indexed under the sitemap index. Google handles this correctly; the only operational task is confirming all child sitemap files appear and return 200 status codes in Search Console's Sitemaps report.

Stores with very large catalogs โ€” tens of thousands of SKUs โ€” face a different challenge: sitemap generation time. On shared hosting or under-resourced VPS environments, generating sitemaps for 30,000+ products on a cron schedule can time out or spike server load during peak traffic. The mitigation is to schedule sitemap regeneration during low-traffic windows using a server-level cron job rather than WordPress's WP-Cron, which runs on user requests. Alternatively, some teams cache the sitemap output as a static file using a full-page cache plugin like WP Rocket, ensuring fast delivery without runtime generation on every Googlebot request.

Product Images and the WooCommerce Image Sitemap

Google's image indexing relies partly on image data embedded in page-level sitemaps, not a separate image sitemap file. Both Yoast SEO and Rank Math inject image tags (using Google's image sitemap extension namespace) into product sitemap entries automatically when product images are attached to WooCommerce products in the standard way. Each product's primary image and gallery images appear as image:image child elements within the product's URL entry.

The failure mode here is products that use externally hosted images (CDN URLs on a different domain or images linked from third-party sources rather than uploaded to the WordPress media library). These images are not attached to the product post in WordPress, so they do not appear in the sitemap's image extension data. For catalog images to be indexed via sitemap, they must be uploaded to the WordPress media library and associated with the product through WooCommerce's standard product image fields.

Configuration Checklist Before Submitting to Google Search Console

Before submitting a WooCommerce store's sitemap to Google Search Console, verify these specific conditions: the sitemap index URL resolves to a 200 status and contains child sitemap entries for products, product categories, and product tags; WooCommerce's shop page and standard content pages appear in the appropriate child sitemap; faceted navigation URLs are excluded (test by checking that a known filter URL does not appear in any sitemap file); product images attached via the media library appear as image extension entries in the product sitemap; and no noindexed products or draft products appear in any sitemap entry.

Submit the sitemap index URL โ€” not individual child sitemap URLs โ€” to Search Console. Search Console will discover and process child sitemaps from the index automatically. After submission, monitor the Indexed vs. Submitted ratio in the Sitemaps report. A significant gap between submitted URLs and indexed URLs signals either crawl budget constraints, thin content across product pages, or canonicalization conflicts โ€” all of which require investigation beyond the sitemap configuration itself.

Frequently asked questions

Does WooCommerce come with a sitemap.xml out of the box?

No. WooCommerce itself does not generate a sitemap. WordPress 5.5 and later produces a basic sitemap at /wp-sitemap.xml, but it excludes WooCommerce-specific taxonomies and attribute archives. Most WooCommerce stores install Yoast SEO or Rank Math to generate a complete sitemap index that covers products, product categories, and product tags properly.

Should WooCommerce product variations appear in the sitemap?

No. WooCommerce product variations do not have their own canonical URLs; they are attributes of the parent variable product. The parent product URL is the correct entry in the sitemap. Variations selected via the attribute dropdowns produce query-string URLs that are not canonical and should not appear in any sitemap file.

How do I stop WooCommerce filter URLs from bloating my sitemap?

Set layered navigation and filter pages to noindex using your SEO plugin's conditional rules โ€” typically via a URL pattern match on the query parameters those filters generate. Both Yoast SEO and Rank Math exclude noindexed URLs from sitemap output by default. Confirm exclusion by searching a known filter URL pattern against your sitemap files after saving the settings.

How many products can a WooCommerce sitemap handle before splitting?

The XML sitemap specification allows 50,000 URLs per file. Yoast SEO splits product sitemaps into separate child files well before that limit โ€” typically at 1,000 URLs per file. Rank Math uses a configurable limit. Both plugins manage splitting automatically and register all child sitemaps under a sitemap index file, which is the URL you submit to Google Search Console.

Will WooCommerce product images appear in the sitemap automatically?

Yes, if the images are uploaded to the WordPress media library and attached to the product through WooCommerce's standard image fields. Yoast SEO and Rank Math inject image extension data into product sitemap entries for those attached images. Images hosted externally or linked from outside the media library are not attached to the product post and therefore do not appear in sitemap image data.

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 →