GA4 engagement time: choose the right denominator

At a glance

Recorded engagement time describes a page in browser focus or an app in the foreground. It does not directly measure attention, understanding or satisfaction.

Empty intelligence archive with dossiers and maps Illustration · fictional scene
In this article

Fictional example: 60 seconds or 40 seconds

In one scope, 6000 seconds of engagement are recorded for 100 active users and 150 sessions. Average per active user is 60 seconds; average per session is 40 seconds. Labels and denominators must accompany the number.

Fictional measureValueDenominator or unit
Total recorded time6000Seconds.
Active users100Across the whole period.
Sessions150Same measurement scope.
Average per active user606000 / 100, in seconds.
Average per session406000 / 150, in seconds.

Avoid misleading comparisons

  • Separate engagement time, elapsed time and session counts. A focused tab does not establish that a person is reading or understanding.
  • Do not simply average daily averages: users may return on several days. Recalculate using totals and the correct denominator for the whole period.
  • Document collection, filters, devices and task context. Check missing data before interpreting zero or very short time.

Improve the task rather than prolonging the wait

Less time finding practical information can mean a better answer; more time completing a process can signal difficulty. Combine time, completion, errors and user research. Do not add artificial steps or interactions to raise an average.

Primary references

Missing data: distinguish absence, zero and estimation

Prevent silent replacement of absent values from changing the meaning of metrics.

  • Cause and handling rule
  • Population, count and units
  • Method, version and sensitivity

Acceptance case to reproduce

Fictional example: these inputs describe no customer or observed result.

View case inputs
{
    "values": [
        10,
        null,
        0
    ],
    "observed_count": 2,
    "mean_observed": 5,
    "mean_if_missing_replaced_with_zero": 3.3333333333,
    "extended_sample": {
        "values": [
            10,
            null,
            0,
            20,
            null,
            30
        ],
        "known_count": 4,
        "expected_count": 6,
        "known_sum": 60,
        "mean_observed": 15,
        "mean_after_zero_fill": 10
    },
    "missing_only_sample": {
        "values": [
            null,
            null
        ],
        "known_count": 0,
        "mean_observed": null
    }
}

Expected decision

The observed-value mean is 5. Replacing missing data with zero changes the population and result.

Same data, two means: show the rule

Fictional data: [10, missing, 0, 20, missing, 30]. Four known values out of six expected observations; known sum: 60. The existing zero is an observed value.

TreatmentMean calculationInterpretation
Known values only60 ÷ 4 = 15The mean describes four known values. It does not establish that the two missing values would have the same distribution.
Missing values replaced with zero60 ÷ 6 = 10Two zeros were added by a rule, not observed. This mean answers a different question; justify the rule before comparing results.
Separate sample: [missing, missing]Not calculableNo known values: show an unavailable state. A mean of zero would imply an observation that does not exist.

Verification procedure

  1. Separate missing, zero and estimated values.
  2. Calculate means before and after excluding missing values.
  3. Keep counts and per-variable handling rules. Also test a group containing only missing values and check that it is not presented as a measured zero without an explicit rule.

pandas — Working with missing data

Should missing values become zero?

Only when the business definition establishes that absence actually means zero. Otherwise the result changes meaning.

Primary reference: pandas — Working with missing data. Related method: read the practical guide.