---
title: "IndexNow Setup: Tell Search Engines the Day You Publish"
slug: indexnow-setup-for-ai-search
published: 2026-10-30T08:11:53.21436+00:00
updated: 2026-10-30T08:11:53.21436+00:00
author: "M Asif Rahman"
author_url: https://ar.bd
category: "AI Readiness"
tags: check:D2, IndexNow, Bing, sitemap, Crawler Hints, ThinkRank, AI readiness
description: "Set up IndexNow with a key file, curl, ThinkRank, a deploy hook or Cloudflare. We tested the endpoints: a fake key still got 202, so a ping is not proof."
url: https://aiscan.site/blog/indexnow-setup-for-ai-search
---

IndexNow lets you tell Bing, Yandex, Naver, Seznam, Yep and Amazon about a new or changed URL the moment it exists, with one HTTP request and one key file on your own domain. It does not reach Google, and an HTTP 200 or 202 from it is a receipt, not a sign that the page is indexed. On 30 October 2026 On 30 October 2026 we sent five requests to the IndexNow endpoints with a key that had no file behind it. Three came back 202 "accepted", which is the response a working setup gets too.

## Quick summary

| If you want to… | Do this | Time | Catch |
|---|---|---|---|
| Set it up by hand | Host `{key}.txt` at the site root, then POST a URL list to `api.indexnow.org/indexnow` | 10 min | A 202 is returned even when the key file is missing |
| Set it up on WordPress | Turn on Instant Indexing in [ThinkRank](https://thinkrank.ai/docs/sitemaps-crawling/) | 5 min | Check the key file URL loads afterwards |
| Set it up on a static host | Add one `curl` POST to the deploy step | 15 min | Submit only the URLs that changed |
| Set it up on Cloudflare | Enable Crawler Hints | 2 min | It reports pages that missed the cache, not pages you chose |
| Confirm it | `npx aiscan-cli yoursite.com`, then open the key file and read the response code | 3 min | AIScan check D2 grades your XML sitemap, not IndexNow |

**Short answer.** Create a key, host it at `https://yoursite.com/{key}.txt`, and POST changed URLs to `https://api.indexnow.org/indexnow` on publish and update. Treat the response as delivery only. To learn whether a page is indexed, look at Bing Webmaster Tools or Search Console.

## What IndexNow does and does not do

IndexNow is a protocol from Microsoft Bing and Yandex. A site pings an endpoint when a URL is added, updated or deleted, and [the IndexNow documentation](https://www.indexnow.org/documentation) says participating engines share every submission with each other, so one ping is enough. The [IndexNow FAQ](https://www.indexnow.org/faq) lists these endpoints on 30 October 2026: the global one, Amazon, Bing, Naver, Seznam.cz, Yandex and Yep. Google is not on that list.

Two limits matter for anyone chasing AI search visibility:

- **It is a hint.** The FAQ says a submission does not guarantee indexing. Each engine decides whether to crawl based on its own quota and quality signals.
- **It is only as reliable as the engine behind it.** If an AI assistant's answers come from an engine on the list, a faster crawl can help. We found no first-party page from OpenAI or Microsoft on 30 October that states which index a given assistant uses, so we make no claim about ChatGPT or Copilot here.

We follow the same rule on our own blog: a ping is never counted as indexing. AIScan pings on publish and update only, and we measure indexing separately through Search Console. For tracking readiness over time, see [monitor AI readiness over time](https://aiscan.site/blog/monitor-ai-readiness-over-time).

## Path 1: do it by hand with a key file and curl

This path works on any host and needs no plugin.

1. Make a key of 8 to 128 characters using letters, digits and hyphens. A UUID without a prefix works: `uuidgen`.
2. Create a UTF-8 text file named `{key}.txt` whose only content is the key.
3. Upload it to the web root so `https://yoursite.com/{key}.txt` loads without a login.
4. Submit one changed URL, URL-encoded as [RFC 3986](https://www.rfc-editor.org/rfc/rfc3986) requires:

```bash
curl "https://api.indexnow.org/indexnow?url=https%3A%2F%2Fyoursite.com%2Fnew-post&key=YOUR_KEY"
```

5. Submit several at once with a POST. The limit is 10,000 URLs per request.

```bash
curl -X POST https://api.indexnow.org/indexnow \
  -H "Content-Type: application/json; charset=utf-8" \
  -d '{"host":"yoursite.com","key":"YOUR_KEY","urlList":["https://yoursite.com/new-post","https://yoursite.com/updated-post"]}'
```

If you cannot use the root, host the file elsewhere on the same host and add `"keyLocation":"https://yoursite.com/folder/YOUR_KEY.txt"`. The documentation warns that the folder then limits which URLs the key can cover, and recommends the root.

## Path 2: WordPress with ThinkRank

[ThinkRank](https://thinkrank.ai) is the plugin we recommend here. It handles robots.txt, robots meta, schema, sitemaps and llms.txt from one plugin, so you are not tuning three plugins that fight over the same files. It also imports settings from Rank Math, Yoast, AIOSEO and SEOPress. Its [Sitemaps and Crawling docs](https://thinkrank.ai/docs/sitemaps-crawling/) list "Instant Indexing with IndexNow" among the topics. We did not install it for this post, so read that page for the exact screen and the key handling on your version.

After you turn it on, run the same check as Path 1: find the key it uses, open `https://yoursite.com/{key}.txt` and confirm it shows only the key. Other SEO plugins offer IndexNow as well, and the IndexNow FAQ says that where a CMS or plugin supports it, you do not need to make a key file yourself.

## Path 3: a static host or CI deploy

On a static site there is no publish event, so the deploy is the event. Add a step after the build that submits the pages that changed:

```bash
CHANGED=$(git diff --name-only HEAD~1 -- content/ | sed 's#content/#https://yoursite.com/#; s#\.md$##')
# build the JSON from $CHANGED, then POST it as in Path 1
```

Submit only what changed. The FAQ asks you not to resubmit the same URL many times a day without a meaningful change, and suggests waiting at least five minutes between updates to a frequently edited page.

## Path 4: Cloudflare Crawler Hints

If your site is on Cloudflare, [Crawler Hints](https://developers.cloudflare.com/cache/advanced-configuration/crawler-hints/) sends IndexNow pings for you. Cloudflare's documentation says it uses a cache status of MISS to guess that content changed, and it does not report responses above 4xx. It is available on Free, Pro, Business and Enterprise plans. It is a good default for a site you rarely touch, and a weak one for a site where you need a ping on a specific page at a specific time. For that, use Path 1 or 3.

## What the endpoints answered on 30 October 2026

We tested the API with a made-up key to see what each failure looks like. No key file existed for it: `aiscan.site/{key}.txt` returned 404. Six requests in total (five to IndexNow, one to our own domain), so treat this as a small sample.

| Request | Response |
|---|---|
| GET to `api.indexnow.org` with the made-up key, our URL | 202 |
| POST to `api.indexnow.org` with the same key and URL | 202 |
| GET to `www.bing.com/indexnow` with the same key | 202 |
| POST with a URL on a different host than `host` | 422, "not related to your verified domain" |
| POST with malformed JSON | 400, "Given request parameters are null or invalid" |
| Fetch the key file URL on our domain | 404 |

The first three rows are the finding. The key was fake and nothing was hosted, yet the endpoints accepted it. The FAQ explains that a 202 means the URL was received and the engine will verify the key later. So a first ping can return 202 on a good setup and on a broken one. We did not see a 200, a 403 or a 429 in this run. The documentation lists 403 for an invalid key and 429 for too many requests.

## How to confirm it worked

Work from the easiest check to the hardest.

1. **Run the scan.** `npx aiscan-cli yoursite.com`, or paste the URL at [aiscan.site](https://aiscan.site/). Check D2 looks for a valid XML sitemap at `/sitemap.xml` or `/sitemap_index.xml`. It does not test IndexNow itself.
2. **Open the key file.** The URL must return 200 and show only the key. A 404 here is the most common reason a setup silently fails.
3. **Read the response code of your own submission.** If you only get 202 over days, verify the key file again.
4. **Check the engine.** In Bing Webmaster Tools, look at the URL's status a few days later. Use Search Console for Google, which IndexNow does not touch.

Manual checking works without us. The scan is the quickest first step because it tells you whether the sitemap you are pinging about is sound.

## Mistakes to avoid

- Pinging every URL on every deploy. It burns your crawl quota and teaches engines to ignore you.
- Submitting URLs on a different host or subdomain than the one the key file lives on.
- Leaving a key in a public repository you want to rotate. The FAQ describes rotation: publish a new key file, then submit with the new key.
- Reading 200 as "indexed". It means received.

## Next step

Run `npx aiscan-cli yoursite.com` and look at D2 under [discoverability checks](https://aiscan.site/docs/checks/discoverability). Fix the sitemap first, then set up one of the four paths above. For the sitemap side, read [how to publish a sitemap AI crawlers can find](https://aiscan.site/blog/sitemap-ai-crawlers-can-find), and browse the rest of the [AIScan guides](https://aiscan.site/guides).

