IndexNow Implementation Without Submission Theater
A successful submission means a participating engine received the notification. It does not mean the URL was crawled, indexed, ranked, or sent to Google.
An IndexNow implementation guide for Node and Vercel covering keys, URL batches, deployment hooks, responses, retries, limits, and Google caveats.
01 / Contract
IndexNow is a change notification protocol
The publisher notifies participating search engines that a URL was added, updated, or deleted. The engine acknowledges receipt and decides what to do next. An HTTP 200 means the URL submission was received; it is not a crawl receipt, index verdict, or ranking event. Keeping that boundary in logs and dashboards prevents an operational signal from becoming a marketing claim.
Participating engines share valid submissions within the protocol. Google is not documented as a participating IndexNow endpoint, so the implementation should be described as Bing-compatible secondary discovery. Google discovery still depends on crawlable links, sitemaps, recrawl requests where appropriate, and its own systems.
02 / Ownership
Host a stable key file on the canonical host
The key must meet the protocol’s character and length rules and be available in a text file that establishes ownership. Root placement supports the broadest URL scope and is simpler to reason about. A key under a subpath can only authorize URLs within the documented path boundary.
Generate and store the key as deployment configuration, but publish only the expected verification value in the expected file. Do not print unrelated environment values in build logs. Validate the production key URL from outside the platform and confirm that canonical host redirects do not move it to a different ownership scope.
| Status | Meaning | Action |
|---|---|---|
| 200 | Submission received | Record success; do not retry |
| 202 | Received; key validation pending | Record pending state |
| 400 | Invalid request | Fix payload |
| 403 | Key invalid or unavailable | Verify key URL |
| 422 | Host or key mismatch | Fix ownership scope |
| 429 | Too many requests | Back off and retry |
03 / Batching
Submit the changed canonical set, not the entire site on every deploy
The protocol accepts up to 10,000 URLs in one POST. Build the list from a deployment diff or content manifest, normalize hosts and paths, remove duplicates, exclude drafts and aliases, and include deleted canonical URLs when the publishing event calls for removal notification. A small content release should produce a small deterministic batch.
For a static Vercel deployment, run submission after a confirmed production promotion, not during preview builds. Preview hosts are not canonical and should never enter the batch. Keep production submission behind explicit release authorization because it mutates an external discovery system and creates noise if a deployment is rolled back.
04 / Reliability
Retry transport failures without creating a submission loop
Classify deterministic client errors separately from temporary responses. A malformed payload, invalid key, or host mismatch needs a code or configuration fix; immediate repeated requests only increase noise. Rate limits require bounded exponential backoff and a maximum attempt count. Persist a hash of the canonical batch so a job restart can identify an already accepted submission.
Log the endpoint, status, timestamp, URL count, batch hash, and sanitized error message. Do not log the full environment or thousands of URLs by default. A dry-run mode should output counts and a bounded sample, then exit without network mutation. This makes the release artifact reviewable before the confirmation boundary.
05 / Verification
Verify discovery downstream with the engine’s own evidence
After an accepted submission, use Bing Webmaster Tools or subsequent verified crawler requests to study discovery. Check whether the canonical URL returns the expected content and whether the sitemap and internal links agree. If indexing does not follow, investigate quality, canonicalization, status, directives, and duplication rather than resubmitting continuously.
For Google, use Search Console and the URL Inspection tool or API under their documented limits. Do not use Google’s Indexing API for ordinary articles; its supported use is restricted to job posting and livestream pages. No notification protocol can compensate for a page that is thin, duplicated, blocked, or not worth indexing.
- 01Crawl and Indexation Audit Checklist
A crawl and indexation audit checklist for discovery, status codes, robots controls, canonicals, sitemaps, renderability, logs, and Search Console states.
- 02Low Internal Links: Detection, Fix, and Validation
Low Internal Links diagnosis uses page-specific Atlas evidence, intent review, a narrow technical fix, false-positive checks, and claim-safe validation.
- 03Missing Canonical: Detection, Fix, and Validation
Missing Canonical Tag diagnosis uses page-specific Atlas evidence, intent review, a narrow technical fix, false-positive checks, and claim-safe validation.
- 01IndexNow protocol documentation
Key requirements, single and batch submission formats, the 10,000 URL batch limit, ownership verification, and response meanings.
Checked 2026-07-20 - 02Bing: Get started with IndexNow
Bing-compatible setup guidance, key hosting, endpoints, and the discovery-notification purpose of the protocol.
Checked 2026-07-20 - 03Google: Ask Google to recrawl
Google’s recrawl options, timing caveat, and absence of a guarantee that a request produces inclusion.
Checked 2026-07-20