{
  "slug": "actual-ctr",
  "name": "Actual CTR (keyword and page)",
  "aliases": [
    "Observed CTR",
    "Row CTR"
  ],
  "definition": "The click-through rate one keyword-and-page row actually earned in the window: its clicks divided by its impressions.",
  "category": "Content opportunity",
  "type": "rate",
  "unit": "share of impressions that clicked (0 to 1)",
  "direction": "higher-better",
  "verification": "verified",
  "calculation": "actualCtr = clicks / impressions for the single keyword-and-page row, rounded to four decimals. Rows with no impressions, non-positive impressions or no position are skipped rather than counted as zero.",
  "numerator": "The row's clicks",
  "denominator": "The row's impressions",
  "aggregation": "Row-level only. Rolling it up means re-pooling the clicks and impressions, not averaging the rates.",
  "grain": "One keyword × one page × the window.",
  "dimensions": [
    "query",
    "page",
    "brand",
    "intent",
    "device",
    "position"
  ],
  "requiredFilters": [
    "date range"
  ],
  "sources": [
    "search-console"
  ],
  "reports": [
    "ctr-opportunity-report",
    "search-opportunity-report"
  ],
  "skills": [
    "ctr-opportunity-audit",
    "cannibalization-check"
  ],
  "verbs": [
    "ctr_curve_model"
  ],
  "rungs": [
    "R2"
  ],
  "levers": [
    "L3"
  ],
  "questions": [
    "Which query and page combinations underperform their expected CTR?",
    "What CTR does this page get for this query?"
  ],
  "interpretation": "The measured half of the expectation gap. On its own it says little, a high rate at position 1 and a high rate at position 15 mean different things, which is why it is only ever read against the fitted expectation for the same cell.",
  "caveats": [
    "Expressed as a 0 to 1 fraction, unlike the Search Console average CTR measure, which is already a percentage.",
    "The position it is read against is an impression-weighted average over the window, so a row that moved between positions is measured against a blend.",
    "Rounded to four decimals, which flattens differences on very low-rate rows."
  ],
  "freshness": "1 to 2 days behind, Google's own reporting lag. Any answer touching the last 48 hours says so on the card.",
  "failureModes": [
    "Comparing it to the percentage-scaled average CTR and reporting a hundredfold difference.",
    "Interpreting it without the position it was earned at."
  ],
  "notSameAs": [
    {
      "slug": "ctr",
      "why": "Average CTR is a warehouse measure on a 0 to 100 scale computed over whatever slice was queried; actual CTR is a 0 to 1 fraction computed in our own pass for one keyword-and-page row. They are different scales at different grains and cannot be substituted for each other."
    }
  ],
  "related": [
    "expected-ctr",
    "ctr-delta",
    "ctr-impact"
  ],
  "workflows": [],
  "lastVerified": "2026-08-04"
}