If you've ever published a blog post and waited days for it to appear in search results, IndexNow is the fix. You push a notification to search engines when a page goes live, and they crawl it on demand instead of waiting for their next scheduled visit.
What IndexNow actually does
IndexNow is a push protocol supported by Bing, Yandex, Naver, Seznam, and others. Instead of crawlers discovering your pages on their own schedule, you tell them a page changed and they come fetch it.
Google doesn't participate. They have their own push system (the Indexing API), but it only applies to job postings and live streams. For everyone else, IndexNow covers the major non-Google engines in a single call.
The manual approach: one URL at a time
The simplest implementation is a direct HTTP request:
https://api.indexnow.org/indexnow?url=https://yoursite.com/new-page&key=YOUR_KEY
You generate a key, upload a verification file to your domain root (e.g. https://yoursite.com/abc123.txt), and start pinging. Each ping notifies all participating engines at once.
This works fine if you want full control and don't mind doing it yourself. The limitation is scale: it only covers URLs you explicitly submit, and it doesn't help with scheduled posts published while you were away.
Connecting a sitemap automatically
Your sitemap is a complete inventory of every URL on your site. Connecting IndexNow to your sitemap means every URL in it can be submitted automatically, not just ones you remember to ping.
The approach is a scheduled job that:
- Fetches your sitemap (including any sitemap index files)
- Compares the current URL list against what was previously seen
- Submits new and changed URLs to IndexNow
- Handles sitemap index files by recursively fetching child sitemaps
Most platforms generate a sitemap automatically. WordPress sites get one from Yoast or RankMath. Next.js generates /sitemap.xml from MetadataRoute.Sitemap. Hugo, Jekyll, and Astro all include sitemap support out of the box.
If you'd rather not build and maintain this pipeline yourself, Pingmap runs it for you — poll interval, diffing, submission, and retries all included.
CMS plugins: fast but limited
RankMath has built-in IndexNow support. When you publish or update a post, it pings the URL automatically. It doesn't do full sitemap polling, so URLs from bulk imports, programmatic updates, or e-commerce product feeds get missed.
Yoast SEO added IndexNow in 2022. Same behavior: per-save pings, not sitemap polling.
Both work well for editorial sites where content comes through the CMS editor. For anything programmatic, they miss too much.
Platform-specific options
Bing Webmaster Tools lets you submit a sitemap URL directly. Bing then polls it on their own schedule. That's passive crawl assistance, not real-time push — pages can still take days to appear.
Cloudflare has an IndexNow integration in their "Speed" tab. It pings IndexNow on cache purge events, which covers some changes but not all.
Vercel doesn't have an IndexNow integration. You'd need to handle it separately.
Sitemap index files
Many larger sites use a sitemap index: a top-level XML file that points to multiple child sitemaps (one per section, content type, or date range). If your polling tool fetches the index but doesn't follow the child references, a big chunk of your site gets missed.
The right approach fetches the index, parses the <sitemap><loc> entries, then fetches and processes each child separately.
Using Pingmap
Pingmap connects to your sitemap URL and polls it on a schedule. It handles both regular sitemaps and sitemap index files, follows child references automatically, and submits new URLs to IndexNow without any manual steps.
Setup is quick: add your domain, paste in your sitemap URL, and the first scan runs immediately. From that point, newly discovered URLs are submitted on schedule.
The dashboard shows each submission: which URLs were new, which were already seen, response codes from the IndexNow endpoint, and a history of every poll run.
There's a free tier for testing and a paid plan for production use. No plugin required, works with any site that has a sitemap.