---
title: "Sitemaps & URL discovery — warmup.rocks Docs"
description: "How warmup.rocks discovers the URLs to warm: sitemap indexes, automatic re-discovery, extra URLs and per-plan URL limits."
canonical: https://warmup.rocks/docs/sitemaps
---

# Sitemaps & URL discovery

Your sitemap is the single source of truth for what gets warmed. Add one URL, and the warming list keeps itself up to date.

## Adding a sitemap

In your project settings, paste the URL of your sitemap — for most sites that's `https://example.com/sitemap.xml`. Both plain sitemaps and **sitemap indexes** work: if the URL points to an index, we fetch every child sitemap recursively and collect all page URLs.

```
<!-- Both of these work: -->
https://example.com/sitemap.xml
https://example.com/sitemap-index.xml
```

## Automatic re-discovery

Before every scheduled run, the sitemap is fetched again. That means:

-   **New pages** you publish are picked up automatically — no manual step.
-   **Removed pages** disappear from the warming list, so we never keep hammering deleted URLs.
-   Discovery requests identify themselves with the [WarmupRocks user agent](https://warmup.rocks/docs/user-agent) plus a `sitemap discovery` marker.

## Extra URLs

Some URLs belong in the cache but not in a sitemap — critical CSS/JS bundles, API endpoints that return cacheable JSON, or a search page. Add them as **extra URLs** in the project settings; they're warmed alongside the sitemap URLs but never touch your public sitemap.

**Keep your sitemap clean.** A sitemap is for pages you want indexed by search engines. Don't add assets to it just to get them warmed — that's what extra URLs are for.

## URL limits per plan

| Plan | URLs per run |
| --- | --- |
| Pebble | 500 |
| Boulder | 2,500 |
| Summit | 10,000 |

If your sitemap contains more URLs than your plan allows, we warm the first N in sitemap order. Sitemaps usually list important pages first, so priority follows your own ordering.

## Troubleshooting

-   **HTTP 404 on discovery** — double-check the sitemap URL in a browser. A common mix-up: the file is `sitemap.xml`, not `sitemap-index.xml` (or vice versa).
-   **Empty URL list** — some sitemap plugins render the XML with JavaScript or behind a redirect chain. The sitemap must be plain XML at a stable URL.
-   **Blocked by WAF** — allow the WarmupRocks user agent or configure a secret header. See [Analytics & WAF filtering](https://warmup.rocks/docs/analytics-waf).
