Tutorial · technical-seo · Published 2026-08-16 · 3 min read
Setting up IndexNow for instant URL notifications
Set up IndexNow: create and host a key file, submit single URLs or batches to the endpoint, and verify with a 200 response.
What IndexNow is
IndexNow is a ping protocol for telling search engines that a URL has been added, updated, or removed, so they can re-crawl it soon rather than waiting days or weeks. In its simplest form it is a single HTTP request, and it complements rather than replaces a sitemap. The protocol lets you send a URL list to a participating engine's endpoint, which then treats those URLs as priority for crawling.
The engines that participate include Bing, and the shared IndexNow endpoint forwards each submission to the engines that accept the protocol. Google is not an IndexNow participant, so IndexNow does not change Google's crawl scheduling; use request indexing for the Google side.
Add your key
IndexNow requires you to prove you control the host before you can notify on its behalf. The proof is a key file:
- Create an alphanumeric key of 8 to 128 characters. Most implementations ship a 32-character key.
- Place the key in a plain text file at the top of your domain, with no HTML and no formatting, at
https://your-domain.com/{your-key}.txt. - The receiving engine fetches that file to confirm two things: you control the domain, and the URLs you submit sit under it.
You can also host the key file in a non-root location, as long as you compute its exact URL and send it as the keyLocation parameter with your submissions. Only share the key with the engines, rotate it whenever a stale one needs revoking, and keep the URL submissions scoped to the host the key file belongs to.
Submit a URL
For a single URL change, issue a GET request to an IndexNow endpoint:
https://api.indexnow.org/indexnow?url=https://www.example.com/page&key={your-key}
For a batch, use the API's POST endpoint with a JSON body:
{
"host": "www.example.com",
"key": "your-key",
"keyLocation": "https://www.example.com/your-key.txt",
"urlList": [
"https://www.example.com/page1",
"https://www.example.com/page2"
]
}
The receiving engine returns a status code; a 200 means it accepted the submission. It does not guarantee the crawl completed, just that the engine picked up the URLs. Do not re-send the same URL on a loop when a page changes, because repeated identical submissions are throttled.
Run it from a plugin or a build step
The protocol is simple enough to add to an existing deployment. A publishing hook that runs after content changes can call the endpoint from a script, and popular CMS plugins already include key generation and the ping inside the workflow, so a site on WordPress or Shopify can enable it from the dashboard without writing code.
Part of a deploy script:
curl -I "https://api.indexnow.org/indexnow?url=${PAGE_URL}&key=${KEY}"
Submitting a URL list when you change many pages at once is preferable to a slow trickle of pings. Set the urlList to the changed set, keep removed pages out of it, and call the endpoint after the page itself is live, never before, so the engine does not fetch an unfinished page.
Check the effect
Because IndexNow is not a Search Console feature, the acceptance check is the 200 response, and the follow-up signal appears later in Bing Webmaster Tools. After a few submissions, look at Bing's crawl and index activity for the submitted URLs to confirm the pings produced a re-crawl. The search term coverage article shows how to keep the query view correct on the Bing side as well, since the two consoles report the same traffic differently.
Prevention
Keep the key file static, always publish after the page changes, never re-ping the same URL aggressively, and pair IndexNow with an accurate sitemap so the shared engine endpoints keep a full picture of your site.