Drupal is a registered trademark of Dries Buytaert
Protected Pages 3.0.0 Major update available for module protected_pages (3.0.0). Commerce Core 3.3.8 Minor update available for module commerce (3.3.8). Layout Builder Reorder 2.0.1 Minor update available for module layout_builder_reorder (2.0.1). Ban 1.1.0 Minor update available for module ban (1.1.0). Field Formatter Range 2.0.0 Major update available for module field_formatter_range (2.0.0). Field Formatter Range 8.x-1.8 Minor update available for module field_formatter_range (8.x-1.8). UI Patterns (SDC in Drupal UI) 2.0.18 Minor update available for module ui_patterns (2.0.18). Varbase FAQs 9.2.1 Minor update available for module varbase_faqs (9.2.1). Search API Solr 4.3.11 Module search_api_solr updated after 14 months of inactivity (4.3.11). Provus Mega Menu Module provus_mega_menu crossed 1,000 active installs.

Index Now

929 sites Security covered
View on drupal.org

This module automatically notifies search engines like Bing, Amazon, and Yandex when content on your website is created, updated, or deleted. It can also be configured to handle e-commerce products and stores. This helps ensure your new and changed content is quickly discovered by search engines.

Index Now submits requests to search engines when content (nodes /
taxonomy terms) has been created, updated or deleted on your website.
The module provides a service that you can use to send more requests
according to your needs.
The submodule Index Now Commerce extends the main module to also handle
commerce stores and products.

Supported search engines:

  • Amazon
  • IndexNow
  • Microsoft Bing
  • Naver
  • Seznam.cz
  • Yandex
  • Yep

Note: Since November 2021, compatible search engines immediately share all
submitted URLs with every other compatible search engine.
This means that if you choose to notify one search engine,
you notify every other one in the same time.

Requirements

The 3.x module requires Config split in order to activate it only on a production environment.

Not required anymore in 4.x but still recommended.

Installation

3.1.x

Install as you would normally install a contributed Drupal module. Visit
https://www.drupal.org/node/1897420 for further information.

For commerce stores and products you also need to enable the
index_now_commerce sub-module.

4.0.x

The 4.0.x branch splits entity type support into dedicated sub-modules.
After enabling the main index_now module, enable the sub-module(s) for each entity type you want to submit to IndexNow:

  • index_now_node — nodes
  • index_now_term — taxonomy terms
  • index_now_commerce_product — Commerce products (requires Drupal Commerce)
  • index_now_commerce_store — Commerce stores (requires Drupal Commerce)

Configuration

Go to /admin/config/services/index_now and choose the default search engine
you want to interact with.
You can also exclude content types, taxonomy vocabularies and/or commerce
stores/products types for which you don't want to use Index Now.

This module has to be used only on a production environment (search engines
can't crawl your local machine and there is no reason to index a preprod env).

After configuring Index Now (/admin/config/services/index_now), you need to
define a configuration for your production environment.
Go to admin/config/development/configuration/config-split, add a configuration
split setting if you don't have already one for your production environment,
then add a directory path for this config and enable "Index Now" in the
"Complete split" > "Modules" section.
Don't forget to export your configuration after submitting the form.

An API key has been generated for you when you installed/updated the module.
You can override the API key value if needed in your settings(.local).php:

$config['index_now.settings']['api_key'] = 'whatever-you-want';

If your site needs to index under a specific URL (for example, in a headless
CMS), you may specify an override in your settings(.local).php:

// All internal routes will be indexed using https://example.com as base url.
$settings['index_now.base_url'] = 'https://example.com';

When this setting is configured, the API key verification file must be served
by the public domain. Drupal cannot serve it there automatically, so you must
create it manually. First, retrieve your API key:

drush config:get index_now.settings api_key

Then create the following file on your public domain:

  • Filename: index_now_api_key_{your-api-key}.txt
  • Content: {your-api-key}

Important: $settings['index_now.base_url'] only replaces the scheme and
host of the URL submitted to search engines — it does not alter the path. The
URL path structure must be identical on both your internal Drupal domain and
the public domain. For more complex URL transformations, use
hook_index_now_url_alter — see the Hooks section below.

Service

The module provides a service that can be used to index other URLs than just
nodes, taxonomy terms and commerce stores/products pages:

\Drupal::service('index_now.indexnow')->sendRequest($your_url);

Note: $your_url must be an absolute URL hosted on your website.

Hooks

The module exposes two hooks, documented in index_now.api.php.

hook_index_now_url_alter(&$url, $context)

Alter the URL submitted to search engines before it is sent. Useful when your
frontend uses a different path structure than Drupal (e.g. headless CMS). The
$context array may contain an entity key holding the entity that triggered
the ping, allowing you to build the public URL based on entity type, bundle, or
any other property:

function example_index_now_url_alter(string &$url, array $context): void {
  $entity = $context['entity'] ?? NULL;
  if ($entity instanceof \Drupal\node\NodeInterface) {
    $url = 'https://example.com/' . $entity->bundle() . '/' . $entity->id();
  }
}

hook_index_now_key_location_url_alter(&$key_location)

Alter the URL of the API key verification file sent to search engines. Useful
when the key file is served from a different location than the base URL (e.g.
a CDN):

function example_index_now_key_location_url_alter(string &$key_location): void {
  $key_location = 'https://cdn.example.com/index_now_api_key_abc123.txt';
}

Drush command

In case you would need to regenerate the API key you can use the drush command:
drush index_now:keygenerate or its alias drush indnowkeygen

Maintainers

Current maintainers:

Activity

Total releases
12
First release
Jan 2025
Latest release
1 month ago
Releases (12 mo)
11 ▲ from 1
Maintenance
Active

Release Timeline

Releases

Version Type Release date
3.1.11 Stable Jun 13, 2026
3.1.10 Stable May 28, 2026
4.0.0-alpha2 Pre-release May 27, 2026
3.1.9 Stable Apr 27, 2026
4.0.0-alpha1 Pre-release Apr 27, 2026
3.1.8 Stable Apr 21, 2026
4.0.x-dev Dev Apr 19, 2026
3.1.7 Stable Apr 19, 2026
3.1.6 Stable Apr 19, 2026
3.1.5 Stable Mar 9, 2026
3.1.4 Stable Feb 8, 2026
3.1.3 Stable Jan 30, 2025