Chat on WhatsApp

IndexNow Submission for Magento 2

Instantly notify Bing, Yandex, Seznam, Naver and Yep whenever a product, category, or CMS page changes — via the open IndexNow protocol, with one plug-and-play Magento 2 module.

Magento 2.4.6–2.4.8 PHP 8.1–8.4 Hyva + Luma Ready Free

Key Features:

  • Automatic URL Submission
  • Per-Store API Keys
  • Built-in Key Verification Endpoint
  • Safe Defaults

Additional Services

$0.00
In stock
SKU
panth-index-now
Links
Pay with Wise
Lifetime Updates Every Magento release
1-Year Free Support Email + WhatsApp
Adobe-Certified Magento 2 Developer
Free Forever No subscription, no upsell
What you get

Everything in the box

Built-in from day one. No add-ons, no upsell, no licence keys to renew.

Automatic URL Submission

Single request batching — multiple entity saves in one admin action fire one batched POST, not one per entity

Per-Store API Keys

Scope-aware — configure one key per website or store view

Built-in Key Verification Endpoint

/panth_indexnow/key — IndexNow's required verification URL, served as plain text from the admin-configured key

Safe Defaults

Disabled by default — must be explicitly enabled in admin so a fresh install doesn't start submitting URLs until you're ready

Defensive HTTP Client

15-second timeout — won't hang the admin request if IndexNow is slow

Overview

Panth IndexNow is an instant-indexing submission extension for Magento 2 and Adobe Commerce that auto-pings Bing, Yandex, Seznam, Naver, and Yep on every catalog change.

The IndexNow protocol lets search engines pick up your URL changes within minutes instead of waiting for the next crawl. This module hooks every product, category, and CMS-page save observer and submits the canonical URL automatically — respecting custom URL rewrites, configured suffix, and per-store host — so admins never have to click "submit URL" in Bing Webmaster Tools after every edit, and developers never have to wire a cron job or queue topic.

Submissions batch by request (so editing 50 SKUs in one admin action fires one POST, not 50) and flush at the end of the request via register_shutdown_function, which keeps the save button responsive. Per-store API keys, a built-in verification endpoint at /panth_indexnow/key served as plain text, and timing-safe key comparison cover the IndexNow spec requirements without manual file uploads.

One key file is served per store from admin config, so multi-store catalogs work out of the box, and a default key configured at Default Config scope is inherited automatically by every store view that doesn't override it. The endpoint auto-404s when the feature flag is off, so it can't be abused as a configuration probe.

  • Stores with frequent catalog updates needing fast Bing / Yandex indexing
  • Multi-store Magento sites that need per-store-view IndexNow keys
  • Merchants who run flash sales or promotional URL changes

What is IndexNow?

IndexNow is an open protocol co-created by Microsoft and Yandex that lets websites notify search engines the moment their content changes — rather than waiting for the next crawl. A website POSTs a list of changed URLs to a shared endpoint, and every participating search engine receives the notification simultaneously.

Key benefits for eCommerce stores:

  1. Faster indexing — new products and category changes appear in search results within minutes instead of days
  2. Lower crawl load — search engines don't need to re-crawl your sitemap to discover changes
  3. One POST, many engines — submitting to api.indexnow.org fanouts to Bing, Yandex, Seznam, Naver and Yep in a single request
  4. Bi-directional trust — the keyLocation URL on your site proves ownership, so only you can submit URLs for your domain

The module handles the entire flow automatically — key hosting, URL collection, batching, submission, and error logging.


What you get

Automatic IndexNow submission for Magento 2 product, category, and CMS-page changes — no cron, no queue.

  • Auto-submits canonical URLs to Bing, Yandex, Seznam, Naver, Yep on save
  • Single batched POST per admin action even when 50 entities save at once
  • End-of-request flush via register_shutdown_function keeps observers off the critical path
  • Per-website or per-store-view API keys with default inheritance
  • Built-in /panth_indexnow/key verification endpoint with timing-safe comparison
  • Auto-404 when disabled so the endpoint can't be abused as a probe

Key Features

Automatic URL Submission

  • Product saves auto-submit the product URL to IndexNow the moment an admin clicks Save
  • Category saves auto-submit the category listing URL
  • CMS page saves auto-submit the rewritten canonical CMS URL (respects custom URL rewrites + configured suffix)
  • Single request batching — multiple entity saves in one admin action fire one batched POST, not one per entity
  • End-of-request flush via register_shutdown_function — observer stays out of the critical path, merchant's save button returns instantly

Per-Store API Keys

  • Scope-aware — configure one key per website or store view
  • Correct host in every payload — each store's submission uses its own host, key, and keyLocation
  • Single default key works too — set it once at Default Config and every store inherits

Built-in Key Verification Endpoint

  • /panth_indexnow/key — IndexNow's required verification URL, served as plain text from the admin-configured key
  • Optional ?key=<value> query param — lets crawlers pre-validate with timing-safe comparison; mismatches return 404 so the endpoint can't be abused as an arbitrary text echo service
  • Auto-404 when disabled — if the feature flag is off or the key is empty, the endpoint returns a clean 404
  • Module-owned frontName — uses panth_indexnow as its route's frontName so the module never shares a route registration with other modules (no controller resolution races)

Safe Defaults

  • Disabled by default — must be explicitly enabled in admin so a fresh install doesn't start submitting URLs until you're ready
  • ACL-gated (Panth_IndexNow::config) — only roles with the permission can see / save the settings
  • Per-store toggle — enable globally and disable on specific store views (or vice versa)

Defensive HTTP Client

  • 15-second timeout — won't hang the admin request if IndexNow is slow
  • Full error logging — HTTP status + response body logged to var/log/system.log for post-mortem
  • Never re-throws — a failed submission never crashes the entity save that triggered it

Which Search Engines Does It Cover?

IndexNow has a defined list of participating search engines. Submission via api.indexnow.org is fanned out to all of them:

Search Engine IndexNow Support
Bing Yes
Yandex Yes
Seznam Yes
Naver Yes
Yep Yes
DuckDuckGo Indirect (uses Bing's index)
Google No — Google does not participate in IndexNow
Baidu No

Note on Google: Google has its own crawl schedule and doesn't accept IndexNow submissions. To speed up Google indexing, pair this module with an XML sitemap (e.g. mage2kishan/module-xml-sitemap) and use Google Search Console. This module is for Bing / Yandex / Seznam / Naver / Yep — the search engines that actually honor IndexNow.


How It Works — Under the Hood

The module is deliberately small (three classes — an observer, a submitter, and a controller) and leans on Magento's native event system rather than inventing a scheduler:

 ┌────────────────────┐ save_after event ┌─────────────────────┐
 │ Admin saves a │ ─────────────────────▶ │ EntityChangeObserver│
 │ product / category │ │ │
 │ / CMS page │ │ - resolves URL │
 └────────────────────┘ │ - collects in batch │
 │ - registers flush │
 └──────────┬──────────┘
 │
 │ PHP shutdown
 ▼
 ┌─────────────────────┐
 │ Submitter │
 │ │
 │ POST api.indexnow. │
 │ org/IndexNow │
 │ │
 │ { │
 │ host, key, │
 │ keyLocation, │
 │ urlList[] │
 │ } │
 └──────────┬──────────┘
 │
 ▼
 Bing, Yandex, Seznam,
 Naver, Yep

Design decisions:

  • End-of-request flush — the observer doesn't POST on every save; it accumulates URLs per-store in a static array and fires one batched request in register_shutdown_function. A merchant saving 5 product edits in one admin action gets 1 POST, not 5.
  • Store-scoped batching — multi-store saves to different stores fire one POST per store (each with its own key + host), batched by store.
  • No database writes — no queue table, no pending table. State lives only in the PHP request that triggered it. If PHP-FPM dies mid-request the batch is lost, but that's an acceptable trade-off for zero-infrastructure operation.
  • Never blocks — the save button returns the moment the entity is written. The IndexNow POST happens after Magento has already sent the response.

What Triggers a Submission?

Event Observer Fires URL Submitted
catalog_product_save_after Product URL via $product->getProductUrl() (respects store rewrites)
catalog_category_save_after Category URL via $category->getUrl()
cms_page_save_after CMS page URL via \Magento\Cms\Helper\Page::getPageUrl() inside store emulation (respects URL rewrites + suffix)
catalog_product_delete_after Not subscribed — IndexNow has no "remove" semantic; search engines detect 404s via normal re-crawl
catalog_category_delete_after Not subscribed — same reason
cms_page_delete_after Not subscribed — same reason
Catalog rule save Not subscribed (product URLs don't change from a rule save)
Stock qty change Not subscribed

The Key Verification Endpoint

IndexNow requires the domain being submitted to serve the API key as a plain-text file at a declared URL. The module serves this automatically at:

https://yourstore.com/panth_indexnow/key

Accepted URL forms:

URL Behavior
/panth_indexnow/key Returns the configured key as text/plain (HTTP 200)
/panth_indexnow/key?key=<correct> Returns the key when the query matches (timing-safe compare)
/panth_indexnow/key?key=<wrong> Returns 404 (prevents use as arbitrary text echo service)
/panth_indexnow/key when IndexNow disabled Returns 404
/panth_indexnow/key when API key empty Returns 404

The key comparison is timing-safe via hash_equals — the endpoint resists timing-attack key discovery.


Multi-Store Support

The module is fully scope-aware:

  • Default key — set once at Default Config, inherited by every store
  • Per-website key — set at Website scope for brand-specific keys
  • Per-store key — set at Store View scope for the most granular setup

Each submission uses the correct key + host + keyLocation for the store the entity belongs to. Saving a product assigned to Store A and a CMS page assigned to Store B in one admin action triggers two POSTs — one per store — each with that store's own key.

Hyva store → POST {host: hyva.test, key: hyva-key-..., keyLocation: https://hyva.test/panth_indexnow/key}
Luma store → POST {host: luma.test, key: luma-key-..., keyLocation: https://luma.test/panth_indexnow/key}

Troubleshooting

Issue Cause Resolution
Nothing gets submitted after saving Module not enabled at store scope Enable in admin at the specific store view (not just default)
/panth_indexnow/key returns 404 Feature disabled or key empty Enable + set API key + flush cache
IndexNow API returns 422 Your site's host isn't publicly reachable Expected on dev/staging (.test, .local). Will work on production domains.
IndexNow API returns 403 Key file doesn't match submitted key Verify /panth_indexnow/key returns the same value as the admin API Key field
Submissions happen but search results don't update Google doesn't honor IndexNow Use XML sitemap + Search Console for Google. IndexNow covers Bing / Yandex only.
Batch size > 10,000 URLs Observer batches in chunks of 10K automatically No action needed — the spec maximum is handled by array_chunk
Admin role doesn't see the config section ACL resource not granted System → Permissions → User Roles → edit the role → grant Panth Extensions → IndexNow
Log says "unexpected HTTP status: 0" Curl failure (timeout, DNS, firewall) Check that api.indexnow.org is reachable from your Magento server

Compatibility

Requirement Versions Supported
Magento Open Source 2.4.4, 2.4.5, 2.4.6, 2.4.7, 2.4.8
Adobe Commerce 2.4.4, 2.4.5, 2.4.6, 2.4.7, 2.4.8
Adobe Commerce Cloud 2.4.4 — 2.4.8
PHP 8.1.x, 8.2.x, 8.3.x, 8.4.x
MySQL 8.0+
MariaDB 10.4+
Hyva Theme 1.0+ (native support)
Luma Theme Native support
Required Dependency mage2kishan/module-core ^1.0

Installation

Composer Installation (Recommended)

composer require mage2kishan/module-index-now
bin/magento module:enable Panth_Core Panth_IndexNow
bin/magento setup:upgrade
bin/magento setup:di:compile
bin/magento setup:static-content:deploy -f
bin/magento cache:flush

Manual Installation via ZIP

  1. Download the latest release ZIP from Packagist or the Adobe Commerce Marketplace
  2. Extract the contents to app/code/Panth/IndexNow/ in your Magento installation
  3. Ensure Panth_Core is installed (required dependency)
  4. Run the same commands as above starting from bin/magento module:enable

Verify Installation

bin/magento module:status Panth_IndexNow
# Expected output: Module is enabled

Get an IndexNow API Key

  1. Visit Bing IndexNow or Yandex IndexNow
  2. Generate a UUID-style key (e.g. a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6) — or invent any 8+ character hex string; IndexNow generates new keys per-site
  3. Paste the key into Magento admin → Stores → Configuration → Panth Extensions → IndexNow → API Key
  4. Save and flush the cache — submissions begin on the next catalog / CMS save

Configuration

Navigate to Admin → Stores → Configuration → Panth Extensions → IndexNow to configure the module.

Setting Default Scope Description
Enable IndexNow No Store View Master toggle. When on, product / category / CMS page saves submit the changed URL to IndexNow.
API Key (empty) Store View A UUID-style key (e.g. a1b2c3d4e5f6…). The key is served at /panth_indexnow/key for verification. Must be at least 8 hex characters.

Both settings are scope-aware — configure one key globally or set different keys per store view if you manage multiple brand domains from one Magento install.


License

Panth IndexNow is licensed under a proprietary license — see LICENSE.txt. One license per Magento installation.


More Information
Module Category SEO & Indexing
Best For All Sizes
FAQ

Frequently Asked Questions

Does this submit URLs to Google?

No. Google does not participate in IndexNow and has stated they maintain their own crawl schedule. For Google indexing, use a proper XML sitemap and Google Search Console. This module is specifically for the IndexNow ecosystem (Bing, Yandex, Seznam, Naver, Yep).

Do I need separate keys for Bing, Yandex, Seznam, and Naver?

No — that's the point of IndexNow. One key, submitted to api.indexnow.org, fans out to every participating engine. Generate the key once at Bing IndexNow or Yandex IndexNow and paste it into Magento.

Where is the key file served?

https://yourstore.com/panth_indexnow/key — IndexNow crawlers hit this URL to verify domain ownership before trusting submitted URLs.

What happens if the IndexNow API is down?

The HTTP call times out after 15 seconds, the failure is logged to var/log/system.log, and the save that triggered it completes normally. No admin-facing error, no retry queue — the next save attempts a fresh submission.

Will this slow down product saves?

No. The observer only enqueues URLs during save and fires the actual POST in register_shutdown_functionafter Magento has already sent the response to the admin. The merchant's Save button returns at normal speed.

Does it work with Hyva?

Yes. IndexNow operates at the backend event layer (catalog_product_save_after, etc.) — it's theme-agnostic. Runs identically on Hyva, Luma, or any Magento 2 theme.

Can I submit a sitemap URL manually?

IndexNow is per-URL, not per-sitemap — Bing already polls your sitemap separately. If you want to force a re-crawl of a specific URL (not triggered by a save), you'd need a custom CLI command; this module doesn't ship one in v1.0.

Is Panth_Core required?

Yes. mage2kishan/module-core is a required dependency and is pulled in automatically by Composer. Core provides the admin tab layout and common utilities.

Does it support multi-store / multi-language?

Yes. Every configuration setting respects Magento's standard scope hierarchy (default → website → store view). Set different keys per store view, per website, or one default key globally — whichever fits your setup.

What about product / category / CMS page deletions?

Not submitted. IndexNow is designed for new or changed content. Deletions are detected by search engines through normal re-crawl when they hit a 404 on the next visit to the URL.

How is this different from a traditional antivirus?

Panth Malware Scanner is built specifically for Magento 2 filesystems — it understands the directory layout, knows which folders are writable from the frontend, and ships signatures tuned for Magento-targeted threats (Magecart skimmers, PolyShell webshells, admin-layout injection). Traditional AV tools scan everything with generic signatures and produce noise.

Does this module change how Magento calculates custom option prices?

No. All price-delta logic continues to flow through Magento's standard priceBox and price-option JS components. This module only replaces the visual rendering.

Does Panth Footer replace the default Magento footer?

Yes. When enabled, Panth Footer takes over the footer.container block and renders its own configurable footer. You can disable it any time to restore the default footer.

Do I have to pay for Panth Core?

No. Panth Core is completely free and will remain free forever. It is the foundation library that other (paid) Panth extensions depend on.

Does this work on Hyva themes?

Yes. The module ships Hyva-native templates using Alpine.js and Tailwind. No jQuery required.

Does Panth Mega Menu work on both Hyva and Luma?

Yes. The module ships with two purpose-built templates — Alpine.js + Tailwind for Hyva and vanilla JS for Luma — and auto-switches based on your active storefront theme.

Can I have more than one banner slider on the same page?

Yes. Create as many sliders as you want in the admin and place each one via its own widget or layout block. Each slider maintains independent configuration and slides.

Does it work for guests?

Yes, guests can subscribe with their email address. You can optionally require login via admin config.

Does this submit URLs to Google?

No. Google does not participate in IndexNow and has stated they maintain their own crawl schedule. For Google indexing, use a proper XML sitemap and Google Search Console. This module is specifically for the IndexNow ecosystem (Bing, Yandex, Seznam, Naver, Yep).

How many forms can I create?

Unlimited. Each form has a unique identifier and its own submissions scope.

Need this customised?

Talk to Kishan directly — written quote, scope and timeline within 24 hours. No sales call.

WhatsApp

IndexNow Submission for Magento 2

$0.00
Step up

Customers usually upgrade to