Sitemap lastmod: Why Google Stopped Downloading Ours for Two Months

Google does not promise to read your sitemap. It proved that to us with two

months of silence: our sitemap said lastmod August 16, and Search Console

still showed "last downloaded July 3". Every page we shipped in that window

was invisible to the crawler, and nothing anywhere raised an alarm.

If you publish regularly and your index coverage is frozen, check the

"last downloaded" timestamp before anything else. It is the cheapest

diagnostic in all of technical SEO, and it explains stale coverage more

often than robots rules or canonicals do.

What the timestamps told us

The Search Console sitemaps report shows two dates: last submitted and last

downloaded. Ours read submitted July 2, downloaded July 3. The sitemap file

itself carried a lastmod of August 16, because our build regenerates it on

every deploy.

Google had simply opted out. A sitemap is a discovery hint, not a contract.

With no external links pointing at the new pages and no manual actions,

Google's scheduler had no reason to spend crawl budget re-fetching a file

it already had.

The dead end most guides still recommend

Search for "resubmit sitemap" and half the results tell you to ping Google:

https://www.google.com/ping?sitemap=https://example.com/sitemap.xml

That endpoint is retired. It returns an error page. If your resubmission

playbook starts with the ping URL, your playbook has a dead first step and

you may not have noticed, because nothing fails loudly. You visit the URL,

see a page, and move on assuming it worked.

The fix that took eight seconds

Search Console has an API. The sitemaps endpoint accepts a PUT:

PUT /webmasters/v3/sites/{siteUrl}/sitemaps/{feedpath}

Authentication needs a service account with the webmasters scope, added as a

user on the Search Console property. The call is one line with the API

client libraries, or a signed JWT and a fetch if you have no dependencies.

We ran it once. Submitted 06:48:04. Downloaded 06:48:11. Eight seconds

after two months of nothing.

That speed is the information worth keeping: the ping-style mental model of

"wait for the crawler to notice" is wrong for resubmission. A PUT goes into

the scheduler's queue directly, and the fetch happens in seconds.

What resubmission does and does not do

Be precise about the mechanism, because the misconceptions are expensive:

  • Resubmitting queues a fresh download of the sitemap file. That is all.
  • It does not queue the URLs inside the sitemap for crawling. Google still

decides per URL whether and when to fetch it.

  • It does not reset any penalty or reprocess any indexing decision.

For us, the resubmission restored discovery. Pages that had never been

crawled started appearing in inspections with fresh crawl dates. Pages

already sitting in "crawled, currently not indexed" stayed exactly where

they were. The sitemap got us back into the queue, not into the index.

lastmod discipline matters now

Google states that it uses lastmod when the values are credible. That cuts

both ways:

1. If your build writes today's date into every URL on every deploy, Google

learns the field is noise and ignores it. We stamp lastmod only when a

page's content actually changes.

2. If lastmod is honest, a re-download can prioritize genuinely changed

URLs for crawling.

An honest lastmod plus an API resubmission is a real workflow. An

everything-changed lastmod plus a dead ping URL is theater.

The check to run monthly

Run this against your own property before you trust your publishing loop:

1. Read the sitemaps report in Search Console, or query the API endpoint.

2. Compare lastDownloaded against your most recent deploy date.

3. If the gap exceeds a week, resubmit through the API or the UI button.

4. Confirm the new download timestamp lands within a minute.

5. If it does not, the problem is fetchability, not scheduling: fetch the

sitemap URL yourself, check for redirects, and confirm it returns 200

with no authentication wall.

Do not stack resubmissions. One PUT per genuine change window is plenty.

Repeated pings on an unchanged file train the scheduler to trust you less.

What we changed permanently

The resubmission now runs from the deploy pipeline. Every time the build

produces a sitemap with new lastmod values, the pipeline calls the API once.

No human remembers to press the button, and the two-month silent gap cannot

recur.

We also added the sitemap report to a weekly automated check: submitted

date, downloaded date, warning and error counts, straight into a log file.

Silence was the real failure mode here. The timestamps were always there,

telling us exactly what was wrong.

---

Has your sitemap gone stale without you noticing? Check the last downloaded

date now and leave the gap you find. If you want the endpoint reference for

automating this, our robots.txt and sitemap guide covers the API call in

detail: https://webrecast.com/en/guides