Merchant Guide

Sitemap Pro: Magento 2 XML Sitemap Generator

Build complete, segmented XML sitemaps and inject schema.org structured data across your Magento 2 catalog - no file-size limits hit.

Overview

Sitemap Pro is a full-featured Magento 2 XML sitemap generator that replaces Magento's built-in sitemap. It generates separate or combined sitemap files for products, categories, CMS pages, and images; splits large catalogs across multiple files to stay within Google's 50,000-URL limit; and automatically schedules regeneration via cron. Alongside XML sitemaps, the module injects JSON-LD structured data (Product, Category, Business, and WebSite schema) on every relevant storefront page, giving Google the rich product data it needs to show prices, ratings, and availability in search results.

Sitemap Pro configuration overview

This module helps you:

  • Generate standards-compliant XML sitemaps for products, categories, CMS pages, and product images
  • Split large catalogs automatically so no single sitemap file exceeds 50,000 URLs
  • Publish Product, Category, Business, and WebSite JSON-LD structured data for Google Rich Results
  • Control canonical URLs for categories and CMS pages to prevent duplicate content
  • Suppress crawl budget waste with targeted nofollow rules on auth and filter links

When to use this

Use Sitemap Pro when you want to:

  • Submit accurate, up-to-date XML sitemaps to Google Search Console without hitting file-size limits
  • Give Google complete product pricing, availability, and review data via structured data
  • Establish your Organization schema (name, address, contact, social profiles) across the whole storefront
  • Automate sitemap regeneration so every new product or category appears in Google's index quickly
  • Tighten canonical URLs on category and CMS pages to consolidate ranking signals

Key capabilities

  • XML sitemap generation - produces valid sitemap.xml (combined) or separate per-content-type files
  • Sitemap splitting - breaks large catalogs into numbered files plus a sitemap_index.xml
  • Product schema - emits WebPage + Product + BreadcrumbList in a single @graph block with pricing, availability, GTIN, brand, and review data
  • Category schema - emits CollectionPage + BreadcrumbList + ItemList with lean offer summaries
  • Business / Organization schema - generates your brand node with address, contacts, social profiles, and return policy
  • Merchant return policy schema - adds hasMerchantReturnPolicy to product offers and the homepage business node
  • Canonical URL management - strips query strings from category canonicals; injects missing canonicals for CMS pages
  • Nofollow link control - adds rel="nofollow" to login, review-auth, and layered navigation links
  • HTML sitemap page - storefront page at /sitemap with filterable categories, products, and CMS links
  • Additional links - inject custom URLs into XML and HTML sitemaps with section headings

Installation

Sitemap Pro installs via Composer, then activates with a license key from your Moogento.com account. The whole flow takes about 5 minutes.

Step 1: Get your Composer keys from Moogento.com

  1. Sign in at https://www.moogento.com and open My Plugins in your account menu.
  2. Find Sitemap Pro in the list of plugins you own.
  3. Generate (or reveal) the Composer access keys for that plugin - a public key and a private key.
  4. Add your install domain to the key. Each Composer key is tied to a specific domain - if you're installing on yourstore.com, add yourstore.com to the key's allowed domains. The Composer download will be rejected on any other domain.

If you run staging and production on different domains, add both - separate keys per environment are fine too.

Step 2: Install the module with Composer

From your Magento 2 root directory:

composer require moogento/module-sitemappro

When Composer asks for credentials, paste the public key as the username and the private key as the password. They'll be cached in ~/.composer/auth.json for future runs.

Step 3: Enable the module in Magento

php bin/magento setup:upgrade
php bin/magento setup:di:compile
php bin/magento cache:clean

If you run php bin/magento module:status Moogento_Sitemappro you should see it listed as enabled.

Step 4: Add your license key in the Moogento admin

  1. Still on https://www.moogento.com > My Plugins, copy the license key for Sitemap Pro (separate from the Composer keys you used above).
  2. In your Magento admin, go to Stores > Configuration > Moogento > Licenses.
  3. Find the row for Sitemap Pro and paste the license key.
  4. Click Save Config, then run php bin/magento cache:clean once.

The license validates within a few seconds. You should see the module's status flip to active. If it stays inactive, double-check the domain on the license matches where you've installed - domain mismatch is the most common cause.

Extra steps for Sitemap Pro

Ensure the sitemap output directory is writable before running the first generation:

chmod 775 pub/media/sitemap

If the directory does not exist, create it:

mkdir -p pub/media/sitemap && chmod 775 pub/media/sitemap

Sitemap Pro uses two cron jobs (moogento_sitemappro_collect_data and moogento_sitemappro_export_xml) that run on the schedule you configure. Confirm your Magento cron is active (crontab -l or check the cron_schedule table) - without cron, sitemaps are only generated manually.


Setup overview

Most setup happens in:

Stores > Configuration > Moogento > Sitemap Pro

You'll mainly work with:

  • General - master enable, logging, footer link, error notifications
  • Sitemap: Combined - single all-in-one sitemap.xml
  • Sitemap: Separated - per-type files (products, categories, CMS, images)
  • Sitemap: Splitting - URL limits per file and sitemap index
  • Sitemap: Advanced Options - priorities, lastmod strategy, cron frequency
  • Structured Data: Schema - product, category, business, and website JSON-LD
  • Canonical URL: Architecture - category and CMS canonical tag control
  • Tweaks: SEO - meta keywords removal, HTML lang attribute, nofollow rules
  • Sitemap: Management - manual regenerate and download links

Common setups

Generate your first Magento 2 XML sitemap

The fastest path to a working sitemap.xml submitted to Google Search Console.

How to set it up

  1. Go to: Stores > Configuration > Moogento > Sitemap Pro > General

  2. Set:

    • Enable: Sitemap Pro = Yes
    • Errors: Notification email = your monitoring address
  3. Go to: Stores > Configuration > Moogento > Sitemap Pro > Sitemap: Combined

  4. Set:

    • Generate: Combined sitemap = Yes
    • Include: Products = Yes
    • Include: Categories = Yes
    • Include: CMS pages = Yes
    • Include: Product images = Yes (optional but recommended)
  5. Go to: Stores > Configuration > Moogento > Sitemap Pro > Sitemap: Management

  6. Click Regenerate to produce the first file, then save the download URL shown under Downloads: Links - that is the URL to submit to Google Search Console.

Sitemap Combined config group

Notes

  • The combined sitemap writes to pub/media/sitemap/sitemap.xml by default. Verify the file exists and is publicly accessible before submitting to Search Console.
  • If you later enable splitting, the combined sitemap becomes a sitemap_index.xml referencing numbered child files.

Split a large catalog into multiple sitemap files

Stores with more than 50,000 products need splitting enabled so each file stays within Google's limit.

How to set it up

  1. Go to: Stores > Configuration > Moogento > Sitemap Pro > Sitemap: Splitting

  2. Set:

    • Enable: Splitting = Yes
    • Maximum per file: URLs = 50000 (or lower if your server has memory constraints)
    • Generate: Sitemap index = Yes
  3. Save Config and run php bin/magento cache:clean.

  4. Go to Sitemap: Management and click Regenerate.

Sitemap Splitting config group

Notes

  • With splitting enabled and "Generate: Separated sitemaps" off, Sitemap Pro produces sitemap-1.xml, sitemap-2.xml, … plus sitemap_index.xml.
  • Submit only sitemap_index.xml to Google Search Console - Google follows the index and discovers the child files automatically.

Enable Product structured data for Google Rich Results

Add price, availability, brand, and review data to product pages so Google can show rich snippets in search results.

How to set it up

  1. Go to: Stores > Configuration > Moogento > Sitemap Pro > Structured Data: Schema

  2. Set:

    • Enable: Product schema = Yes
    • Enable: Category schema = Yes (adds ItemList to category pages)
    • Enable: Business schema = Yes
    • Enable: Website schema = Yes
  3. Go to the nested Product: Information sub-group and set:

    • Brand: Attribute code = your product attribute that holds brand name (e.g. manufacturer)
    • GTIN: Attribute code = your UPC/EAN attribute if available
    • Price Valid Until: Enable fallback = Yes
    • Price Valid Until: Fallback days = 180
  4. Save Config.

Structured Data Schema config group

Notes

  • Validate output with the Google Rich Results Test after enabling.
  • Products without reviews will show a "Missing aggregateRating" informational warning in Rich Results Test - this is expected and does not prevent products from appearing in rich results. See Troubleshooting below.
  • Disable product schema here if your theme already injects its own Product JSON-LD to avoid duplicate structured data.

Add your business / Organization schema

Tell Google your brand name, address, social profiles, and contact details in structured data.

How to set it up

  1. Go to: Stores > Configuration > Moogento > Sitemap Pro > Structured Data: Schema > Business: Information

  2. Set:

    • Business: Name = your trading name
    • Business: Type = choose the closest match (Organization, Store, OnlineStore, LocalBusiness, etc.)
    • Business: Legal Name = your registered legal entity name (optional)
    • Address fields = street, city, state, postal code, country
    • Customer Service: Phone and Email = your support contact details
    • Business: Description = a short brand description (1–2 sentences)
  3. Go to: Stores > Configuration > Moogento > Sitemap Pro > Structured Data: Schema > Social: Information

  4. Add HTTPS URLs for each social profile your store uses (Facebook, Instagram, X/Twitter, etc.).

  5. Save Config.

Business Information config group

Notes

  • Fields left blank fall back to the equivalent Magento Store Information values - so you only need to fill in what differs from your Store Information.
  • Social profile URLs are emitted as sameAs links in the Organization schema node.

Features reference

Sitemap: Separated (granular files)

  • What it does: Generates individual XML files per content type - sitemap-products.xml, sitemap-categories.xml, sitemap-cmspages.xml, sitemap-images.xml, and sitemap-additional-links.xml - rather than a single combined file. Each file gets a configurable filename.
  • When to use it: Large stores where products change frequently but categories rarely; you can submit the products file to Search Console separately for faster re-indexing. Also useful when you want to audit a single content type's sitemap without parsing everything.
  • Config path: Stores > Configuration > Moogento > Sitemap Pro > Sitemap: Separated; controlled by moogento_sitemappro/splitting/granular_enable

Sitemap Separated config group


Sitemap: Advanced Options

  • What it does: Controls per-content-type priority values (0.0–1.0), the <lastmod> date strategy, batch processing size, and the cron generation frequency.

  • When to use it: When your products have old, identical updated_at timestamps from a catalog import - set lastmod strategy to Modify to spread dates across a 4–6 month window. Use Randomize for active catalogs that change daily. Leave at Off for the most honest signal.

  • Config path: Stores > Configuration > Moogento > Sitemap Pro > Sitemap: Advanced Options

    Setting Path Default
    Lastmod strategy moogento_sitemappro/advanced/lastmod_strategy Off
    Product priority moogento_sitemappro/advanced/product_priority 0.5
    Category priority moogento_sitemappro/advanced/category_priority 0.5
    CMS priority moogento_sitemappro/advanced/cms_priority 0.5
    Generation frequency moogento_sitemappro/advanced/frequency (cron)

Advanced Options config group


Canonical URL: Architecture

  • What it does: Strips query strings and fragments from category canonical URLs (preventing ?p=2&sort=price variants from competing with the clean category URL). Separately, injects a <link rel="canonical"> tag on CMS and other non-product, non-category pages that Magento leaves without one.
  • When to use it: Always recommended for category pages on stores that use layered navigation - filter URLs are a common source of duplicate content. Enable CMS canonical for stores with many CMS pages that are also accessible via query-string variants.
  • Config path: Stores > Configuration > Moogento > Sitemap Pro > Canonical URL: Architecture
    • Categories canonical: catalog/seo/category_canonical_tag (mirrors Magento's core setting; Sitemap Pro normalises the URL when enabled)
    • CMS canonical: moogento_sitemappro/canonical/enable_cms_canonical

Tweaks: SEO

Three sub-groups cover fine-grained SEO signals:

Meta Tags & HTML

  • Remove Meta Keywords (moogento_sitemappro/tweaks/remove_meta_keywords): removes <meta name="keywords"> from all pages. Recommended - major search engines ignore this tag.
  • HTML Lang Attribute (moogento_sitemappro/tweaks/html_lang_attribute): overrides the <html lang="…"> value (e.g. en-AU, fr-FR). Leave blank to use Magento's default.

Nofollow Links

  • Header login/create-account links (moogento_sitemappro/tweaks/header_auth_nofollow)
  • Review form auth links (moogento_sitemappro/tweaks/review_auth_nofollow)
  • Layered navigation filter links (moogento_sitemappro/tweaks/layered_navigation_nofollow)
  • Notify Me links (moogento_sitemappro/tweaks/notifyme_nofollow) - only applies when Moogento Notify Me is installed

Config path: Stores > Configuration > Moogento > Sitemap Pro > Tweaks: SEO


Merchant Return Policy Schema

  • What it does: Adds a MerchantReturnPolicy node to product offers and the homepage business schema - covers return window, return method, applicable country, and fees. Google uses this data for Shopping rich results.
  • When to use it: Any store that accepts returns and wants to show return policy details in product rich snippets.
  • Config path: Stores > Configuration > Moogento > Sitemap Pro > Structured Data: Schema > Merchant Return: Policy
    • Enable: moogento_sitemappro/schema/return_policy_enable
    • Policy category, days, URL, country, method, fees: all under moogento_sitemappro/schema/return_policy_*

Shipping Details Schema

  • What it does: Emits Offer.shippingDetails on product pages and optional hasShippingService on the Organization node, covering flat-rate or tiered shipping costs with handling and transit time ranges.
  • When to use it: Stores offering fixed-rate or free-shipping-threshold shipping who want Google to display shipping information alongside product prices.
  • Config path: Stores > Configuration > Moogento > Sitemap Pro > Structured Data: Schema > Shipping: Details & Policy
    • Shipping rate, currency, destination country, and handling/transit time are all configurable per store view.

Social: Information

  • What it does: Stores HTTPS URLs for BlueSky, Facebook, Instagram, LinkedIn, Pinterest, Threads, TikTok, X (Twitter), and YouTube. These are emitted as sameAs links in the Organization schema node.
  • When to use it: Whenever Business schema is enabled - social profiles strengthen the Knowledge Panel association in Google Search.
  • Config path: Stores > Configuration > Moogento > Sitemap Pro > Structured Data: Schema > Social: Information

Sitemap: Management

  • What it does: Provides a Refresh button (re-runs data collection without a full rebuild), a Regenerate button (full collect + export), and Downloads: Links showing direct URLs to every generated sitemap file.
  • When to use it: After major catalog changes, or when verifying a newly installed sitemap configuration without waiting for the next cron run.
  • Config path: Stores > Configuration > Moogento > Sitemap Pro > Sitemap: Management

Advanced configuration

Sitemap: Advanced Options - Batch size

What it does

Controls how many items Sitemap Pro loads per database query during collection (moogento_sitemappro/advanced/batch_size, default 200). Larger batches finish faster; smaller batches use less memory.

Setup

  1. Go to Stores > Configuration > Moogento > Sitemap Pro > Sitemap: Advanced Options.
  2. Set Batch: Items per batch to a value suited to your server (200–1000 is a typical safe range).
  3. Save Config.

Notes

  • Reduce batch size (to 100 or 50) if sitemap generation times out or runs out of memory on large catalogs.
  • Increasing batch size beyond 500 rarely gives measurable speed improvement unless your database server has abundant RAM.

Category Schema: Max products

What it does

Limits the number of products included in the category page ItemList schema (moogento_sitemappro/schema/category_schema_max_products, default 20). Very large categories with 100+ products in a single schema block can bloat page size significantly.

Setup

  1. Go to Stores > Configuration > Moogento > Sitemap Pro > Structured Data: Schema > Product: Information.
  2. Set Category Schema: Max products to 20 (recommended) or up to 100 for categories where complete product listing matters for SEO.
  3. Save Config and flush the full-page cache.

Notes

  • Keep at 20 for most stores. Increase only for category pages where surfacing every product in structured data has a measurable SEO impact.
  • The cap applies to the JSON-LD ItemList count; the visible product grid is not affected.

Item condition: Exclude categories from "NewCondition"

What it does

By default Sitemap Pro marks all products as NewCondition in structured data. This field lets you select categories (e.g. Clearance, Used, Refurbished) whose products should not receive the NewCondition tag.

Setup

  1. Go to Stores > Configuration > Moogento > Sitemap Pro > Structured Data: Schema > Product: Information.
  2. Under Item Condition: Excluded categories for "New", select the categories whose products should be excluded.
  3. Save Config.

Notes

  • Leave empty to treat all products as NewCondition.
  • Applies to both Product schema and Category page ItemList schema.

Tips & best practices

  • Submit sitemap_index.xml to Google Search Console, not individual child files - Google follows the index and processes children at its own pace.
  • Enable splitting even on catalogs below 50,000 URLs. The index file gives you a clean overview of sitemap health in Search Console and makes future growth painless.
  • Use the lastmod strategy = Off setting unless you have a specific reason to shift dates. Honest, accurate dates give Googlebot the most useful crawl signal.
  • Validate structured data after first enabling schema. Use Google Rich Results Test for product pages and Schema.org Validator for the home page business node.
  • Set an error notification email (moogento_sitemappro/general/error_email) so generation failures don't go unnoticed - sitemap jobs run overnight and may fail silently without this.
  • Flush the full-page cache after any schema or canonical change - structured data and canonical tags are rendered server-side and cached.
  • Enable logging (moogento_sitemappro/general/enable_logging) temporarily when troubleshooting; check var/log/moogento_sitemappro.log. Disable again once the issue is resolved to avoid large log files.
  • When adding social profiles, use the canonical HTTPS URL for each network (no www. redirect variants). Google matches sameAs values strictly.

Troubleshooting

Sitemap files are not generated after cron runs

The sitemap files are not appearing in pub/media/sitemap/ even though the cron frequency is set.

  • Cause: Cron is not running, or the pub/media/sitemap directory is not writable.
  • Check: Run php bin/magento cron:run --group=index manually, then inspect var/log/moogento_sitemappro.log. Also verify ls -la pub/media/sitemap/ shows write permissions for the web server user.
  • Resolution: Ensure the Magento cron service is active on your server. Run chmod 775 pub/media/sitemap and confirm ownership matches the PHP process user. To generate immediately without waiting for cron, use the Regenerate button in Stores > Configuration > Moogento > Sitemap Pro > Sitemap: Management, or run bin/magento moogento:sitemappro:generate.

Product URLs are missing from the sitemap

Products you know are visible on the storefront do not appear in the generated sitemap.

  • Cause: The products may be in a disabled status, have visibility set to "Not Visible Individually", or fall under an excluded category.
  • Check: In Catalog > Products, check the status and visibility of a missing product. Also verify that the relevant content type toggle (Include: Products) is enabled in the Combined or Separated config group.
  • Resolution: Set product status to Enabled and visibility to "Catalog, Search" or "Catalog". If the product is in a category excluded from the catalog, reassign or review category assignments. Regenerate the sitemap after changes.

aggregateRating warning in Rich Results Test

Google's Rich Results Test or Search Console shows a warning about missing aggregateRating on product pages.

  • Cause: Products without customer reviews have no review data. The module correctly omits aggregateRating and review nodes for unreviewed products - adding placeholder ratings violates Google's guidelines.
  • Check: This warning is informational only. Products with offers data (price + currency) are already eligible for rich results even without aggregateRating. Confirm this by checking whether the test shows "Valid item detected" or only warnings.
  • Resolution: No configuration change needed. The warning disappears automatically once products receive approved customer reviews with star ratings. Encourage customers to leave reviews - the module picks up new ratings on the next page load.

Structured data not appearing on storefront pages

No JSON-LD blocks appear in the page source for product or category pages.

  • Cause: Product or category schema is disabled, the module is disabled, or the full-page cache is serving a stale version of the page.
  • Check: Confirm "Enable: Sitemap Pro" is Yes in General and the relevant schema toggles are Yes in Structured Data: Schema. View the page source (not browser DevTools) to see the raw HTML including cached content.
  • Resolution: Go to System > Cache Management and flush Full Page Cache. If schema still does not appear, run php bin/magento setup:di:compile and php bin/magento cache:clean.

Category canonical URLs still include query strings

Category canonical tags still show ?cat=3 or pagination parameters despite canonical normalisation being enabled.

  • Cause: Magento's core "Use Canonical Link Meta Tag for Categories" setting (catalog/seo/category_canonical_tag) may be disabled. Sitemap Pro's normalisation plugin only activates when the core canonical tag is enabled.
  • Check: Go to Stores > Configuration > Catalog > Catalog > Search Engine Optimization and verify "Use Canonical Link Meta Tag for Categories" is set to Yes. The mirror of this setting is also visible at Stores > Configuration > Moogento > Sitemap Pro > Canonical URL: Architecture.
  • Resolution: Enable the core setting, save, and flush the cache. Sitemap Pro's plugin will then strip query strings from the canonical URL Magento produces.

FAQs

How do I submit my Magento 2 sitemap to Google Search Console?

Generate your sitemap using Sitemap Pro, then copy the URL shown under Stores > Configuration > Moogento > Sitemap Pro > Sitemap: Management > Downloads: Links - for most stores this is https://yourstore.com/pub/media/sitemap/sitemap_index.xml. Submit that URL in Google Search Console under Sitemaps. If you have splitting enabled, submit the index file only; Google follows it to the child files automatically.

Why are my products not appearing in the XML sitemap?

Products are excluded from the sitemap when their status is Disabled, their visibility is set to "Not Visible Individually", or the "Include: Products" toggle is off in the Combined or Separated config group. Check the product's status and visibility in Catalog > Products, ensure the toggle is Yes, then click Regenerate in Sitemap Management.

How do I stop all my sitemap URLs from having the same lastmod date?

Set Lastmod Strategy to Randomize (spreads dates across the last 7 days) or Modify (shifts dates into a 4–6 month window) in Stores > Configuration > Moogento > Sitemap Pro > Sitemap: Advanced Options. The Modify option is best for stores that imported their catalog and have identical updated_at timestamps across every product.

Does Sitemap Pro work with Hyvä, Luma, and Porto themes?

Yes. Sitemap Pro's structured data and canonical URL features are injected server-side via Magento layout and observer hooks, so they work with Luma, Porto, and Hyvä themes without any theme customisation.

What happens if I disable Sitemap Pro?

Disabling the module removes all Sitemap Pro enhancements: XML sitemap generation reverts to Magento's built-in sitemap (if configured), JSON-LD structured data blocks are no longer emitted on product and category pages, canonical tag normalisation stops, and nofollow rules are removed from storefront HTML. The previously generated sitemap XML files remain on disk but are no longer updated.

Does Sitemap Pro support multi-store / multi-website setups?

Yes. The module is fully multi-store aware. Sitemap generation and all schema settings are configurable per store view. Run bin/magento moogento:sitemappro:generate -s {store-id} to generate for a specific store, or let cron handle all stores on the configured schedule.

How do I add my store address and social profiles to Google's Knowledge Panel?

Enable Business schema in Stores > Configuration > Moogento > Sitemap Pro > Structured Data: Schema, then fill in the Business: Information and Social: Information sub-groups. Sitemap Pro emits an Organization or LocalBusiness JSON-LD block on the home page; Google uses this data to populate Knowledge Panel entries. See Add your business / Organization schema above for the full setup steps.

How often does Sitemap Pro regenerate sitemaps?

Regeneration runs on the cron schedule you configure in Sitemap: Advanced Options > Generation: Frequency (Daily, Weekly, or Monthly). You can also trigger an immediate regeneration at any time from the Sitemap: Management section. The moogento_sitemappro_collect_data and moogento_sitemappro_export_xml cron jobs both use this expression.

What is the difference between the Combined and Separated sitemap modes?

Combined produces a single sitemap.xml (or split numbered files) containing all content types. Separated produces individual files per content type (sitemap-products.xml, sitemap-categories.xml, etc.), which you configure independently under Sitemap: Separated. Both modes support splitting and custom filenames. Use Separated when you want to submit different content types to Search Console independently or audit each type in isolation.

How much does Sitemap Pro cost / which plan do I need?

Sitemap Pro is a paid plugin available from moogento.com. A valid license key (entered in Stores > Configuration > Moogento > Licenses) is required for all features including CLI commands. Visit moogento.com for current pricing and plan details.


  • Notify Me - Sitemap Pro can add rel="nofollow" to Notify Me buttons and links when both modules are installed; configure this under Tweaks: SEO > Nofollow Links.

Need help?

  • moo@moogento.com
  • Include:
    • Magento version
    • Module name
    • What you're trying to do

Was this helpful?

Need source? Raw markdown is available for AI agents, plain-text copying, and diffs.

Raw markdown