=== CatCode Instant Index ===
Contributors: catcodestudio
Tags: indexnow, bing, indexing, seo, search engines
Requires at least: 6.2
Tested up to: 7.1
Requires PHP: 7.2
Stable tag: 1.0.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Tell search engines about new, changed and removed pages through IndexNow and Bing. Noindex pages stay out, and a journal says why.

== Description ==

CatCode Instant Index tells search engines when a page is published, changed, moved or removed. It works on any WordPress site, with or without a shop.

What it does differently is the part before and after sending:

* **Nothing that should stay hidden goes out.** Before an address is sent the plugin opens the page the way a visitor does. A robots noindex tag from any theme or plugin, an X-Robots-Tag header, a canonical pointing elsewhere, a redirect or an error page keep it out. Noindex set in Yoast SEO, Rank Math, SEOPress or The SEO Framework is respected too.
* **Scheduled posts wait.** A scheduled post goes out when it is actually published, under its real address. Drafts, autosaves, revisions and password-protected posts never go out.
* **Removed pages are reported.** Trashed, unpublished and renamed pages are sent as well, because search engines ask for that: the old address is remembered before WordPress changes it.
* **You can see what happened.** The journal lists every address, the service, the result and the reason in plain words, including everything that was left out. Failed sends can be repeated with one click.
* **No double sends.** A post saved three times in a row is one send, and one address is sent at most once in ten minutes, as IndexNow asks.
* **The key file is checked.** The plugin creates the IndexNow key and answers the key file itself. Many servers keep .txt requests away from WordPress; the check finds that out, and a real file can be created with one click.
* **Bing URL Submission is optional.** Add the API key and addresses also go through Bing's own API, within its daily limit, which is shown on the screen. The Index status tab asks Bing what it knows about a page.
* **Test copies stay quiet.** Nothing goes out when Settings → Reading discourages search engines or when the WordPress environment is not production.

Sending is done in the background, so saving a post stays as fast as before.

Editors get a "Send to search engines" link in the post lists, a bulk action, and a small box on the edit screen with the latest result for that post.

<!-- @pro-start -->
= Pro =

* Send the whole site in one go, in portions, with the same checks.
* Daily check: Bing is asked about sent pages by itself.
* Telegram alerts when sending stops (a rejected key, the Bing limit, a site that is not verified) and a weekly digest.
* Journal export to CSV.

A key works on two sites: the main one and a test copy.
<!-- @pro-end -->

IndexNow and Bing are products of their respective owners. CatCode Instant Index is an independent plugin, not affiliated with or endorsed by Microsoft or the IndexNow project.

Sending an address only tells a search engine that the page exists or changed. When it comes and whether the page ranks is up to the search engine. Google does not take part in IndexNow.

== Installation ==

1. Install and activate the plugin.
2. Open Settings → Instant Index. The key is already created; the Overview tab says whether the key file opens.
3. Publish or update a post and look at the Journal tab a few minutes later.
4. Optional: paste the Bing API key from Bing Webmaster Tools → Settings → API Access. The site must be verified there.

The plugin relies on WP-Cron. On a site without visitors, or with WP-Cron switched off and no real cron job, use the Send now button on the Overview tab.

== Frequently Asked Questions ==

= Do I need a Bing account? =

No. IndexNow works without any account, and search engines share what they receive. The Bing API key is optional.

= Does it work with Yoast SEO or Rank Math? =

Yes. Their noindex setting is respected. If your SEO plugin has its own IndexNow feature, switch that off, otherwise pages go out twice.

= Why does the journal say "Left out"? =

The line says why: noindex, a redirect, a canonical pointing elsewhere, a page that does not open. That is the plugin keeping the address away from search engines on purpose. Pressing Send does not bypass it; fix the page and send it again.

= Why does a page say "Sent without opening the page"? =

Some servers cannot reach their own site, or a firewall refuses the request. The plugin then relies on what WordPress knows about the post and says so in the journal.

= The key file does not open. What now? =

Your web server answers .txt requests itself. Press Create a real file on the Overview tab. If WordPress cannot write to the site folder, the same screen tells you the file name and the text to put in it.

= Does it work on multisite? =

Yes, each site of a network has its own key, settings and journal.

= Does it send data about my visitors? =

No. Only page addresses, the site host and the key go out.

== External services ==

This plugin connects to the services below. Nothing is sent until a page changes or you press a button.

**IndexNow** (api.indexnow.org) is how search engines hear about changed pages. When a page is published, changed, moved or removed, and when you send addresses by hand, the plugin sends the addresses, the site host, the IndexNow key and the address of the key file. Terms: https://www.indexnow.org/terms

**Bing Webmaster API** (ssl.bing.com), only if you add a Bing API key. The plugin sends page addresses, the site address and your key when pages change, reads the daily limit, and reads what Bing knows about a page when you ask. Provided by Microsoft. Terms: https://www.microsoft.com/servicesagreement Privacy: https://privacy.microsoft.com/privacystatement

<!-- @pro-start -->
**Telegram Bot API** (api.telegram.org), only in Pro and only if you add a bot token and a chat ID. The plugin sends the site address and the alert text. Terms: https://telegram.org/tos Privacy: https://telegram.org/privacy

**CatCode licence and update server** (catcode.com.ua), only in Pro. The plugin sends the licence key and the site address to check the licence and new versions; a trial also sends the e-mail you enter. Terms: https://catcode.com.ua/terms/ Privacy: https://catcode.com.ua/privacy/
<!-- @pro-end -->

== Changelog ==

= 1.0.0 =
* First release.
