IndexNow API for Ecommerce: Instant Indexing for Price, Inventory, and New Products
IndexNow tells Bing, Yandex, Naver, Seznam, and Yep about your URL changes within minutes instead of waiting weeks for crawl. Here's why ecommerce stores benefit more than any other site type — and how to implement it in 30 minutes.
IndexNow is a free open protocol that lets you push URL changes to participating search engines instead of waiting for them to crawl and discover the change on their next pass. It's supported by Bing, Yandex, Naver, Seznam, and Yep — collectively covering meaningful traffic share in most international markets. Google doesn't officially support IndexNow at the protocol level, but Microsoft has stated that all major search engines except Google now process IndexNow submissions.
For ecommerce, IndexNow is more valuable than for almost any other site type, because ecommerce sites have time-sensitive URL changes that benefit enormously from instant indexing: price drops, inventory restocks, new product launches, and discontinued items. This guide explains exactly why it matters for ecommerce, how to implement it on Shopify, WooCommerce, and custom Next.js stores, and the rate-limit guardrails to avoid getting your submissions throttled.
Why Ecommerce Benefits More Than Most Site Types
Price drops disappear quickly
When you discount a product 30% for a flash sale, the rich snippet in search results may still show the old price for days or weeks until Google or Bing re-crawls. By that point, the sale may be over. IndexNow can push the price-change URL to Bing within minutes so the discounted price shows in SERPs while the promo is live.
Inventory status affects SERP visibility
If a popular product goes out of stock, Google and Bing may stop showing it in shopping results because the Product schema's availability field shows OutOfStock. When you restock, you want that change reflected immediately. IndexNow accelerates the re-indexing.
New product launches need to rank fast
For seasonal products, time-limited collaborations, or trend-driven inventory, waiting weeks for crawl discovery means missing the window. IndexNow gets new product URLs into Bing within minutes — useful even when your traffic is mostly Google-organic, because Bing/Yandex/Naver still drive measurable revenue for many stores.
Discontinued products need to drop fast
When you delete a product, the URL stays in search engine indexes returning 404s for weeks. Users click through to 404 pages, hurting trust. IndexNow can submit the 404'd URL to expedite removal from the index.
The 4-Step Implementation
Step 1: Generate an API key
Generate a long random string (8–128 hex characters). This is your unique IndexNow key — it's the bearer credential that proves you own the domain. Most teams use a UUID, a SHA-256 hash of a secret, or any 32+ character hex string.
// Example: generate a 32-character hex key
node -e "console.log(require('crypto').randomBytes(16).toString('hex'))"
// 7a8f9b2c1d4e3f5a6b7c8d9e0f1a2b3c
Step 2: Host the key file at your domain root
Place a text file at https://yourstore.com/{your-key}.txt containing the key as its only content. This is how IndexNow verifies you control the domain.
// File: public/7a8f9b2c1d4e3f5a6b7c8d9e0f1a2b3c.txt
// Contents:
7a8f9b2c1d4e3f5a6b7c8d9e0f1a2b3c
Step 3: Submit URLs via the IndexNow API
POST to any IndexNow endpoint (https://api.indexnow.org/indexnow is the unified endpoint that forwards to all participating engines):
POST https://api.indexnow.org/indexnow
Content-Type: application/json
{
"host": "yourstore.com",
"key": "7a8f9b2c1d4e3f5a6b7c8d9e0f1a2b3c",
"keyLocation": "https://yourstore.com/7a8f9b2c1d4e3f5a6b7c8d9e0f1a2b3c.txt",
"urlList": [
"https://yourstore.com/products/cobalt-classic-shirt",
"https://yourstore.com/products/premium-leather-belt"
]
}
You can submit up to 10,000 URLs per request. Successful submissions return HTTP 200; rate-limit issues return 429; invalid keys return 403.
Step 4: Wire it into your inventory and content events
The implementation pattern that matters: trigger IndexNow submissions from the events that actually change content. Don't fire IndexNow on every page render — that defeats the purpose and wastes your rate-limit budget.
Trigger IndexNow on:
- Product create / publish
- Product update (price change, title change, description change)
- Product unpublish or delete
- Inventory restock from 0 to in-stock
- Collection page changes (when products are added/removed)
- Blog post publish / update
- Sitemap regeneration (for new categories or landing pages)
Platform-Specific Implementations
Shopify
Shopify doesn't have a native IndexNow integration, but the Webhooks API gives you the events you need. Subscribe to products/create, products/update, inventory_levels/update, and products/delete. In your webhook handler (Cloudflare Worker, Vercel function, or Shopify App), construct the affected URL(s) and POST to IndexNow.
// Cloudflare Worker handling Shopify webhook
async function handleProductUpdate(product) {
const url = `https://yourstore.com/products/${product.handle}`;
await fetch('https://api.indexnow.org/indexnow', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
host: 'yourstore.com',
key: INDEXNOW_KEY,
keyLocation: `https://yourstore.com/${INDEXNOW_KEY}.txt`,
urlList: [url],
}),
});
}
WooCommerce
WooCommerce has WordPress action hooks for save_post_product, woocommerce_update_product, woocommerce_product_set_stock_status, and similar. Hook into these in a custom plugin (or use the IndexNow WordPress plugin, which handles this for you):
add_action('save_post_product', function($post_id) {
$url = get_permalink($post_id);
wp_remote_post('https://api.indexnow.org/indexnow', [
'headers' => ['Content-Type' => 'application/json'],
'body' => json_encode([
'host' => 'yourstore.com',
'key' => INDEXNOW_KEY,
'keyLocation' => 'https://yourstore.com/' . INDEXNOW_KEY . '.txt',
'urlList' => [$url],
]),
]);
});
Next.js (headless)
For a headless storefront on Next.js (Hydrogen, Shopify SFAPI, BigCommerce GraphQL, custom), the cleanest approach is a webhook endpoint that your headless CMS or backend can call when products change:
// app/api/indexnow/route.ts
export async function POST(request: Request) {
const { urls } = await request.json();
const res = await fetch('https://api.indexnow.org/indexnow', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
host: process.env.STORE_DOMAIN,
key: process.env.INDEXNOW_KEY,
keyLocation: `https://${process.env.STORE_DOMAIN}/${process.env.INDEXNOW_KEY}.txt`,
urlList: urls,
}),
});
return Response.json({ submitted: urls.length, status: res.status });
}
Rate-Limit Guardrails to Avoid Suppression
IndexNow has implicit rate limits, and submitting too aggressively can get your domain suppressed. Best practices:
- Don't submit unchanged URLs. If a product's price didn't change, don't fire IndexNow on the periodic sync job.
- Batch submissions where possible. If 50 products updated in a 10-minute window, send one batch request with 50 URLs instead of 50 individual requests.
- Don't fire on every page render. IndexNow is for content changes, not page views.
- Don't submit URLs that 404 or 5xx. Check status first; submitting broken URLs erodes trust.
- Don't submit URLs with no canonical content. Search variants, infinite scroll fragments, and parameterized URLs shouldn't be submitted.
- Throttle bulk operations. If you're importing 10,000 products, batch the IndexNow submissions across hours, not minutes.
How to Verify It's Working
Bing Webmaster Tools shows IndexNow submission status in the Indexing > IndexNow report. You'll see total submissions, accepted, and rejected with reason codes. Yandex Webmaster has a similar report.
For a faster smoke test: submit a URL via IndexNow, then wait 5–15 minutes and check Bing's site: operator for the URL. If your IndexNow is working and the URL is crawlable, it should appear in the Bing index within an hour for most stores.
The ROI Question
For most US-focused ecommerce stores, Bing accounts for 5–10% of organic traffic. Yandex, Naver, and Seznam are larger in their respective markets (Russia, South Korea, Czech Republic). If your store has any international traffic share, IndexNow's reach is meaningful. If you're 100% US-focused on Google traffic, the direct revenue impact is modest — but the implementation is so cheap (a few hours of dev work, ongoing cost: free) that it's still worth doing for the 5–10% Bing uplift alone.
StoreVitals checks for IndexNow key-file presence and proper configuration as part of its SEO pillar audit. Run a free scan to see whether your store has IndexNow set up correctly.