{
  "slug": "average-session-duration",
  "name": "Average session duration",
  "aliases": [
    "Avg session length"
  ],
  "definition": "The average length of a visit in the period, as recorded by your web-analytics source.",
  "category": "Web analytics and conversions",
  "type": "raw measure",
  "unit": "seconds (inferred from the field name, not declared in the semantic layer)",
  "direction": "higher-better",
  "verification": "inferred",
  "aggregation": "An average of a per-row session-duration column supplied by the analytics export, with nulls read as zero. Unweighted, so low-traffic rows count as much as high-traffic ones.",
  "grain": "One number per date range, or one row per breakdown value.",
  "dimensions": [
    "country",
    "device",
    "page",
    "keyword",
    "source_medium",
    "intent",
    "category"
  ],
  "requiredFilters": [
    "date_range"
  ],
  "sources": [
    "web-analytics"
  ],
  "reports": [],
  "skills": [
    "search-to-revenue"
  ],
  "verbs": [
    "web_analytics_overview"
  ],
  "rungs": [
    "R5"
  ],
  "levers": [],
  "questions": [
    "How long do visits last?",
    "Session duration by device?"
  ],
  "interpretation": "An engagement signal rather than an outcome. It is one of the two measures the engagement shorthand expands to, so it appears in default responses alongside bounce rate. Treat movement in it as a prompt to look at behaviour, not as a result in itself.",
  "caveats": [
    "The unit is not declared anywhere in the semantic layer; seconds is inferred from the field name and the way the shared format contract classifies duration fields. Do not present the unit as established.",
    "The measure's own label in the semantic layer reads \"Average Sessions\", which is a mislabel, it is a duration, not a session count.",
    "An unweighted average of a per-row column; nulls are read as zero, so a zero can mean no engagement or no data.",
    "Whole-domain only today."
  ],
  "freshness": "loads nightly, a same-day question gets yesterday's number, labelled as yesterday's.",
  "failureModes": [
    "Reading the mislabelled measure name and reporting a session count.",
    "Stating the unit as seconds without the caveat."
  ],
  "notSameAs": [
    {
      "slug": "average-time-on-page",
      "why": "One averages the length of a whole visit, the other averages time on a single page. They come from different columns and answer different questions."
    },
    {
      "slug": "bounce-rate",
      "why": "Both are surfaced together under the engagement shorthand, but one is a rate over visits and one is a duration. They move independently and are reported as separate columns.",
      "mirroredFrom": "bounce-rate"
    }
  ],
  "related": [
    "average-time-on-page",
    "bounce-rate",
    "sessions"
  ],
  "workflows": [],
  "lastVerified": "2026-08-04"
}