Discovery
MEDIUMSitemap resolvable and includes at least one product URL
An XML sitemap is reachable and includes at least one product-shaped URL. A sitemap that omits product URLs forces every crawler into slower, less complete frontier discovery.
What this check looks for
We resolve the XML sitemap (or sitemap index) declared in robots.txt — or fall back to `/sitemap.xml` — and classify each `<loc>` entry against a set of product-URL patterns (`/products/...`, `/product/...`, `/p/<id>`, etc.). v2 drops the legacy ≥10 product threshold: a single product URL is enough to confirm the sitemap covers products. We surface the product-URL coverage percentage as evidence so the merchant can see how much of their catalog is actually discoverable.
Which AI surfaces it affects
- Google AI Mode (UCP)80
- Microsoft Copilot70
- ChatGPT (ACP)30
- Perplexity30
- Meta AI30
Weighted against the live specs — ACP 2026-04-17, UCP 2026-04-08.
How to fix it
Publish a sitemap containing product URLs
Shopify
A few minutes- Shopify auto-generates `/sitemap.xml` (an index) plus per-section sitemaps including `/sitemap_products_*.xml`.
- If product URLs are missing, confirm the products are published (Online Store sales channel) and SEO-visible.
BigCommerce
A few minutes- BigCommerce auto-generates `/xmlsitemap.php` containing product URLs.
- Storefront → SEO → confirm `Include in store sitemap` is enabled for products.
WooCommerce
A few minutes- Install Yoast SEO or Rank Math. Both publish an XML sitemap including products at `/sitemap_index.xml`.
- Yoast: SEO → Settings → APIs → XML sitemaps → ON.
Custom / headless
Developer- Generate a sitemap that lists every product URL.
- Place it at `/sitemap.xml` and reference it from `robots.txt`.
// Example sitemap generator (run on build or cron)
import { writeFile } from "node:fs/promises";
async function generateSitemap(products: { handle: string; updatedAt: string }[]) {
const urls = products.map(p => `
<url>
<loc>https://yourdomain.com/products/${p.handle}</loc>
<lastmod>${p.updatedAt}</lastmod>
</url>`).join("");
const xml = `<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">${urls}
</urlset>`;
await writeFile("public/sitemap.xml", xml);
}The spec it's pinned to
sitemaps.org — XML sitemap format
The sitemaps.org protocol defines the XML sitemap format crawlers consume to enumerate a site's URLs. A sitemap that omits product URLs forces crawlers into frontier discovery, which on JS-heavy stores misses the long tail.
Does your store pass this check?
Run the full audit — 82 checks across five AI shopping surfaces. Most tools only check whether you get mentioned; we check whether an agent can buy from you.