{
  "slug": "ranking-movement",
  "name": "Ranking movement (gainers and losers)",
  "aliases": [
    "Movers",
    "Gainers and losers",
    "Movement report"
  ],
  "definition": "The classification of each keyword's period-over-period change into a gainer, a loser or flat, using a fixed relative threshold and the metric's own good direction.",
  "category": "Search performance",
  "type": "derived metric",
  "unit": "keywords classified as gainers, losers or flat",
  "direction": "neutral",
  "verification": "verified",
  "calculation": "A row is classified a gainer when its relative change moves at least 10% in the metric's good direction and a loser when it moves at least 10% the other way. Direction is metric-aware: for clicks and impressions a rise is a gain, for average position a FALL is a gain because lower is better. Each side is then sorted on the delta in the metric's own units, signed, not its absolute value, best improvement first for gainers and worst first for losers, and cut to the top 20. Membership is decided on the relative change; the ordering and the cut are decided on the unit change.",
  "aggregation": "Per keyword, from the two-period join. The flat count is whatever is left after the two TRUNCATED lists, rows are excluded from the classification only when their delta is null, so the three numbers add up to the matched rows without describing them: the 21st gainer is counted as flat.",
  "grain": "One keyword (or the single site row when run at site scope) × the pair of periods.",
  "dimensions": [
    "query",
    "page",
    "intent",
    "category"
  ],
  "requiredFilters": [
    "date range",
    "comparison range"
  ],
  "sources": [
    "search-console"
  ],
  "reports": [
    "cannibalization-report",
    "content-decay-report",
    "keyword-ranking-report",
    "serp-volatility-report",
    "weekly-search-report"
  ],
  "skills": [
    "rank-movement-review",
    "weekly-search-report",
    "content-decay-refresh",
    "anomaly-investigator"
  ],
  "verbs": [
    "seo_ranking_movement_report"
  ],
  "rungs": [
    "R2"
  ],
  "levers": [
    "L3"
  ],
  "questions": [
    "Which keywords gained the most rankings this month?",
    "What were our biggest click losers versus last month?",
    "Show me gainers and losers by position"
  ],
  "interpretation": "The what-moved table. The ±10% cut is a product convention that keeps the list readable, and the direction handling is what stops a keyword climbing from position 8 to 3 being filed as a loss. Treat the lists as candidates for a cause hunt, not as a set of findings.",
  "caveats": [
    "Flat is not a synonym for did not move. It is the arithmetic remainder after each list is cut to 20, so every mover beyond the twentieth is counted as flat. On a wide keyword set the flat number is mostly movement.",
    "The ±10% threshold is a fixed convention, not a statistical test, a ten percent move on three clicks clears it as readily as one on three thousand.",
    "Keywords present in only one of the two periods carry a null delta and are dropped from the classification entirely, they are in none of the three groups, and only their counts are reported. The response's own unmatched caveat says those deltas are measured against zero; they are not.",
    "The lists are ranked on the unit delta while membership is decided on the relative change, so the ordering is not the ordering of the ±10% test.",
    "At site scope there are no per-keyword rows at all and the single aggregate is labelled as the site total."
  ],
  "freshness": "1 to 2 days behind, Google's own reporting lag. Any answer touching the last 48 hours says so on the card.",
  "failureModes": [
    "Narrating the top of the gainers list as an achievement without the significance gate.",
    "Reading a position gainer as a rise because the delta is negative.",
    "Quoting the flat count as the number of keywords that held steady.",
    "Assuming the list covers every keyword rather than the top rows of each side."
  ],
  "notSameAs": [
    {
      "slug": "real-noise-verdict",
      "why": "Movement classification is a fixed ±10% cut on the relative change; a significance verdict is a two-sample test at an alpha. Being a gainer says nothing about whether the change is distinguishable from noise, and no effect size is computed on either side."
    },
    {
      "slug": "serp-volatility-index",
      "why": "Opposite subjects. This sorts your own keywords into gainers and losers, it describes you. A volatility index describes how much the results pages moved across a tracked market, including every domain on them. A quiet market with heavy movement on your set means something you did; a loud market with the same movement usually does not. Reading either one alone answers the update question wrongly.",
      "mirroredFrom": "serp-volatility-index"
    }
  ],
  "related": [
    "pop-delta",
    "pop-delta-pct",
    "avg-position",
    "clicks",
    "serp-volatility-index"
  ],
  "workflows": [],
  "lastVerified": "2026-08-04"
}