{
  "slug": "paid-ctr",
  "name": "Paid click-through rate",
  "aliases": [
    "Ad CTR"
  ],
  "definition": "The share of ad impressions that produced a click.",
  "category": "Paid search",
  "type": "rate",
  "unit": "percent (0 to 100)",
  "direction": "higher-better",
  "verification": "verified",
  "calculation": "Paid clicks divided by paid impressions, multiplied by 100 and rounded to one decimal place, with a null guard on the denominator and nulls read as zero: `nvl(ROUND(100.0 * clicks / NULLIF(impressions, 0), 1), 0)`.",
  "numerator": "Paid clicks over the period",
  "denominator": "Paid impressions over the period",
  "aggregation": "A ratio of two sums, recomputed at the queried grain. Averaging per-campaign rates does not reproduce the account rate.",
  "grain": "One number per date range, or one row per group_by value.",
  "dimensions": [
    "keyword",
    "campaign_keyword",
    "page",
    "adgroup_name",
    "campaign_name",
    "campaign_type",
    "intent",
    "category",
    "country",
    "device"
  ],
  "requiredFilters": [
    "date_range"
  ],
  "sources": [
    "google-ads"
  ],
  "reports": [
    "paid-search-performance-report"
  ],
  "skills": [
    "paid-efficiency-review"
  ],
  "verbs": [
    "paid_search_overview"
  ],
  "rungs": [
    "R2"
  ],
  "levers": [
    "L8"
  ],
  "questions": [
    "What is our paid CTR by campaign?",
    "Are our ad creatives earning clicks?"
  ],
  "interpretation": "How well the ad earns the click it was shown for. It is stored on a 0 to 100 scale and rounded to one decimal place, so very small rates flatten, read low-volume rows from the underlying click and impression counts instead.",
  "caveats": [
    "Stored already as a percent, not as a fraction; a consumer that multiplies by 100 again will report a rate a hundred times too high.",
    "Rounded to one decimal place in the semantic layer, so sub-0.05% rates report as 0.0.",
    "A null denominator resolves to 0 rather than to no-value, so a zero can mean either no clicks or no impressions.",
    "Paid CTR and organic CTR are different surfaces and are not comparable as like for like."
  ],
  "freshness": "~1 day behind, Ads reporting settles overnight; same-day spend is provisional.",
  "failureModes": [
    "Treating a rounded 0.0 as no clicks.",
    "Re-scaling an already-percent value."
  ],
  "notSameAs": [
    {
      "slug": "search-impression-share",
      "why": "CTR measures what happened after the ad was shown; impression share measures how often it was shown at all."
    }
  ],
  "related": [
    "paid-clicks",
    "paid-impressions"
  ],
  "workflows": [],
  "lastVerified": "2026-08-04"
}