Crawl Foundry
Position Tracking

Read keyword rankings without flattening their evidence

Rankings & Trends joins context-specific rank snapshots with current keyword metadata and calculated estimates. Read each field with its source, date, denominator, loaded basis, and handoff context before turning movement into an explanation or action.

Defined scope

Keep domain, keywords, market, device, depth, and cadence explicit.

Repeated evidence

Read current rank together with history, coverage, and landing-page context.

Verified decisions

Investigate the cause and confirm outcomes with another comparable measurement.

Treat a ranking row as a dated observation bundle

The Rankings report joins several fields that do not necessarily share one source date. Position, previous position, ranking URL, and owned Featured Snippet or AI Overview flags come from retained rank snapshots in the selected domain and SERP context. Search volume and CPC come from the current Keyword Database enrichment row. Tags come from the current workspace taxonomy. Estimated traffic is calculated when the report renders.

Keep these clocks separate. A new rank snapshot does not refresh search volume, and a tag edit does not change the historical observation. The row helps locate evidence; it is not a single provider record captured atomically.

ColumnCurrent meaning
KeywordNormalized lowercase tracker member, with current workspace tags where available.
PositionNewest retained own-domain organic rank inside the active window and exact SERP context.
ChangePrevious measured-day rank minus current rank. Positive means improvement.
TrendCompact point series when the loaded row carries history; server-paginated rows currently do not.
VolumeCurrent monthly search-volume estimate, not impressions from this tracking run.
CPCCurrent provider advertising estimate in USD, not organic value or account spend.
Estimated trafficKnown volume multiplied by the product CTR curve; ranks below 10 contribute zero.
SERP featuresOnly owned Featured Snippet and owned AI Overview flags from the latest rank snapshot.
URLThe own-domain URL attached to the latest retained rank snapshot.

Know which rows the table can reach

With a tracker selected, the server resolves that schedule's current direct selection or live list membership, bounded by the effective keywords-per-run limit. It then reads the two newest own-domain snapshot rows per candidate inside the current window and context, applies the selected cohort, sorts by current rank, and paginates the result. The current default membership ceiling is 500 keywords and the current page-size policy is up to 100 rows, although workspace policy can lower both.

In the Workspace fallback, no schedule-scoped page query runs. The table filters and paginates the overview rows already loaded in the browser, currently at most 100 by default. A workspace table and a selected tracker table can therefore have different reach even when they show the same domain and context.

  • The result count belongs to the active cohort filter after membership and text filtering.
  • Ranked rows sort from best rank downward; unranked rows sort after position 100.
  • Pagination changes table rows, not the overview history and movement datasets above it.
  • A surface truncation notice means a chart or workspace fallback is based on a bounded subset.

Read current and previous position by measured day

Current position is the newest retained observation in the selected window, not a claim that the latest schedule run completed fully. A null position means the own domain was not recorded within the fetched depth for that observation, or no qualifying snapshot exists. Top 10 acquisition cannot distinguish position 11 from position 100.

Previous position is the first retained observation from an older UTC day bucket. A second acquisition on the same day is not the comparison baseline. The overview model can search its bounded point series for the previous day, while the server-paginated table currently reads only the two newest rows. If both belong to the same day, the table can leave previous position blank even though older history exists. Use the history chart and run dates before calling that blank missing history for the keyword as a whole.

Displayed movementInterpretation
Up by NPrevious rank minus current rank is positive, so the rank number became smaller.
Down by NThe rank number became larger; a loss uses 101 as the display comparison.
±0Both measured ranks are equal.
No deltaThere is no usable previous value, including a newly observed ranking.
Dash positionNo current rank is stored within the acquired evidence.

Use cohort chips as exact predicates, not editorial labels

All includes every resolved tracker member. Top 3 requires a current rank from 1 through 3. Winners require both current and previous ranks and a smaller current number. Losers also require both ranks and a larger current number. Not ranked requires a null current position.

A newly ranking keyword is counted as New in the movement distribution but not as a Winner because no previous numeric rank exists. A lost keyword is counted as Lost and also appears under Not ranked, but not under Losers. These groups answer different questions and do not form one mutually exclusive five-part partition when used as table filters.

  • Changing the cohort writes the selection to the URL and returns to the first page.
  • The current table does not expose a free-text input; a keyword deep link can still carry an internal prefilter in reusable embeddings.
  • Cohorts compare stored ranks only. They do not account for demand, URL value, conversions, or business priority.

Read the keyword history chart as selected raw measurement days

The history chart above the table uses the bounded overview dataset, not every row returned through server pagination. It displays at most ten keyword series by default. The initial selection favors the highest calculated traffic, then the best current rank. The picker searches within the loaded overview rows, lets you replace series up to the effective limit, and can reset to that calculated default.

For each chosen keyword, the chart keeps the latest point on every UTC day represented in its bounded series. Missing days remain empty. The line visually connects across those gaps, but no rank is imputed. This differs from the aggregate Overview trend, which carries the last known rank forward onto a daily axis. The y-axis is reversed so a better, smaller position appears higher. Five base colors are reused with dashed strokes after the fifth series.

  • The current surface window is 30 days by default and each overview keyword carries up to 30 points.
  • A point is a retained observation, not proof of a successful full-cohort run.
  • The chart can omit tracker members beyond the overview keyword cap even when the table can page to them.
  • Connecting two points across a gap shows direction between observations, not the unmeasured path between them.
  • One measured day supplies a dot, not a reliable trend.

Keep the movement distribution on its own loaded basis

The movement strip also uses the bounded overview rows. Improved means both ranks exist and the current number is smaller. Declined means both exist and the current number is larger. New means current exists and previous is null. Lost means current is null and previous exists. Unchanged includes equal numeric ranks. Rows with neither current nor previous position are excluded from the strip's displayed basis.

The five counts are mutually exclusive within that measured basis, but the basis can be smaller than the selected tracker membership and smaller than the paginated table's result set. Copy its displayed count into any report that reuses the distribution. Do not combine chart percentages with a full table total unless the two bases are proven equal.

Separate rank, visibility, estimated traffic, demand, and CPC

A rank is an observed organic position within the acquired depth. Visibility is a cohort index that gives positions 1 through 10 fixed CTR weights and gives deeper or absent ranks zero. Estimated traffic applies the same curve to current known monthly search volume. Search volume and CPC are provider estimates from the Keyword Database, while CPC describes paid-search competition in USD rather than organic difficulty or the value of a visit.

These fields can prioritize inspection, but none is first-party performance. A rank improvement can produce no estimated-traffic change below position 10, and a keyword with unknown volume can have a measured rank but no estimate. Confirm clicks, sessions, conversions, revenue, and causal outcomes in the relevant first-party systems.

SignalDo not promote it to
PositionA universal Google rank or a cause.
VisibilitySearch Console impressions or domain-wide visibility.
Estimated trafficAnalytics traffic, forecast certainty, or revenue.
Search volumeDemand measured in the tracking run.
CPCOrganic difficulty, conversion value, or actual ad spend.

Use the ranking URL as observed ownership, not intended ownership

The URL column shows the own-domain URL attached to the latest snapshot. It can differ from the page the team intended to rank. Open it directly, then compare page purpose, canonical, indexability, internal links, content, and Site Audit evidence. A changed URL can be intentional consolidation, query reinterpretation, or instability; the row alone cannot choose the preferred owner.

A null URL can accompany a null rank or incomplete legacy evidence. It does not prove that the domain has no relevant page. Use the Pages and Cannibalization report to separate concurrent multiple URLs from URL switching across dates.

Verify context again when opening the stored SERP

Clicking a keyword opens the shared stored-SERP detail. That reader currently requests the Keyword Database default context when no context is passed, while the Rankings table is explicitly scoped to the selected tracker context. The detail view prints its own device, language, location code, acquisition date, and refresh count. Compare those facts before treating the reconstruction as the result page behind the selected rank.

The detail uses a full reconstruction when the stored payload supports one, falls back to a Top 10 list when reconstruction is incomplete, and shows an empty state when no current row is available. Its rank-history reader is domain-scoped but not SERP-context-scoped and deduplicates mixed contexts by day using the newest row. It can therefore answer a different question from the context-specific Rankings chart. Refresh hands off to the paid Keyword Database SERP flow; opening the detail itself does not buy data.

Audit freshness and completeness before interpreting movement

  • Confirm the selected tracker and the context fact line before reading rows.
  • Check the run ledger for terminal status, requested, fetched, no-data, failure, device, and cost fields.
  • Compare the row's captured time with the current enrichment dates for volume and CPC when scale affects the decision.
  • Treat a missing previous rank as unknown until same-day acquisitions and bounded history have been checked.
  • Record chart basis, table total, active cohort, page, and any truncation separately.
  • Do not infer that an unranked Top 10 observation is outside the Top 100.

Investigate a ranking change without turning the row into a verdict

1
Select the tracker and record domain, cohort membership mode, device, location, language, depth, window, and latest terminal run.
2
Choose the exact cohort filter and note whether its table total differs from the history or movement basis.
3
Open the keyword's current and previous measured-day ranks, captured times, current URL, and retained points.
4
Check whether the keyword is new, lost, numerically changed, unchanged, or simply missing a comparable previous day.
5
Verify the stored SERP's own printed context before using its layout, features, or results as evidence.
6
Inspect URL ownership, relevant competitor changes, result-layout changes, and separate Site Audit or first-party performance evidence.
7
Write the observation, hypothesis, approved action, and expected verification measurement as separate statements.
8
Measure again under the same contract and require a terminal run with understood coverage before claiming persistence or outcome.