indexnowkit/verify
indexnowkit/verify is a Laravel package for validating IndexNow integrations. It offers straightforward checks for key-file accessibility and configuration, helping you catch setup errors early so search engines can trust your indexing requests and discover content reliably.
Feature / roadmap
verify.* is a quality gate, not plumbing. 0.4.0 makes that gate deterministic — the pre-flight no longer inherits the application's http.client, so an instrumented or proxy client that follows redirects can no longer silently neutralise verify.redirect, verify.max_redirects, the redirect-target host check and loop detection. That turns "which HTTP client happened to be bound" into an explicit config decision.Build vs buy
Measurement / data-quality decisions
<link rel="canonical"> now resolves against the document's <base href> (itself resolved against the page URL), as a crawler would. Previously, any site whose templates emit a <base> had canonicals computed against the fetched URL, failed to match, and was dropped as non-canonical. Treat this upgrade as recovering lost submissions, not as growth — instrument refusals before and after, or you will misread the delta.http.client, tracing/proxy visibility into verification is gone by design. The follow-on decision: source submission telemetry from the package's own events and the verify.transport line of check, not from the HTTP layer.Operational decisions
verify.time_budget is now read before verify.delay waits, so backoff can no longer overrun the visibility timeout of the queue job the budget exists to fit. Supports a decision to run submissions on the queue (Horizon/SQS) without duplicated work or extended leases.RobotsCache::key() now strips [, ], : from IPv6 hosts, matching the core's Retry\ForbiddenCounter. Strict PSR-16 stores stop rejecting the key and degrading to one robots.txt fetch per process.Dependency / extension-point policy
OptionalPackage::verify() directly; this package's VerifyServices::package() is now a pass-through. Zero action if you have no custom adapters; a one-line migration if you do.indexnowkit/core ^0.13 — upgrading this package is a core upgrade. Plan and pin the pair together.Consider adopting when:
<base href>, redirect semantics, and a budget that fits inside a queue job.Look elsewhere or defer when:
http.client from the pre-flight and states why; do not plan on it being reverted. POST submissions still honour http.client; verification does not. If that is a hard compliance line, this is a poor fit today.indexnowkit/core directly.For executives. This is the piece that makes "tell search engines immediately when a page changes" safe and boring. The submission call is trivial; the value is the pre-flight that stops us pinging engines about pages we shouldn't — duplicate/non-canonical URLs, redirects, robots-disallowed paths — plus scheduling that fits inside a queue job instead of blowing its timeout. 0.4.0 is a correctness release with no new product surface: the headline fix means sites whose templates emit a <base> tag stop silently losing their submissions, and the pre-flight can no longer have its redirect and host checks disabled by whichever HTTP client the app happens to bind. Upgrade cost is a core dependency bump (indexnowkit/core ^0.13), and — only if we maintain custom adapters — a one-line call move. The single trade-off to accept knowingly: pre-flight requests no longer pass through our instrumented/proxied HTTP client, so verification telemetry must come from the package's own logs and check output.
For engineering. VerifyConfig::transportConfig() drops http.client, and Adapter\VerifyServices::transport() ignores the client locator: the pre-flight always builds the core-discovered PSR-18 client with max_redirects: 0 and verify.timeout. The rationale is sound — PSR-18 gives no way to tell a handed-over client not to follow redirects, so a redirect-following client saw the final 200 and silently disabled verify.redirect, verify.max_redirects, the redirect-target host check and loop detection. Consequence: no proxy or instrumentation coverage on pre-flight; use the verify.transport line of check to see which client does what, and emit outcome telemetry from the package rather than the HTTP client. POST submissions still carry http.client, so proxying/instrumentation keeps applying there. Also in this release: relative canonical resolves against <base href> as a crawler does; verify.time_budget is sampled before verify.delay so delay + budget can't overrun the job's visibility timeout; RobotsCache::key() strips IPv6 reserved characters so strict PSR-16 stores no longer degrade to one fetch per process. Adapters should call OptionalPackage::verify() (core 0.13) directly — same object, same texts.
How can I help you explore Laravel packages today?