Automatic URL Submission
Single request batching — multiple entity saves in one admin action fire one batched POST, not one per entity
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.
Key Features:
Additional Services
Built-in from day one. No add-ons, no upsell, no licence keys to renew.
Single request batching — multiple entity saves in one admin action fire one batched POST, not one per entity
Scope-aware — configure one key per website or store view
/panth_indexnow/key — IndexNow's required verification URL, served as plain text from the admin-configured key
Disabled by default — must be explicitly enabled in admin so a fresh install doesn't start submitting URLs until you're ready
15-second timeout — won't hang the admin request if IndexNow is slow
IndexNow - Instant Bing & Yandex Submission for Magento 2. Panth IndexNow auto-submits changed URLs from Magento 2 (products, categories, CMS pages) to Bing, Yandex, Seznam, Naver and Yep via the IndexNow protocol. Real-time indexing, zero-config batching, per-store API keys, Hyva and Luma compatible. Magento 2.4.4 - 2.4.8, PHP 8.1 - 8.4.
Engineered for magento 2 indexnow, magento 2 bing indexing, magento 2 yandex submission — ships with sensible defaults, full admin controls, and zero JavaScript bloat. Works identically on Hyva and Luma; passes Adobe MEQP with zero severity-10 violations.
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. Zero cron jobs, zero queues, zero clicking "submit URL" in Bing Webmaster Tools for every edit.
Panth IndexNow implements the IndexNow protocol inside Magento 2. When a merchant saves a product, category, or CMS page in admin, the module collects the changed URL and fires a single batched POST to api.indexnow.org at the end of the request — covering Bing, Yandex, Seznam, Naver and Yep in one call. Serves the required key-verification endpoint at /panth_indexnow/key, respects Magento URL rewrites and CMS URL suffixes, supports per-store API keys, and works identically on Hyva and Luma storefronts.
Get a free quote for your project in 24 hours — custom modules, Hyva themes, performance optimization, M1→M2 migrations, and Adobe Commerce Cloud.
Kishan SavaliyaTop Rated Plus on Upwork 100% Job Success • 10+ Years Magento Experience Adobe Certified • Hyva Specialist |
Panth Infotech AgencyMagento Development Team Custom Modules • Theme Design • Migrations Performance • SEO • Adobe Commerce Cloud |
Visit our website: kishansavaliya.com | Get a quote: kishansavaliya.com/get-quote
register_shutdown_function — observer stays out of the critical path, merchant's save button returns instantlyhost, key, and keyLocation/panth_indexnow/key — IndexNow's required verification URL, served as plain text from the admin-configured key?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 servicepanth_indexnow as its route's frontName so the module never shares a route registration with other modules (no controller resolution races)Panth_IndexNow::config) — only roles with the permission can see / save the settingsvar/log/system.log for post-mortemIndexNow 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:
api.indexnow.org fanouts to Bing, Yandex, Seznam, Naver and Yep in a single requestkeyLocation URL on your site proves ownership, so only you can submit URLs for your domainThe module handles the entire flow automatically — key hosting, URL collection, batching, submission, and error logging.
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) |
| 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.

Two settings, both at store-view scope: the master enable toggle and the API key. The inline comments link directly to Bing's IndexNow key generator and remind the merchant where the verification file is served.
| 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 |
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
app/code/Panth/IndexNow/ in your Magento installationPanth_Core is installed (required dependency)bin/magento module:enablebin/magento module:status Panth_IndexNow
# Expected output: Module is enabled
a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6) — or invent any 8+ character hex string; IndexNow generates new keys per-siteNavigate 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.
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:
register_shutdown_function. A merchant saving 5 product edits in one admin action gets 1 POST, not 5.| 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 |
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.
The module is fully scope-aware:
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}
| 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 |
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).
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.
https://yourstore.com/panth_indexnow/key — IndexNow crawlers hit this URL to verify domain ownership before trusting submitted URLs.
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.
No. The observer only enqueues URLs during save and fires the actual POST in register_shutdown_function — after Magento has already sent the response to the admin. The merchant's Save button returns at normal speed.
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.
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.
Yes. mage2kishan/module-core is a required dependency and is pulled in automatically by Composer. Core provides the admin tab layout and common utilities.
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.
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.
IndexNow allows up to 10,000 URLs per POST. The module batches automatically via array_chunk, so a burst of 15,000 saves produces two POSTs (10K + 5K). You're extremely unlikely to hit IndexNow's per-day limits from a normal eCommerce catalog.
| Channel | Contact |
|---|---|
| kishansavaliyakb@gmail.com | |
| Website | kishansavaliya.com |
| +91 84012 70422 | |
| GitHub Issues | github.com/mage2sk/module-index-now/issues |
| Upwork (Top Rated Plus) | Hire Kishan Savaliya |
| Upwork Agency | Panth Infotech |
Response time: 1-2 business days.
Looking for custom Magento module development, Hyva theme customization, store migrations, or performance optimization? Get a free quote in 24 hours:
Specializations:
Panth IndexNow is licensed under a proprietary license — see LICENSE.txt. One license per Magento installation.
Built and maintained by Kishan Savaliya — kishansavaliya.com — a Top Rated Plus Magento developer on Upwork with 10+ years of eCommerce experience.
Panth Infotech is a Magento 2 development agency specializing in high-quality, security-focused extensions and themes for both Hyva and Luma storefronts. Our extension suite covers SEO, performance, checkout, product presentation, customer engagement, and store management — over 34 modules built to MEQP standards and tested across Magento 2.4.4 to 2.4.8.
Browse the full extension catalog on the Adobe Commerce Marketplace or Packagist.
Ready to get your store indexed by Bing and Yandex in minutes, not days?
SEO Keywords: magento 2 indexnow, magento 2 bing indexing, magento 2 yandex submission, magento 2 instant indexing, magento 2 search engine ping, magento 2 bing webmaster, magento 2 url submission, magento 2 seo extension, magento 2 seznam indexing, magento 2 naver indexing, magento 2 yep search, magento 2 crawl optimization, magento 2 real-time seo, magento 2 product url submission, magento 2 category url submission, magento 2 cms page submission, hyva indexnow, hyva bing indexing, luma indexnow, luma bing submission, magento 2 seo automation, magento 2 webmaster tools, magento 2 api indexing, magento 2 search console automation, magento 2.4.8 indexnow, magento 2 PHP 8.4 indexnow, mage2kishan indexnow, panth infotech indexnow, kishan savaliya magento, hire magento developer upwork, top rated plus magento freelancer, custom magento development, adobe commerce indexnow, magento 2 bing key, magento 2 yandex key, magento 2 indexnow protocol, magento 2 multi-store indexnow, magento 2 url batching, magento 2 indexnow plugin, magento 2 search engine notification
| Module Category | SEO & Indexing |
|---|---|
| Best For | All Sizes |
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).
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.
https://yourstore.com/panth_indexnow/key — IndexNow crawlers hit this URL to verify domain ownership before trusting submitted URLs.
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.
No. The observer only enqueues URLs during save and fires the actual POST in register_shutdown_function — after Magento has already sent the response to the admin. The merchant's Save button returns at normal speed.
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.
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.
Yes. mage2kishan/module-core is a required dependency and is pulled in automatically by Composer. Core provides the admin tab layout and common utilities.
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.
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.
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.
Yes. The module ships dedicated Hyva templates built with Alpine.js and Tailwind CSS. Theme detection is automatic via 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.
No. Merchant-authored labels (anything other than empty, the product name, Image, main product photo, or the raw filename) are preserved. Only Magento's default placeholders get upgraded to template output.
No — any valid WhatsApp number works. However, a WhatsApp Business account is strongly recommended for commercial use (auto-replies, labels, catalog).
Yes, on the product detail page. When the module is enabled, the default gallery.phtml is replaced with the Panth gallery (one template for Hyva, another for Luma — chosen automatically).
Unlimited. Each form has a unique identifier and its own submissions scope.
No. The head block is cacheable="true" so the full JSON-LD payload is baked into full-page cache. Providers only run on uncached renders; cached hits serve the pre-rendered <script> tag with zero PHP evaluation.
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.
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.
Talk to Kishan directly — written quote, scope and timeline within 24 hours. No sales call.
IndexNow Submission for Magento 2