Skip to content

Add a sitemap

Log Hero reads your logs, so it knows what bots requested. It does not know what you wanted them to request. Your sitemap supplies that second list. Log Hero stores it as an inventory of advertised URLs and matches it against the hits.

The inventory unlocks three things:

  • The whole Coverage report. Crawl ratio, per-file coverage, the reach curve and both gap lists need it.
  • The Sitemap coverage tile on Crawl Budget & Waste.
  • Advertised pages AI has read on AI Visibility.

The inventory is a snapshot, not a live fetch. Log Hero reads the stored copy every time, and every panel prints the date it was taken.

Time: about 5 minutes · You need: Log Hero active on the domain, and your sitemap file or its URL

Make sure that you have:

  • Log Hero active on the domain. The Sitemap tab does not exist until then. If Log Hero is not set up, do the Quickstart first.
  • The sitemap file, or the address it is served at. Accepted formats are below.
  1. Open your project in Keyword Hero.
  2. Go to Project settings ▸ Sitemap.

The direct address is /projects/<idx>/project-settings?tab=sitemap.

A project holds one sitemap configuration. It is either a URL or an upload, never both. Saving one clears the other.

Upload is the reliable path today. Read the caution under step 3 before you choose the URL instead.

  1. Under Source, choose Upload a file.
  2. Choose Choose file and select your sitemap.
  3. Choose Upload.

What the upload accepts:

  • A sitemap XML file with a <urlset> root.
  • A plain-text URL list, one http:// or https:// address per line. Lines that start with # are ignored.
  • A gzip, zlib or brotli compressed copy of either. Log Hero detects the compression from the file itself.
  • Up to 50 MB. The file picker states .xml, .xml.gz or .txt — up to 50 MB.

A sitemap index file is rejected. Log Hero answers with this is a sitemap index — upload the individual sitemap files, or enter the index URL instead. Upload a child sitemap file instead of the index.

  1. Under Source, choose Sitemap URL(s).
  2. Choose Detect to look for a sitemap, or type the addresses yourself.
  3. Type one address per line under Sitemap URLs — one per line.
  4. Choose Fetch now.

Detect reads Sitemap: lines in your robots.txt and probes the usual sitemap locations. It never runs on its own.

A fetch follows sitemap index files down to the child sitemaps. It stops at these caps:

Cap Value
Sitemap files per fetch 50, over the whole index tree
Size per file 20 MB after decompression
URLs per snapshot 500 000
Total time for the fetch 40 seconds
Redirects per file 3
Distinct hostnames per fetch 5
Index nesting depth 10

One fetch per 10 minutes. A second attempt inside that window is refused with Please wait {n} more minute(s) before fetching again. Upload is exempt from the rate limit, on purpose, so that it works while a fetch is blocked.

  1. Read the headline on the Sitemap tab. It reads {N} URLs · {M} file(s) · last fetched {date} · {status}.
  2. Make sure that the URL count is close to the number of pages you advertise.
  3. Open the Coverage report.
  4. Make sure that the panel header names an inventory: Inventory from {date} · {N} URLs · {fetched|uploaded} · Manage.

Two things to read carefully:

  • The Dropped column. The files table has File, URLs, Dropped and Status columns. Log Hero drops a URL whose hostname is not one of the project’s hosts, and counts it here. It prints no other warning.
  • The suspicious-count guard. If a new snapshot has less than half the URLs of the last one, Log Hero keeps the old inventory and says Latest fetch found {N} URLs (previous {M}). Kept the previous inventory. If the drop is real, choose Use the new one anyway.

Log Hero normalises every advertised URL before it stores it, and normalises the log path the same way at query time.

  • The hostname is lowercased.
  • One leading www. is removed.
  • The protocol is dropped, so http:// and https:// collapse together.
  • The port is dropped.
  • The query string and the fragment are removed.
  • Trailing slashes are removed. The bare root stays /.
  • Path case and percent-encoding are kept as they are.

Because the sitemap side loses the query string and the log side keeps it, advertised counts and raw path counts never add up. The reports say so where it matters.

From <lastmod> Log Hero keeps the date only. 2026-08-01T10:00:00+00:00 becomes 2026-08-01. A value that is not a real date is stored as empty.

  • Nothing re-fetches on its own. There is no schedule and no background job. Every snapshot comes from Fetch now, Upload or Use the new one anyway.
  • Every report reads the current snapshot only. Older snapshots are kept but no panel shows them.
  • A snapshot is stored for 180 days.

Re-upload the sitemap after a large change to the site: a migration, a new section, or a bulk removal of pages. Otherwise Coverage compares today’s crawl against yesterday’s site.

Work through Sitemap fetch failed. It lists every failure message with its cause and its fix.