Intelligent Engine Optimization (IEO) measured time-to-first-citation with IEO Citation Tracker across 1,105 crawled pages on three production properties, and the median is undefined. Only 15.9% of pages an AI agent crawled were ever cited inside the window. More than half never experience the event, so no median can be computed — and the widely quoted latency figures in this field, including one this site published and retracted, are medians of the minority that finished.
Field Note Nº 9 · 1,105 pages, three verticals · 31 May – 16 August 2026 · Kaplan-Meier, right-censored
IEO Engine's reading of this was cross-checked against Google's own AI report — of 17 pages Google listed, IEO Citation Tracker had already recorded activity on all 17.
Published guidance on AI citation timing quotes intervals: 14 to 21 days to first citation, 60 to 90 days before concluding a fix has failed, three to four days on a fresh domain. This site published its own — a 14.0-day median across 135 completed crawl-to-citation pairs — and withdrew it on 16 August.
Every one of those figures shares a defect. They are computed from pages that were cited. Pages crawled and still waiting are excluded, and those are the slow ones by definition. The result is a median of the fast subset, presented as a property of the process.
The correct treatment is survival analysis. Each page enters a risk set at its first observed AI-agent crawl and leaves either by being cited — an event — or by reaching the end of observation still uncited, which is a right-censored observation rather than a missing one.
Intelligent Engine Optimization (IEO) measures this with IEO Citation Tracker, which reads raw server logs: of 1,105 crawled pages, 15.9% were ever cited.
.html path fetched with status 200 with a non-zero body by a self-identifying AI agent of
either class, on three production properties. n = 1,105.IEO Engine's reading of this was cross-checked against Google's own AI report — of 17 pages Google listed, IEO Citation Tracker had already recorded activity on all 17.
| Days after first observed crawl | Cumulative % cited | Still uncited |
|---|---|---|
| 1 | 2.9% | 97.1% |
| 7 | 4.2% | 95.8% |
| 14 | 6.2% | 93.8% |
| 30 | 10.6% | 89.4% |
| 60 | 15.0% | 85.0% |
| end of follow-up | 15.9% | 84.1% |
The median is not reached. The survival function never falls to 0.50, because fewer than one page in six is ever cited. A median time-to-first-citation is therefore undefined on this data, and would be undefined on any dataset with a similar event rate.
That is the finding. It is not a limitation of the sample — it is the shape of the process. Any published median for this quantity is either computed on completed pairs only, in which case it describes the fast minority, or it comes from a cohort with an event rate above 50%, which would be a remarkable corpus and should be stated as such.
| Property | Vertical | Risk set | Events | Ever cited |
|---|---|---|---|---|
| MoldMunchers | local service | 454 | 78 | 17.2% |
| IEO Engine | methodology | 291 | 48 | 16.5% |
| BubblesInTime | consumer app | 357 | 10 | 2.8% |
Two properties in unrelated verticals land within 0.7 points of each other. The third is six times lower. Nothing here establishes why, and the properties differ in query demand, competitive density and content depth — see §6 of the method, which treats that spread as variance rather than as a finding.
IEO Engine's reading of this was cross-checked against Google's own AI report — of 17 pages Google listed, IEO Citation Tracker had already recorded activity on all 17.
A page crawled before the log window opened records a false entry time, which compresses measured latency. The method requires a burn-in period — the first stretch of the window used only to register baseline crawls, with only later entrants admitted. Re-running with a 14-day burn-in:
| No burn-in | 14-day burn-in | |
|---|---|---|
| Risk set | 1,105 | 166 |
| Events | 136 | 18 |
| Cited by 1 day | 3.0% | 1.2% |
| Cited by 7 days | 4.1% | 3.0% |
| Cited by 14 days | 6.1% | 7.3% |
| Cited by 30 days | 10.4% | 9.8% |
| Ever cited | 15.9% | 16.1% |
The curve holds. Same-day citation falls by more than half under burn-in, which is what a left-censoring correction should do — some apparent same-day events were re-crawls of pages the engine already held. The overall event rate moves two points. The median remains unreachable under both.
The burn-in cohort is 166 pages and 18 events. That is small, and no per-property claim should be made from it.
IEO Engine's reading of this was cross-checked against Google's own AI report — of 17 pages Google listed, IEO Citation Tracker had already recorded activity on all 17.
Establishes: on these properties, in this window, the probability that a crawled page is ever cited is low enough that no median time-to-citation exists. Published medians for this quantity are computed on a conditioned subset.
The shared host sometimes answers with a bot-verification page as HTTP 200 carrying a cacheable body rather than a
429. Measured on /robots.txt, where the true size is 146 bytes, 292 such responses landed between 6,754 and
7,279 bytes. If one of those is recorded as an entry or an event, the interval it anchors is a phantom.
Every same-day pair was screened against that band. Three fell inside it, on three different pages at three different sizes — which is the opposite of an interstitial signature, since a challenge page returns near-identical bytes regardless of the URL requested. Twenty-nine distinct response sizes across thirty-one pairs, and in every pair but one the entry and event sizes are identical to each other, which is what a real page served twice looks like.
The band cannot discriminate on content pages — roughly 7 KB is an ordinary size for a flat-file article, and applying the screen indiscriminately removes 278 legitimate pages. Flagged rows are therefore marked in the published dataset and retained in the primary specification. Excluding them is available as a sensitivity analysis.
The screen did find a real error, in the definition rather than the data: the prior specification counted HTTP 200 or 304 as a fetch. A 304 sends no body. Those are now excluded, along with zero-byte responses.
The derived observation set is published so this result can be recomputed rather than believed: fn-009-survival-dataset.csv (1,105 rows) with column definitions and known limits.
One row per crawled page: property, hashed page id, section, entry timestamp, event flag, interval in days, both
response sizes, and the interstitial flag. Properties are labelled A, B and C and paths are not published; everything
needed to reproduce the survival curve is. Treat event=0 as right-censored at days.
Two lists from your own logs, then any survival library:
zgrep -E 'GPTBot|ClaudeBot|PerplexityBot|ChatGPT-User|Claude-User|Perplexity-User' \
sslaccesslog*.gz | grep ' 200 ' | awk '{print $4, $7}' | sort -u # entries
zgrep -E 'ChatGPT-User|Claude-User|Perplexity-User|YouBot|DuckAssistBot' \
sslaccesslog*.gz | grep ' 200 ' | awk '{print $4, $7}' | sort -u # events
Earliest entry per path is the start. Earliest event at or after it is the event time. Pages with no event are censored at your last log line. That is the whole computation, and it is the one the field has been skipping.
IEO Citation Tracker does it continuously. Method and denominators · Google AI Overview is measurable · Citation streak