twoHelixestwoHelixes Start free

Datasets / E-commerce funnel

The acquisition funnel, all channels

Each stage is a share of the one before it, so the drop from signup to trial dominates the drop the revenue team talks about.

Question funnel chart of visitors signups trials and purchases
Visitors to purchases01M2M3Mvisitorssignupstrials_startedpurchasesPeople
E-commerce funnel — 4 rows charted from 120, drawn as a hbar
How it decided
Finding the data113 ms

E-commerce funnel: 120 rows, 11 columns. the four stage columns, summed across cohorts.

Shaping the data12 ms

120 rows in, 4 out across 2 columns. Each stage is a share of the one before it, so the drop from signup to trial dominates the drop the revenue team talks about.

Choosing the chart6 ms

hbar. Stages of one funnel only ever shrink; drawn as ranked bars in funnel order so the collapse from visitors to purchases is the whole shape.

Applying defaults1 ms

Palette, spacing, axis titles and legend placement applied. 0 issues found.

The transformation

This is the code, not a description of it — the chart above was drawn from what it returns, and the notebook download runs the same lines against the same file.

stages = ["visitors", "signups", "trials_started", "purchases"]
result = df[stages].sum().rename("people").reset_index()
result = result.rename(columns={"index": "stage"})
result["stage"] = pd.Categorical(
    result["stage"], categories=stages, ordered=True
).astype(str)

What it charted

4 rows out of 120, 2 columns. First 4 shown.

stagepeople
visitors3238800
signups242354
trials_started98814
purchases27743