XML Sitemaps
SCS does not generate, write, or upload sitemap XML. The site's SEO plugin owns the sitemap. On the reference stack that plugin is SEOPress, which generates and serves the sitemap automatically. There is no build or export step after publishing.
Who creates the XML file
| Site stack | Sitemap owner | Index URL |
|---|---|---|
| WordPress + SEOPress | SEOPress (XML sitemaps are in the free plugin; video and Google News sitemaps are PRO) | /sitemaps.xml |
| WordPress, no SEO plugin | WordPress core (5.5+) | /wp-sitemap.xml |
| Static site (Cloudflare Pages, Docusaurus) | the build pipeline | whatever the generator emits |
When SEOPress is active it disables the WordPress core sitemap so the site does not advertise two competing sitemaps.
What SEOPress creates automatically
- An index at
/sitemaps.xmlwith child sitemaps per post type and taxonomy, for examplepost-sitemap1.xml,page-sitemap1.xml, andcategory-sitemap1.xml. - Paginated children when a type exceeds the per-file limit.
- Published posts and pages only. Drafts, pending, private, and password-protected posts are never listed.
- Automatic exclusion of
noindexposts, and of posts whose canonical differs from their permalink, to follow Google's sitemap guidelines. - Optional image and author sitemaps; video and Google News sitemaps are PRO features.
- An XSL stylesheet (
/sitemaps_xsl.xsl) so the XML is readable in a browser.
The XML is produced on request, not stored as a file on disk. A post appears
as soon as its post_status is publish and it is indexable.
/sitemap.xml (singular) is not the SEOPress path. SEOPress serves
/sitemaps.xml and redirects /sitemap.xml to it. Do not hardcode either name in
automation — discover the URL from robots.txt or from the plugin settings.
Where it fits in the workflow
SCS publishes drafts (scs publish), so nothing enters the sitemap at that
step. That is correct behaviour, not a bug.
Draft (no sitemap entry)
→ WordPress review
→ publish through the approved workflow
→ sitemap lists the permalink
→ Google crawls when it chooses
→ Search Console reports the result
Publishing is what puts a URL into the sitemap. SCS does not ping Google or Bing, and Google retired its sitemap ping endpoint in 2023 — a sitemap update is a discovery hint, not a notification. See Performance Tracking.
Verify after publishing
These checks are read-only. Run them from the server, or from any host that can reach the site.
# 1. Is the sitemap reachable, and is it XML?
curl -sSI https://example.com/sitemaps.xml | grep -iE 'HTTP/|content-type|x-robots'
# 2. Is it an index, and which children exist?
curl -sS https://example.com/sitemaps.xml
# 3. Is the published permalink listed?
curl -sS https://example.com/post-sitemap1.xml | grep -F 'https://example.com/your-post/'
# 4. Does robots.txt advertise the sitemap?
curl -sS https://example.com/robots.txt
# 5. Which sitemap settings did WordPress register?
wp option get seopress_xml_sitemap_option_name --format=json
Expected: HTTP 200, content-type: text/xml, an index that lists the child
sitemaps, your permalink present, and a Sitemap: line in robots.txt.
Enable the SEOPress option that adds the sitemap to robots.txt
(SEO → XML / HTML Sitemap → General). Discovery then works even when nobody
submitted the sitemap in Search Console.
What blocks a sitemap
| Symptom | Likely cause | Fix |
|---|---|---|
| 200, but a post is missing | post is noindex, or its canonical differs from the permalink | clear noindex / custom canonical in SEOPress |
| 404 | permalinks not flushed, or missing NGINX rewrite rules | wp rewrite flush --hard; add the SEOPress NGINX rules |
| HTML instead of XML | page cache or CDN serving a cached HTML page | exclude *.xml and *.xsl from cache and CDN |
| 302 to a login page | Cloudflare Access, HTTP auth, or password protection in front of the site | bypass verified bots, or remove the gate for public content |
| Empty sitemap | feature disabled, or no qualifying published content | enable the XML sitemap in SEOPress |
| Sitemap fine but nothing ranks | site-wide noindex or crawling blocked | check the WordPress privacy setting and any bot rules |
A reachable sitemap is not proof that Google can read the site. A bot gate such as Cloudflare Access in front of the domain redirects every crawler that is not explicitly bypassed, and Google treats that as unreachable. Test the public URL without a logged-in session before assuming the sitemap is being used.
Scope
- SCS does not create, write, or upload sitemap XML.
- SCS does not ping Google or Bing.
- SCS publishing creates drafts only; sitemap entries follow the publish transition.
- Indexing status stays manual today: record findings in
publishing.index_status, and record search performance in the workspace performance CSV.