processed_organic_p¶
SQL type: SimpleAggregateFunction(anyLast, Nullable(Float32))
Table: keywords.keywords_data_local
Last validated: 2026-05-21
What it is¶
The fraction of clicks that go to organic results (vs. paid ads / shopping / etc.) for a keyword. Range [0.0, 1.0]. Sourced from JS (the only clickstream-grade signal we have), with overrides for keywords where the JS data is unreliable or absent.
How it's computed¶
In processing.py around L1997–L2020. Priority:
js_organic_pif present and valid (> -1) — the JS clickstream measurement.0.95override for domain keywords — whenis_domain(keyword)is true AND JS is missing/invalid, default to 95% organic. Rationale: a domain-style query (e.g.youtube.com) is overwhelmingly satisfied by an organic result for that exact domain, not by ads.0.95branded-keyword floor — branded keywords get a floor of0.95even when JS reports lower; this corrects for JS data that systematically under-counted organic for high-brand queries.nullif no JS data and not a domain keyword.
Edge cases¶
- JS is stale — the underlying clickstream data hasn't been refreshed since the Jumpshot one-time scrape (see Jumpshot source). For keywords that have shifted their organic/paid mix since then (e.g. ads expansion in a vertical),
processed_organic_pis lagging reality. - No JS, no domain match —
null; customer UI typically shows a dash. - Branded floor coercion — a keyword whose JS reports
js_organic_p = 0.7will be promoted to0.95if it's classified as branded. This is intentional (memory: this was a deliberate post-Jumpshot correction).
Downstream¶
- Surfaced directly in the product UI as "Organic %" or as part of the SERP-composition display.
- ES +
keywords_metrics_localupload paths.
See also¶
- Jumpshot source — primary input
- Central hub table
- processing.py — producer