IndexNow is a real-time URL submission protocol that lets your store instantly notify search engines when content changes. Version 3.6.0 introduces a complete IndexNow implementation with an event-driven queue, cron-based processing, and a full queue management dashboard.
New to IndexNow? Read Why IndexNow | Bing Webmaster Tools
Basic Settings
| Setting | Default | Description |
|---|---|---|
| Enable IndexNow | Off | Master switch. Enables event hooks and URL queueing. An API key is required. |
| IndexNow API Key | — | Your unique identifier with search engines. Use Auto Generate Key to create one. |
| Cron Secret Key | Auto-generated | Protects your cron endpoint. Only requests with this key trigger submission. |
Queue & Retry Settings
| Setting | Default | Range | Description |
|---|---|---|---|
| Retry Limit | 5 | 1–50 | How many times a failed URL submission is retried before the item stays failed permanently. |
| Queue Success Retention (days) | 30 | 1–3650 | Successfully sent rows older than this are auto-deleted during cleanup. |
| Submission Log Retention (days) | 60 | ≥ retention days | Log records older than this are auto-deleted. Must be ≥ Queue Success Retention. |
| Auto-disable Failure Threshold | 0.8 | 0.0–1.0 | If the failure ratio exceeds this value across recent batches, the cron is auto-disabled. 0.8 = 80% failure rate triggers auto-disable. |
Step 1: Generate and Validate Your API Key
- Click Auto Generate Key — a cryptographically random hex key is generated.
- Click Save to store the key.
- Click Validate Key — the extension checks that the key file is accessible at
yourstore.com/{key}.txt.
The key file is automatically written to your web root during the first cron run. If validation fails, check that your web root is writable and that your domain is publicly accessible.
Step 2: Set Up the Cron Job
IndexNow submissions are processed asynchronously by a cron job. The cron URL is displayed in the admin panel:
https://yourstore.com/index.php?route=extension/hbseo/index_now/cron&key={your-cron-key}Add to your server crontab (run every 5 minutes):
bash
*/5 * * * * curl -s "https://yourstore.com/index.php?route=extension/hbseo/index_now/cron&key=YOUR_CRON_KEY" > /dev/nullOr using wget:
bash
*/5 * * * * wget -q -O /dev/null "https://yourstore.com/index.php?route=extension/hbseo/index_now/cron&key=YOUR_CRON_KEY"⚠️ Important: Use the Cron Secret Key in the cron URL, not the IndexNow API key. These are two separate keys.
If your host doesn’t allow crontab, use a cron service like EasyCron or cron-job.org to call the URL every 5 minutes.
Step 3: Run Initial Sync
When you first enable IndexNow, your existing products, categories, and pages are not yet in the queue. Use Sync All in the dashboard to queue all existing URLs for initial submission.
The sync runs in chunks of 100 records at a time and shows progress in the admin panel. Run it once after setup.
Event Hooks — Automatic Queue Population
The extension registers OpenCart admin event hooks that fire whenever you save or delete content. When an event fires, the URL is automatically added to the IndexNow queue.
Events covered:
- Product: add, edit, delete
- Category: add, edit, delete
- Manufacturer/Brand: add, edit, delete
- Information page: add, edit, delete
You can enable or disable individual hooks from the IndexNow dashboard panel without disabling IndexNow entirely. For example, if you bulk-import products via a third-party script, you might temporarily disable the product hooks and queue them manually via Sync All.
IndexNow Queue Manager
Navigate to the IndexNow → Queue Manager to view and manage all queued submissions.
Filter by: type, status, store, language, or search by ID/title/response
Status values:
| Status | Meaning |
|---|---|
| Pending | Waiting to be processed by the next cron run |
| Processing | Currently being claimed by a cron run |
| Success | Successfully submitted to IndexNow |
| Failed | Submission failed after all retries |
Queue actions:
| Action | Description |
|---|---|
| Force IndexNow | Immediately trigger a cron run for a specific row, bypassing normal scheduling |
| Retry Failed | Reset all failed rows to Pending and re-enable the cron |
| Delete Selected | Remove specific queue rows |
| Delete All | Clear the entire queue for this store |
| Clear Sent History | Remove successfully sent rows to keep the database clean |
Auto-Disable Protection
If the system detects a high failure rate (above your configured threshold) or too many consecutive failures, it automatically:
- Disables the cron runtime
- Sends an email alert to the store admin
To re-enable after fixing the issue:
- Resolve the underlying problem (verify the API key, check server connectivity)
- Click Retry Failed in the admin panel — this resets failed rows and re-enables the cron
Dashboard Statistics
The IndexNow section of the Dashboard tab shows:
- Pending / Sent / Failed queue counts
- Last cron run timestamp
- Consecutive failures count
- 24-hour activity chart (success vs. failed per hour)
- Overall success vs. failed totals