← Back to blog

Technical SEO · May 27, 2026 · 9 min read

IndexNow for WordPress: Complete Setup, and Why Your Sitemap Stays

A sitemap leaves search engines to find new posts on their own schedule. IndexNow tells Bing, Yandex and the other participating engines the moment a URL is ready (Google does not take part). Here's the complete WordPress setup, mu-plugin route included.

By FluxWriter

IndexNow for WordPress: Complete Setup, and Why Your Sitemap Stays

Why your WordPress sitemap isn't getting you indexed faster

Deciding between instant pings and traditional sitemaps? See IndexNow vs XML sitemaps for the trade-offs.

Most WordPress site owners assume their XML sitemap (/sitemap_index.xml) is doing real work. It isn't — at least not the work most people think.

Sitemaps tell Google's crawler which URLs exist. They do not request immediate crawling. After you publish a new post:

  1. Google's crawler eventually fetches your sitemap (median: every 1-7 days)
  2. It compares the sitemap entries against URLs it already knows about
  3. It schedules crawls for new URLs based on its own priority queue (median: another 3-7 days)

Net result: a new WordPress post typically takes 4-14 days to appear in Google's index through sitemap-only signals. That's 4-14 days where the post can't rank for anything and isn't accumulating click data.

IndexNow changes the model for the engines that support it. Instead of waiting for their crawlers to come find you, you ping them the moment a URL is ready. Google is not one of them, so for Google the sitemap stays the main signal.

What IndexNow is, technically

IndexNow is an open protocol (specification at indexnow.org) launched by Microsoft Bing in 2021, with Yandex joining shortly after; Seznam and Naver take part too. Google has not adopted it, so a ping does nothing for Google.

The protocol is dead simple: you POST a JSON payload to a search engine's IndexNow endpoint listing URLs that need crawling. The endpoints verify a key file on your domain to prove you own it. Each engine then decides when to crawl the URL; none of them promises a turnaround.

The payload looks like this:

{
  "host": "yoursite.com",
  "key": "abc123-your-key-here",
  "urlList": [
    "https://yoursite.com/blog/new-post"
  ]
}

That's it. No authentication beyond proving you own the key file at yoursite.com/abc123-your-key-here.txt.

What IndexNow actually does for discovery speed

IndexNow shortens one step: discovery, by the engines that take part. A participating engine hears about the URL when you publish instead of on its next sitemap fetch, then decides for itself when to crawl and whether to index. None of them publishes a turnaround it guarantees.

The Google story matters because Google still drives most search traffic. For Google, the levers are a sitemap that updates on publish, submitted once in Search Console, and internal links from pages Googlebot visits often. IndexNow is for the other engines, and for those it is worth having.

How to set up IndexNow on WordPress (the right way)

Three setup paths, depending on your site's plugin tolerance and security hardening level.

Path 1: Rank Math or Yoast (most users)

Rank Math 1.0.97+ and Yoast Premium 22.0+ both bundle IndexNow:

Rank Math:

  1. WordPress admin → Rank Math SEO → Status & Tools
  2. Find "IndexNow" → Enable
  3. Rank Math auto-generates a key, hosts it at yoursite.com/{key}.txt, and pings Bing/Yandex on publish

Yoast Premium:

  1. WordPress admin → SEO → Integrations
  2. Toggle "Bing IndexNow"
  3. Same auto-generation flow

Either plugin will ping on every new publish + post update. Effort: 30 seconds.

Path 2: Standalone plugin (Rank Math Lite / no SEO plugin)

If you're running Rank Math Free or have no SEO plugin at all:

Plugin: "IndexNow for WordPress" (Bing official)

Install, activate, done.

Path 3: mu-plugin route (hardened sites with Wordfence/Sucuri blocking REST endpoints)

This is the niche case that breaks the standard plugins. On WordPress sites hardened by Wordfence Premium or Sucuri Firewall, the IndexNow plugin's REST API hooks can get blocked, and pings silently fail.

The fix is to drop a must-use plugin (mu-plugin) that bypasses the REST layer:

<?php
// wp-content/mu-plugins/indexnow-ping.php

add_action('publish_post', function ($post_id) {
    if (wp_is_post_revision($post_id)) return;

    $url = get_permalink($post_id);
    $key = 'YOUR-INDEXNOW-KEY-HERE';
    $host = parse_url(home_url(), PHP_URL_HOST);

    wp_remote_post('https://api.indexnow.org/indexnow', [
        'headers' => ['Content-Type' => 'application/json'],
        'body' => json_encode([
            'host' => $host,
            'key' => $key,
            'urlList' => [$url]
        ]),
        'timeout' => 10,
        'blocking' => false,
    ]);
});

This runs on every new published post, fires the ping in a non-blocking HTTP call, and exits cleanly. The mu-plugin location is loaded before any security plugin filters can interfere.

You'll still need to host the key file at yoursite.com/{key}.txt — that part can't be bypassed.

What IndexNow does NOT do

Three common misconceptions:

1. It does not guarantee indexing. A pinged URL still has to pass quality checks. Thin content gets pinged AND skipped. The protocol just signals "this URL is ready for crawl," not "you must rank this URL."

2. It does not boost rankings. Faster indexing means a post can start ranking sooner, but it does not affect the eventual position. If your post would have ranked at position 23 with sitemap-only indexing, it will still rank at position 23 with IndexNow.

3. It does not work for sites with technical SEO problems. If your robots.txt blocks crawlers, your sitemap is broken, or your URLs return non-2xx status codes, IndexNow won't fix those. Diagnose those first.

Why this matters more in 2026

Two trends compound IndexNow's value:

1. AI answers lean on fresh pages. Microsoft Copilot answers from Bing's index, so a post Bing has crawled can show up there sooner. Google's AI Overviews draw on Google's own index, which IndexNow does not feed.

2. Content velocity is increasing. Sites publishing 2-5 posts/day with AI assistance are the norm now. Sitemap-only indexing creates a 4-14 day backlog of unindexed posts — by the time Google catches up, the post is already stale. For Bing and the other participants, IndexNow closes most of that gap; for Google, a sitemap that updates on publish and links from pages Google already crawls do that job.

If you're publishing more than 3 posts/week, IndexNow is not optional in 2026.

How FluxWriter handles IndexNow

For context: FluxWriter ships IndexNow for WordPress sites. When you connect a WordPress site, FluxWriter generates its key and checks whether your site already serves the key file. If it doesn't, FluxWriter hands you a short mu-plugin snippet to save as wp-content/mu-plugins/indexnow-key.php (or you upload the key file by FTP) — WordPress can't place a file at your site root through its API, so that one step is manual. Once the file is served, FluxWriter fires the ping the moment each WordPress post goes live. Shopify, Wix, Webflow and Ghost sites are not sent to IndexNow.

This matters for sites running content schedules — the alternative is maintaining a ping plugin on every site you publish to. For a single site, plugins are fine. For an agency managing 20+ client WordPress sites, FluxWriter's IndexNow means one key file per site and no ping plugin to keep updated.

Connect your WordPress site and FluxWriter shows you the key-file step straight away.

The summary

IndexNow lets Bing, Yandex and the other participating engines hear about a new post the moment it publishes, instead of on their next sitemap fetch. It does nothing for Google, which still finds posts through your sitemap and internal links, so keep both. It's free, open-protocol, and supported by every major SEO plugin. Setting it up on WordPress takes 30 seconds with Rank Math or Yoast, 2 minutes with the Bing IndexNow plugin, or 10 minutes with a mu-plugin if you're on a security-hardened site.

Skipping it in 2026 is leaving organic traffic on the table.



← All posts