skip to content

Conversion per visitor rose but conversion per session fell in the same A/B test — why?

level: seniorimportance: must knowfreq 54%

answer

  1. same numerator, different denominators
  2. one denominator is an outcome
  3. divide by visits per visitor
  4. check sessions per visitor first
  5. sessionisation rules can fake it

basics

~20 s

The treatment almost certainly increased sessions per visitor. Sessions are an outcome, not a fixed denominator, so extra sessions dilute the per-session rate even while more visitors convert. Report the per-visitor number as primary and sessions per visitor beside it.

solid answer

~50 s

The two metrics share a numerator and differ only in what sits underneath, and the per-session denominator is itself affected by the treatment. The identity makes it explicit: `conversions/sessions = (conversions/visitors) / (sessions/visitors)`. If conversions per visitor rise 3% while sessions per visitor rise 6%, the per-session rate falls by about 3%, with no contradiction anywhere. Randomisation on visitors fixes the visitor counts, so the per-visitor metric is a clean contrast; it does not fix session counts, so the per-session metric compares populations of sessions that the treatment itself reshaped. The diagnosis is to pull up sessions per visitor immediately — that single number usually explains the whole pattern. Then decide by question: for "does the change help users convert", report per visitor; per session is a driver metric worth watching, but a fall in it is a statement about visit intensity, not evidence that the change hurt users.

go deeper

for a junior

Know that per-visitor and per-session conversion are two different metrics, not two views of one, and that they can move in opposite directions without either being wrong.

for a middle

Be able to write the relationship out: per-session equals per-visitor divided by sessions per visitor, and show with numbers how a 3% rise against a 6% rise produces a fall.

for a senior

Demonstrate the diagnostic reflex — pull sessions per visitor, then rule out sessionisation artefacts such as redirects and timeout splits before telling any behavioural story about the result.

for a principal

Own the reporting standard that prevents the argument recurring: which denominator is the decision metric, when a per-visit efficiency drop is a real cost worth vetoing a launch, and how to stop teams choosing denominators after seeing results.

## The arithmetic first Both metrics count the same conversions. Write them over the same visitor base: ``` conversions / sessions = (conversions / visitors) / (sessions / visitors) ``` So the per-session rate is the per-visitor rate divided by visits per visitor. Any treatment that raises visits per visitor faster than it raises conversions per visitor pushes the per-session rate down. A worked case. Control: 10.0% conversion per visitor, 2.00 sessions per visitor, so 0.100 / 2.00 = 5.00% per session. Treatment: 10.3% per visitor (+3%), 2.12 sessions per visitor (+6%), so 0.103 / 2.12 = 4.86% per session, a fall of about 2.8%. More visitors converted, and each individual visit converted less often, and both statements are true simultaneously. ## Why the denominators are not equally trustworthy When assignment happens at the visitor level, the number of visitors in each arm is fixed by the randomiser. Nothing a user does after exposure changes which arm they are in or that they contribute exactly one to the denominator. That is what makes a per-visitor rate a clean causal contrast: the denominator is a design fact. Sessions are different. A session is created by behaviour — the user comes back, or is away long enough for a timeout to close one session and open another. The treatment can change how many sessions each user generates. So the per-session denominator is a *post-treatment* quantity, and comparing rates over it compares two differently-composed populations of visits. If the treatment brings back marginal users for one extra short visit, those extra visits are mostly non-converting by nature, and they land only in the treatment arm's denominator. This is why the per-visitor metric is the defensible headline and the per-session metric is a diagnostic. It is not that per-session numbers are meaningless — visit efficiency is a real thing a product team may care about — but a per-session movement in an experiment cannot be read as "the change made visits worse" without first ruling out that the change simply added visits. ## The instrumentation trap Before accepting any behavioural story, check whether the treatment changed what counts as a session. Sessionisation is a definitional rule, usually something like "a gap of 30 minutes of inactivity ends a session", sometimes combined with a rule about a new referrer or a new day boundary. Any of these can be tripped by the treatment without user behaviour changing at all: - A variant that adds a full-page redirect or a hard reload may be logged as a new session start. - A variant that changes how long users linger between actions may push some visits over the inactivity threshold, splitting one visit into two. - A variant on a different subdomain or with a different tagging setup may reset the session identifier. In each case the treatment arm records more sessions with the same underlying user behaviour, and the per-session rate falls purely as an artefact. The check is cheap: compare sessions per visitor, median session length, and the distribution of inter-event gaps between arms. If the extra sessions are unusually short and start immediately after a previous session ended, suspect sessionisation, not behaviour. ## How to report it The reporting pattern that avoids arguments: 1. **Headline**: conversions per exposed visitor, with its uncertainty. This is the metric whose denominator randomisation controls. 2. **Alongside**: sessions per exposed visitor, explicitly labelled as an outcome, so the reader can see the denominator moved. 3. **Diagnostic**: conversions per session, described as a per-visit efficiency read, with a note that its denominator is affected by the treatment. With those three numbers on the page, the pattern in this question reads as a coherent story rather than a contradiction: the change brought people back more often, each visit is a little less loaded, and the net effect on people converting is positive. ## What decision follows If the per-visitor metric is up and the per-session metric is down solely because visits went up, the change is usually good and the per-session drop is a cost-of-success artefact — unless visits themselves are expensive. If serving visits carries real cost (infrastructure, support contacts, ad inventory dilution), the per-session drop is a genuine efficiency signal that belongs in the decision, but it is an economics argument, not evidence the user experience got worse. The failure mode to avoid is picking whichever denominator makes the result look better after seeing both. Fix the primary denominator before launch, and treat the other as explanation.

  • Which of the two should be the reported result, and how do you justify the choice?
    Conversions per exposed visitor, because randomisation fixes the visitor denominator and the treatment cannot move it. The per-session number belongs in the report as a diagnostic, printed next to sessions per visitor so a reader can see immediately whether the denominator moved. Choosing between them after seeing which looks better is result-shopping, so fix the primary before launch.
  • Could this pattern appear with no change in user behaviour at all?
    Yes. If the variant triggers a reload, a redirect, a subdomain change or longer idle gaps, the sessionisation rule can split one visit into two. The treatment arm then logs more sessions for identical behaviour and the per-session rate falls mechanically. Look for extra sessions that are unusually short and start right after another ended before believing any behavioural story.
  • The per-visitor metric is flat and the per-session metric is up. How do you read that?
    Most likely the treatment reduced visits per visitor — people accomplished the same thing in fewer trips. Each visit looks more efficient while the same share of people converted overall. Whether that is good depends on whether repeat visits are a cost or a value: fewer visits with equal conversion is usually positive, but check that the lost visits were not carrying other value.

A restaurant serving more meals to the same regulars can see total meals per customer rise while meals per visit falls, simply because the regulars now drop in more often for lighter visits.

saying these in an interview costs you the question

  • Calls the two results contradictory and assumes a bug
  • Picks whichever denominator makes the result look better
  • Reads a per-session drop as proof the experience got worse
  • Never checks sessions per visitor
  • Treats session counts as fixed by the randomisation

context