IndexNow on WordPress: What It Speeds Up, What It Can't, and How to Tell It's Working
IndexNow reaches Bing, Yandex, Naver, Seznam and Yep, not Google. How the key and submissions work, what a 200 does and does not mean, and the WordPress pitfalls that break it.
In this article 8 sections
IndexNow lets your WordPress site tell Bing, Yandex, Naver, Seznam.cz and Yep that a page changed, the moment it changes, instead of waiting for their crawlers to notice. It does nothing for Google, it does not get anything indexed by itself, and on a site that publishes once a month the difference is hard to see. Where it earns its keep is on sites whose pages change often and where a stale result costs something: a sold-out product still listed as in stock, an event that moved, a job that was filled, a page you deleted that still shows up in search.
This post is about what actually happens when a WordPress site uses IndexNow, so you can decide whether to switch it on and recognise when it is broken.
The mechanism, step by step
A site needs to prove two things to use IndexNow: that it controls the domain, and that the URLs it sends belong to that domain.
The first is done with a key. The site picks a random string of 8 to 128 letters, digits and dashes and serves it as a UTF-8 text file, normally at the root: https://example.com/a1b2c3d4e5f6.txt, containing only a1b2c3d4e5f6. Nobody registers the key anywhere in advance. When an engine receives a submission carrying that key, it fetches the file from your host; if the file exists and contains the key, the submission is yours.
The second is a rule of the protocol: every URL in a submission must be on the host the key file lives on. A key file at example.com cannot vouch for shop.example.com or www.example.com.
The submission itself is a JSON POST, one request carrying up to 10,000 URLs:
{
"host": "example.com",
"key": "a1b2c3d4e5f6",
"keyLocation": "https://example.com/a1b2c3d4e5f6.txt",
"urlList": [
"https://example.com/spring-menu/",
"https://example.com/events/tasting-night/"
]
}
It can go to any participating engine's endpoint or to the shared one at api.indexnow.org. Engines that join IndexNow agree to pass every submission on to the others, so one request is enough.
Which engines it reaches
indexnow.org lists Microsoft Bing, Naver, Seznam.cz, Yandex and Yep as supporting the protocol. Its machine-readable list of endpoints also includes the Internet Archive and Amazon's crawler, which are not search engines in the usual sense but do receive the notifications.
Google is not among them. Its documentation for getting pages recrawled names two tools, the URL Inspection tool for a handful of URLs and a sitemap for many, and says nothing of IndexNow. So for Google nothing changes: keep your sitemap accurate and submitted in Search Console.
Whether that coverage matters depends on where your readers are. Bing has its own audience and its index is used by other products; Naver is the major engine in South Korea, Seznam in the Czech Republic and Yandex in Russian-speaking markets. A local business in Brno has more reason to care than a hobby blog read mostly through Google.
What "submitted" does and does not mean
A submission is a request to look, not an instruction to index. Every party says so: indexnow.org states that submitting a URL does not guarantee immediate indexing, and Bing says the same of its own endpoint.
In practice, three things still have to go right after a successful submission:
- The engine has to decide the URL is worth a crawl. A notification raises its priority; it does not override the engine's judgement or its crawl budget for your site.
- The crawl has to succeed. A page blocked in robots.txt, behind a login, or returning an error is not fetched no matter how promptly it was announced.
- The engine has to decide the page belongs in its index. Thin, duplicate or noindexed pages are crawled and then left out, the same as without IndexNow.
That is why it pays to send only pages you want indexed. A plugin that announces every revision of every post, including noindexed ones, spends your goodwill with the engines on pages they will discard.
Deletions are the underrated use
Most writing about IndexNow is about new pages. The protocol is just as useful when a page goes away. Submit the URL of a page you have deleted or unpublished, and the engine recrawls it, gets a 404 or 410, and drops the result instead of sending visitors to a dead page for days or weeks. For stores and listing sites that remove pages constantly, that is the more valuable half.
How to tell it is working
Work from your site outwards.
The key file loads. Open it in a private window. It should return the key as plain text, with a 200 status, not your theme's 404 page, a login form or a security plugin's challenge. A firewall that blocks unknown .txt requests, or a page cache that stored a 404 from before the file existed, are the common reasons it does not.
The responses are 200 or 202. IndexNow answers every submission with a status code, and the codes are specific. 202 means received but the key is still being checked, which is normal for the first submissions with a new key. 403 means the engine could not confirm the key: the file is missing or holds something else. 422 means a URL in the list is not on the key's host, or the key itself is malformed. 429 means too many requests, which the protocol treats as possible spam. 400 means the request itself was malformed. If your tool keeps a submission history, those codes tell you what to fix without guessing.
Bing shows the URLs. Bing Webmaster Tools has an IndexNow section that reports the URLs Bing received through the protocol, with their crawl and index status. If you verify the site there, it is the only place to see the other end of the pipe. Allow some delay between submitting and seeing a URL listed.
Logs show the crawl. If you have server logs, look for Bingbot requesting the URLs you submitted. A visit soon after a submission is the clearest sign that the notification had an effect.
The WordPress-specific pitfalls
Staging copies that announce themselves. A staging site cloned from production carries the same IndexNow setup. If it sends, it either announces staging URLs to the world or announces production URLs with a key production does not serve. Any IndexNow tool on WordPress should check wp_get_environment_type() and stay quiet outside production, and your staging site should actually declare itself as staging.
WP-Cron that never runs. Sending in the background is the right design, since nobody wants the Update button to wait on a remote request. But WordPress's scheduler only fires when someone visits the site, or when a real cron job calls it. A site with DISABLE_WP_CRON set and no system cron replacing it will queue submissions forever.
www and the bare domain. If the WordPress Address setting says https://example.com but visitors are redirected to https://www.example.com, the URLs your site submits and the host the key is served from can disagree, which produces 422 responses. Make the two settings match the address visitors actually end up on.
Two tools sending at once. A CDN feature, a hosting panel and a plugin can all be configured to send IndexNow notifications. Bing advises checking whether your CMS, CDN or a plugin already submits before adding another sender. Pick one.
Doing it with Hydrogen SEO
From version 0.0.27, Hydrogen SEO has an Instant Indexing screen under Settings. It is off by default. Switch it on and it creates the key, serves the key file, and submits the URLs of selected post types when they are published, updated while published, or unpublished, trashed or deleted. It only announces posts that are indexable or just stopped being, so noindexed, password-protected and canonicalised posts send nothing, sends the queue in the background as one request about 30 seconds after a change, only sends on production, retries sends that hit a timeout, a 429 or a server error about 10 minutes later (up to three attempts), keeps the last 50 responses explained, checks its own key file, and has a box for submitting URLs by hand. It is free and needs no account. Setup and the response table are in the Instant Indexing guide; the rest of the release is in the 0.0.27 notes.
Should you switch it on?
Yes if your pages change daily, if you remove pages often, or if Bing, Naver, Seznam or Yandex send you meaningful traffic. It costs nothing and the failure modes are visible.
It is optional if you publish a few posts a month and almost all your search traffic comes from Google. Nothing breaks either way. Just do not expect it to fix an indexing problem with Google, because Google never receives the message.