All posts

May 22, 2026 · 4 min read

How to set up IndexNow on your site: the key file gotcha + full setup

Step-by-step IndexNow setup: generate a key, host the key file, send your first submission. Why most IndexNow setups silently fail validation and how to fix.

By Imad Benzrak · Founder, Rapid Indexer

indexnowbingtutorial

IndexNow is the fastest free way to notify Bing (and Yandex, Naver, and increasingly Google) about new or updated URLs on your site. A single POST request and your URL is in the queue for crawl within minutes.

But IndexNow has one gotcha that silently breaks 90% of first-time setups: the key file validation. Without it, your submissions return HTTP 200 but Bing rejects them downstream and you never know.

This tutorial walks through the full setup including the gotcha.

What IndexNow actually does

IndexNow is a protocol (not a service) for pushing URL change notifications to participating search engines. You send ONE POST to an endpoint (api.indexnow.org or a participating engine's direct URL), and they ALL get notified.

Participating engines in 2026:

  • Bing (primary author)
  • Yandex
  • Naver (Korean search)
  • Seznam (Czech search)
  • Yep.com
  • Google — sort of. Google indexes the protocol's signals but doesn't officially endorse IndexNow yet. They've stated they'll "evaluate the protocol's adoption over time."

The key file gotcha (why most setups fail silently)

IndexNow requires you to prove you own the domain you're submitting URLs for. The proof: host a text file at a specific URL on your domain.

The file:

  • Filename: your IndexNow key (e.g., a3f2c9b8d4e5f6a7.txt)
  • Path: https://yourdomain.com/a3f2c9b8d4e5f6a7.txt (root level, not in a subdirectory)
  • Content: just the key string itself (e.g., a3f2c9b8d4e5f6a7)

When you submit a URL, IndexNow's validator fetches your key file and checks: does the filename match the key you submitted? Does the file content also match? If either check fails, the submission is rejected — but the initial POST still returns HTTP 200 because the rejection happens asynchronously.

This is why naive integrations look like they work (200 response!) but nothing actually gets indexed (Bing rejected the submission post-validation).

Step-by-step: hosting the key file

For self-hosted sites (your own server): just create the file in your public root.

# Replace YOUR_KEY with your actual 32-char hex key
echo "YOUR_KEY" > /var/www/html/YOUR_KEY.txt

Test:

curl https://yourdomain.com/YOUR_KEY.txt
# Should return the key string, nothing else

For Shopify / Squarespace / Wix (no file system access): you can't host arbitrary text files. Options:

  • Many platforms have plugins (Shopify has IndexNow apps) that handle key file hosting + submission
  • Or use the keyLocation parameter to point to a file hosted on a DIFFERENT domain you control (must still validate as yours)

For Cloudflare Workers / Pages: create a worker that returns the key content for the specific filename.

Step-by-step: submitting your first URL

curl -X POST 'https://api.indexnow.org/indexnow' \
  -H 'Content-Type: application/json' \
  -d '{
    "host": "yourdomain.com",
    "key": "YOUR_KEY",
    "keyLocation": "https://yourdomain.com/YOUR_KEY.txt",
    "urlList": [
      "https://yourdomain.com/new-page-1",
      "https://yourdomain.com/new-page-2"
    ]
  }'

Successful response: HTTP 200 with no body.

Errors:

  • HTTP 400 = malformed JSON
  • HTTP 403 = key validation failed (key file wrong location/content)
  • HTTP 422 = invalid URLs (must start with https://yourdomain.com)
  • HTTP 429 = rate limit (default ~10,000 URLs/day per domain)

Why IndexNow doesn't work for marketplace URLs

You can't use IndexNow to submit https://www.etsy.com/listing/12345 from your own setup, because:

  1. The host field must match your domain
  2. Etsy.com is not your domain
  3. Bing's validator would try to fetch your key file at etsy.com/YOUR_KEY.txt which 404s

For marketplace URLs, the only path is the satellite-page workaround (create a satellite at s.yourdomain.com/p/..., host the key file at s.yourdomain.com/YOUR_KEY.txt, submit the satellite URL via IndexNow with a canonical link to the marketplace URL).

Automation

For ongoing use, you want IndexNow firing automatically when you publish or update content. Options:

WordPress: install one of these plugins:

  • IndexNow by Bing (official)
  • Rank Math SEO (built-in support)
  • Yoast SEO (Premium feature)

Shopify: apps in the marketplace handle this.

Custom sites: hook into your publish event. Example pseudocode:

def on_post_published(post):
    requests.post(
        'https://api.indexnow.org/indexnow',
        json={
            'host': 'yourdomain.com',
            'key': INDEXNOW_KEY,
            'keyLocation': f'https://yourdomain.com/{INDEXNOW_KEY}.txt',
            'urlList': [post.url]
        }
    )

What to expect after submission

URLs typically appear in Bing search within 1-24 hours. Yandex is faster (often minutes). Google's adoption is still rolling out — submissions are acknowledged but not always acted upon.

Don't expect IndexNow to replace sitemap submission. It complements:

  • Sitemap = baseline, comprehensive, slow
  • IndexNow = targeted, fast, push-based

Submit URLs via IndexNow when they're new/updated AND ALSO keep your sitemap up-to-date.

Bottom line

IndexNow setup takes 15 minutes if you follow the steps. The key file gotcha is the only thing that catches newcomers — once you understand that validation happens against the file content, the rest is mechanical.

For sites you own, IndexNow is a free, fast, low-effort indexing channel that should be part of every publish workflow. For marketplace URLs, the satellite-page workaround (described in our satellite domain setup guide) extends IndexNow's reach to URLs you don't directly own.

Try Rapid Indexer free

25 credits on signup. No card. Submit your first URL and see indexation in hours, not weeks.

Get started