Developer notes
| Hook | Use |
|---|---|
update_product_post, update_category_post, update_page_post |
Queue the storefront URL of the saved object. |
tools_change_status |
Status switched in a list: the URL is queued (also when the object is no longer public). |
delete_product_pre, delete_category_pre |
Queue the URL before the object is deleted. |
update_promotion_post, clear_cache_post |
Move the site change time, the lowest Last-Modified of every page. |
Frontend post controllers products.post.php and categories.post.php (mode view) add Last-Modified and answer 304.
Tables
Section titled “Tables”?:kv_ixn_queue: URL (unique by MD5), host, object type and id, time added, tries.?:kv_ixn_log: one row per request: host, endpoint, number of URLs, HTTP code, result (S sent, R retry, E error), message, first five URLs. The newest 500 rows are kept.
Request
Section titled “Request”One POST per host to https://<endpoint>/indexnow with Content-Type: application/json:
{"host": "example.com", "key": "<32 hex>", "keyLocation": "https://example.com/<key>.txt", "urlList": ["https://example.com/..."]}Up to 10 000 URLs per request.
Dispatches
Section titled “Dispatches”| Dispatch | Purpose |
|---|---|
kv_indexing_booster.manage |
Admin page. |
kv_indexing_booster.send, .queue_all, .submit, .new_key, .clear_queue |
Admin POST actions. |
kv_indexing_booster.cron |
Console, or HTTP with cron_password. Listed in schemas/permissions/trusted_controllers.post.php. |
index.php?dispatch=kv_indexing_booster.key |
The key as text, used as key location when the root is not writable. |
License gate
Section titled “License gate”Without an active license nothing is queued or sent and no header is added.