{
  "slug": "ctr-delta",
  "name": "CTR delta versus the curve",
  "aliases": [
    "Expectation gap",
    "CTR over/under-performance"
  ],
  "definition": "How far a keyword-and-page row's actual click-through rate sits above or below what this site's own fitted curve expects at that row's position.",
  "category": "Content opportunity",
  "type": "derived metric",
  "unit": "CTR points as a 0 to 1 fraction (positive means over-performing)",
  "direction": "higher-better",
  "verification": "verified",
  "calculation": "deltaCtr = actualCtr − expectedCtr, where the expectation comes from the fitted curve for that row's own branded × intent × device cell, evaluated at the row's average position. Rounded to four decimals.",
  "aggregation": "Row-level. A cell-level or site-level expectation gap would need both sides re-pooled, not the deltas averaged.",
  "grain": "One keyword × one page × the window.",
  "dimensions": [
    "query",
    "page",
    "brand",
    "intent",
    "device",
    "position"
  ],
  "requiredFilters": [
    "date range"
  ],
  "sources": [
    "search-console"
  ],
  "reports": [
    "content-decay-report",
    "ctr-opportunity-report"
  ],
  "skills": [
    "ctr-opportunity-audit",
    "content-decay-refresh"
  ],
  "verbs": [
    "ctr_curve_model"
  ],
  "rungs": [
    "R2"
  ],
  "levers": [
    "L3"
  ],
  "questions": [
    "Which pages earn fewer clicks than their position deserves?",
    "Where are we over-performing our own CTR curve?",
    "Which titles should we rewrite first?"
  ],
  "interpretation": "Both tails are useful and they are used differently: the negative tail is a rewrite worklist, the positive tail is a set of patterns worth copying. Either way it is a hypothesis about the snippet, and a rewrite is measured at day 7, 14 and 30 rather than credited on the spot.",
  "caveats": [
    "A negative gap is a candidate, not a diagnosis: mixed intent inside one query, a blended position, and results-page features all move it without the snippet being at fault.",
    "Rows whose position bucket is flagged low-confidence have an unreliable expectation, so their gap is unreliable too.",
    "When the row's exact cell had no fit, the gap is measured against a substituted curve and the substitution is reported on the row."
  ],
  "freshness": "1 to 2 days behind, Google's own reporting lag. Any answer touching the last 48 hours says so on the card.",
  "failureModes": [
    "Treating the under-performer list as a set of copywriting failures rather than as candidates to test.",
    "Ranking the worklist by gap size and filling it with tiny-impression rows, that is what the impact figure is for."
  ],
  "notSameAs": [],
  "related": [
    "actual-ctr",
    "expected-ctr",
    "ctr-impact"
  ],
  "workflows": [],
  "lastVerified": "2026-08-04"
}