Mapping a customer journey with a Sankey diagram
Funnels flatten a customer journey into a single narrowing shape, which hides the interesting part: people do not just drop off, they drop off from somewhere to somewhere. A Sankey keeps both halves visible.
Start with channels, not totals
The leftmost column should be acquisition sources: organic, paid, referral, outbound. If every channel merges into one Signups node too early, you lose the ability to see that paid traffic activates at half the rate of referrals.
Draw drop-off as a destination
The mistake teams make is letting users vanish between stages. Give churn a node. A ribbon labelled Churned at trial with a width you cannot ignore does more for prioritisation than any percentage in a dashboard.
Keep the stages to four or five
Visit, signup, activation, paid, retained is enough for almost every product. Sub-steps belong in a second chart, not in the one you show the whole company.
Use the same period for every ribbon
Cohort mixing is the classic error here: acquisition counted for the month, retention counted for the year. Pick one window, state it in the title, and keep every number inside it.
- Nodes: channels, then stages, then outcomes.
- Green for progression, red for churn, neutral for the funnel trunk.
- One period, stated in the title.
- Absolute users, not percentages — the widths already give you the ratio.
Once it exists, the chart becomes a monthly ritual: same layout, new numbers, and the ribbons that changed width are your agenda.
Frequently asked
Is a Sankey better than a funnel chart for user journeys?
Whenever users can take more than one path, yes. A funnel assumes a single sequence, so it cannot show that referral users skip a step or that churned users came mostly from one channel.
What data do I need to build one?
Counts of users at each stage, split by the previous stage. Any product analytics export with a stage column and a source column is enough.